Add timeout and allow_retries to RequestProxy

This information is available via the connection but not on the request
object. Make it available for testing as well.

Closes-Bug: #1565576
Co-Authored-By: Nikolay Martynov <mar.kolya@gmail.com>
Change-Id: I3bfb84472e223421dcdaa04161460e1cbfba352a
This commit is contained in:
Jamie Lennox 2016-04-01 10:27:30 +11:00
parent 28bfbe23ad
commit 459e13cb24
2 changed files with 34 additions and 2 deletions

View File

@ -31,11 +31,13 @@ class _RequestObjectProxy(object):
the request_history users will be able to access these properties.
"""
def __init__(self, request):
def __init__(self, request, **kwargs):
self._request = request
self._matcher = None
self._url_parts_ = None
self._qs = None
self._timeout = kwargs.pop('timeout', None)
self._allow_redirects = kwargs.pop('allow_redirects', None)
def __getattr__(self, name):
return getattr(self._request, name)
@ -70,6 +72,14 @@ class _RequestObjectProxy(object):
return self._qs
@property
def timeout(self):
return self._timeout
@property
def allow_redirects(self):
return self._allow_redirects
@classmethod
def _create(cls, *args, **kwargs):
return cls(requests.Request(*args, **kwargs).prepare())
@ -237,7 +247,7 @@ class Adapter(BaseAdapter, _RequestHistoryTracker):
self._matchers = []
def send(self, request, **kwargs):
request = _RequestObjectProxy(request)
request = _RequestObjectProxy(request, **kwargs)
self._add_to_history(request)
for matcher in reversed(self._matchers):

View File

@ -576,3 +576,25 @@ class SessionAdapterTests(base.TestCase):
self.assertEqual('apple', resp.cookies['sugar'])
self.assertEqual(set(['/foo', '/bar']), set(resp.cookies.list_paths()))
self.assertEqual(['.example.com'], resp.cookies.list_domains())
def test_allow_redirects(self):
data = 'testdata'
self.adapter.register_uri('GET', self.url, text=data, status_code=300)
resp = self.session.get(self.url, allow_redirects=False)
self.assertEqual('GET', self.adapter.last_request.method)
self.assertEqual(300, resp.status_code)
self.assertEqual(data, resp.text)
self.assertFalse(self.adapter.last_request.allow_redirects)
def test_timeout(self):
data = 'testdata'
timeout = 300
self.adapter.register_uri('GET', self.url, text=data)
resp = self.session.get(self.url, timeout=timeout)
self.assertEqual('GET', self.adapter.last_request.method)
self.assertEqual(200, resp.status_code)
self.assertEqual(data, resp.text)
self.assertEqual(timeout, self.adapter.last_request.timeout)