Skip to content

Commit bc8a970

Browse files
authored
Merge pull request #598 from ricellis/head-response-no-body
fix(all services): Don't try to deserialize a body on HEAD requests
2 parents eaf31f7 + 2d59aea commit bc8a970

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

test/unit/test_watson_service.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ def any_service_call(self):
5252
response = self.request(method='GET', url='', accept_json=True)
5353
return response
5454

55+
def head_request(self):
56+
response = self.request(method='HEAD', url='', accept_json=True)
57+
return response
58+
5559
@responses.activate
5660
def test_url_encoding():
5761
service = AnyServiceV1('2017-07-07', username='username', password='password')
@@ -171,3 +175,19 @@ def test_disable_SSL_verification():
171175

172176
service1.disable_SSL_verification()
173177
assert service1.verify is False
178+
179+
@responses.activate
180+
def test_http_head():
181+
service = AnyServiceV1('2018-11-20', username='username', password='password')
182+
expectedHeaders = {'Test-Header1': 'value1', 'Test-Header2': 'value2'}
183+
responses.add(responses.HEAD,
184+
service.default_url,
185+
status=200,
186+
headers=expectedHeaders,
187+
content_type=None)
188+
189+
response = service.head_request()
190+
assert response is not None
191+
assert len(responses.calls) == 1
192+
assert response.headers is not None
193+
assert response.headers == expectedHeaders

watson_developer_cloud/watson_service.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,8 @@ def request(self, method, url, accept_json=False, headers=None,
463463
**kwargs)
464464

465465
if 200 <= response.status_code <= 299:
466-
if response.status_code == 204:
466+
if response.status_code == 204 or method == 'HEAD':
467+
# There is no body content for a HEAD request or a 204 response
467468
return DetailedResponse(None, response.headers, response.status_code) if self.detailed_response else None
468469
if accept_json:
469470
response_json = response.json()

0 commit comments

Comments
 (0)