Skip to content

Commit 0637028

Browse files
authored
Merge pull request #81 from Asana/fix-headers-tests
Fix headers in tests
2 parents 2443df5 + 75fc01a commit 0637028

2 files changed

Lines changed: 35 additions & 13 deletions

File tree

asana/client.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -138,9 +138,11 @@ def post(self, path, data, **options):
138138
'data': _merge(parameter_options, data),
139139
'options': self._parse_api_options(options)
140140
}
141-
return self.request(
142-
'post', path, data=body,
143-
headers={'content-type': 'application/json'}, **options)
141+
headers = _merge(
142+
{'content-type': 'application/json'},
143+
options.pop('headers', {})
144+
)
145+
return self.request('post', path, data=body, headers=headers, **options)
144146

145147
def put(self, path, data, **options):
146148
"""Parses PUT request options and dispatches a request."""
@@ -150,9 +152,11 @@ def put(self, path, data, **options):
150152
'data': _merge(parameter_options, data),
151153
'options': self._parse_api_options(options)
152154
}
153-
return self.request(
154-
'put', path, data=body,
155-
headers={'content-type': 'application/json'}, **options)
155+
headers = _merge(
156+
{'content-type': 'application/json'},
157+
options.pop('headers', {})
158+
)
159+
return self.request('put', path, data=body, headers=headers, **options)
156160

157161
def delete(self, path, data, **options):
158162
"""Dispatches a DELETE request."""

tests/test_client.py

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,40 @@ def test_version_header(self):
2121

2222
def test_default_headers(self):
2323
self.client.headers['key'] = 'value'
24-
responses.add(GET, 'http://app/users/me', status=200,
25-
body='{"data":{}}', adding_headers={'key': 'value'})
24+
responses.add(GET, 'http://app/users/me', status=200, body='{"data":{}}')
2625
self.client.users.me()
26+
self.assertLessEqual(
27+
set({'key': 'value'}.items()),
28+
set(responses.calls[0].request.headers.items())
29+
)
2730

2831
def test_request_headers(self):
29-
responses.add(GET, 'http://app/users/me', status=200,
30-
body='{"data":{}}', adding_headers={'key': 'value'})
32+
responses.add(GET, 'http://app/users/me', status=200, body='{"data":{}}')
3133
self.client.users.me(headers={'key': 'value'})
34+
self.assertLessEqual(
35+
set({'key': 'value'}.items()),
36+
set(responses.calls[0].request.headers.items())
37+
)
3238

3339
def test_overriding_headers(self):
3440
self.client.headers['key'] = 'value'
3541
self.client.headers['key2'] = 'value2'
36-
responses.add(GET, 'http://app/users/me', status=200,
37-
body='{"data":{}}',
38-
adding_headers={'key': 'value', 'key2': 'value3'})
42+
responses.add(GET, 'http://app/users/me', status=200, body='{"data":{}}')
3943
self.client.users.me(headers={'key2': 'value3'})
44+
self.assertLessEqual(
45+
set({'key': 'value', 'key2': 'value3'}.items()),
46+
set(responses.calls[0].request.headers.items())
47+
)
48+
49+
def test_content_type_headers(self):
50+
self.client.headers['key'] = 'value'
51+
responses.add(POST, 'http://app/tasks/123/addProject', status=200,
52+
body='{"data":{}}')
53+
self.client.tasks.add_project(123, project=456, headers={'key2': 'value2'})
54+
self.assertLessEqual(
55+
set({'content-type': 'application/json'}.items()),
56+
set(responses.calls[0].request.headers.items())
57+
)
4058

4159
def test_users_me_not_authorized(self):
4260
res = {

0 commit comments

Comments
 (0)