From cf17bf33d9bb3cc16ffe6102e2ad3d58dda38d82 Mon Sep 17 00:00:00 2001 From: Erika-Dsouza Date: Tue, 20 Nov 2018 15:58:26 -0500 Subject: [PATCH] fix(response): handle deserialization of empty responses --- test/unit/test_watson_service.py | 13 +++++++++++++ watson_developer_cloud/watson_service.py | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/test/unit/test_watson_service.py b/test/unit/test_watson_service.py index 29b205671..352ed7d47 100755 --- a/test/unit/test_watson_service.py +++ b/test/unit/test_watson_service.py @@ -191,3 +191,16 @@ def test_http_head(): assert len(responses.calls) == 1 assert response.headers is not None assert response.headers == expectedHeaders + +@responses.activate +def test_response_with_no_body(): + service = AnyServiceV1('2018-11-20', username='username', password='password') + responses.add(responses.GET, + service.default_url, + status=200, + body=None) + + response = service.any_service_call() + assert response is not None + assert len(responses.calls) == 1 + assert response.get_result() is None diff --git a/watson_developer_cloud/watson_service.py b/watson_developer_cloud/watson_service.py index d659c398a..e512a7617 100755 --- a/watson_developer_cloud/watson_service.py +++ b/watson_developer_cloud/watson_service.py @@ -467,7 +467,11 @@ def request(self, method, url, accept_json=False, headers=None, # There is no body content for a HEAD request or a 204 response return DetailedResponse(None, response.headers, response.status_code) if self.detailed_response else None if accept_json: - response_json = response.json() + try: + response_json = response.json() + except: + # deserialization fails because there is no text + return DetailedResponse(None, response.headers, response.status_code) if self.detailed_response else None if 'status' in response_json and response_json['status'] \ == 'ERROR': status_code = 400