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:
parent
28bfbe23ad
commit
459e13cb24
@ -31,11 +31,13 @@ class _RequestObjectProxy(object):
|
|||||||
the request_history users will be able to access these properties.
|
the request_history users will be able to access these properties.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, request):
|
def __init__(self, request, **kwargs):
|
||||||
self._request = request
|
self._request = request
|
||||||
self._matcher = None
|
self._matcher = None
|
||||||
self._url_parts_ = None
|
self._url_parts_ = None
|
||||||
self._qs = None
|
self._qs = None
|
||||||
|
self._timeout = kwargs.pop('timeout', None)
|
||||||
|
self._allow_redirects = kwargs.pop('allow_redirects', None)
|
||||||
|
|
||||||
def __getattr__(self, name):
|
def __getattr__(self, name):
|
||||||
return getattr(self._request, name)
|
return getattr(self._request, name)
|
||||||
@ -70,6 +72,14 @@ class _RequestObjectProxy(object):
|
|||||||
|
|
||||||
return self._qs
|
return self._qs
|
||||||
|
|
||||||
|
@property
|
||||||
|
def timeout(self):
|
||||||
|
return self._timeout
|
||||||
|
|
||||||
|
@property
|
||||||
|
def allow_redirects(self):
|
||||||
|
return self._allow_redirects
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _create(cls, *args, **kwargs):
|
def _create(cls, *args, **kwargs):
|
||||||
return cls(requests.Request(*args, **kwargs).prepare())
|
return cls(requests.Request(*args, **kwargs).prepare())
|
||||||
@ -237,7 +247,7 @@ class Adapter(BaseAdapter, _RequestHistoryTracker):
|
|||||||
self._matchers = []
|
self._matchers = []
|
||||||
|
|
||||||
def send(self, request, **kwargs):
|
def send(self, request, **kwargs):
|
||||||
request = _RequestObjectProxy(request)
|
request = _RequestObjectProxy(request, **kwargs)
|
||||||
self._add_to_history(request)
|
self._add_to_history(request)
|
||||||
|
|
||||||
for matcher in reversed(self._matchers):
|
for matcher in reversed(self._matchers):
|
||||||
|
@ -576,3 +576,25 @@ class SessionAdapterTests(base.TestCase):
|
|||||||
self.assertEqual('apple', resp.cookies['sugar'])
|
self.assertEqual('apple', resp.cookies['sugar'])
|
||||||
self.assertEqual(set(['/foo', '/bar']), set(resp.cookies.list_paths()))
|
self.assertEqual(set(['/foo', '/bar']), set(resp.cookies.list_paths()))
|
||||||
self.assertEqual(['.example.com'], resp.cookies.list_domains())
|
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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user