From 67e90eea558873c328c611addf1a7f7a0556b839 Mon Sep 17 00:00:00 2001 From: Emmanuel Cazenave Date: Tue, 30 Oct 2018 11:12:51 +0100 Subject: [PATCH] utils: allow cookies usage on requests (#27654) --- passerelle/utils/__init__.py | 5 +++-- tests/test_requests.py | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/passerelle/utils/__init__.py b/passerelle/utils/__init__.py index 815fe79..1905290 100644 --- a/passerelle/utils/__init__.py +++ b/passerelle/utils/__init__.py @@ -214,8 +214,9 @@ class Request(RequestSession): if 'timeout' not in kwargs: kwargs['timeout'] = settings.REQUESTS_TIMEOUT - # don't use persistent cookies - self.cookies.clear() + keep_cookies = getattr(self.resource, 'keep_cookies', False) + if not keep_cookies: + self.cookies.clear() response = super(Request, self).request(method, url, **kwargs) diff --git a/tests/test_requests.py b/tests/test_requests.py index 60bba9c..c5a2922 100644 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -327,3 +327,20 @@ def test_timeout(mocked_get, caplog, endpoint_response): assert mocked_get.call_args[1]['timeout'] == 42 Request(logger=logger).get('http://example.net/whatever', timeout=None) assert mocked_get.call_args[1]['timeout'] is None + + +@mock.patch('passerelle.utils.RequestSession.request') +def test_requests_cookies(mocked_get, caplog): + resource = MockResource() + logger = logging.getLogger('requests') + request = Request(resource=resource, logger=logger) + request.cookies = mock.Mock() + + # by default cookies are cleared + request.get('http://some.example.org/') + assert request.cookies.clear.call_count == 1 + + # if keep_cookies is set to True on the resource, no cookies clearing + resource.keep_cookies = True + request.get('http://some.example.org/') + assert request.cookies.clear.call_count == 1 -- 2.19.1