diff --git a/webservice/components/request_adapter.py b/webservice/components/request_adapter.py index 05112fcf..d1e57bd8 100644 --- a/webservice/components/request_adapter.py +++ b/webservice/components/request_adapter.py @@ -179,6 +179,7 @@ def _fetch_new_token(self, old_token): def _request(self, method, url=None, url_params=None, **kwargs): url = self._get_url(url=url, url_params=url_params) + content_only = kwargs.pop("content_only", True) new_kwargs = kwargs.copy() new_kwargs.update( { @@ -191,7 +192,9 @@ def _request(self, method, url=None, url_params=None, **kwargs): # pylint: disable=E8106 request = session.request(method, url, **new_kwargs) request.raise_for_status() - return request.content + if content_only: + return request.content + return request class WebApplicationOAuth2RestRequestsAdapter(Component): diff --git a/webservice/tests/test_oauth2.py b/webservice/tests/test_oauth2.py index 15c53938..49be4f1c 100644 --- a/webservice/tests/test_oauth2.py +++ b/webservice/tests/test_oauth2.py @@ -148,6 +148,33 @@ def test_update_token_with_error(self): "old_token", ) + @responses.activate + def test_call_with_content_only_false_returns_response(self): + now = time.time() + duration = 3600 + responses.add( + responses.POST, + f"{self.url}oauth2/token", + json={ + "access_token": "cool_token", + "token_type": "Bearer", + "expires_in": duration, + "expires_at": now + duration, + }, + ) + responses.add(responses.POST, f"{self.url}endpoint", json={"ok": True}) + + with mock_cursor(self.env.cr): + response = self.webservice.call( + "post", + url=f"{self.url}endpoint", + data="payload", + content_only=False, + ) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.json(), {"ok": True}) + class TestWebServiceOauth2WebApplication(CommonWebService): @classmethod