Skip to content

Commit dd25d11

Browse files
fix(16-fix-none-header-value): header bearing none value should be none (#17)
This commit bears a fix for local headers containing None values which are being converted into string values while merging. Now conversion will take place when the value is not None while merging the local and global headers. closes #16
1 parent 2ea9588 commit dd25d11

3 files changed

Lines changed: 23 additions & 4 deletions

File tree

apimatic_core/request_builder.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,8 @@ def process_request_headers(self, global_configuration):
165165
self._endpoint_logger.info('Preparing headers for {}.'.format(self._endpoint_name_for_logging))
166166

167167
if global_headers:
168-
prepared_headers = {key: str(value) for key, value in self._header_params.items()}
168+
prepared_headers = {key: str(value) if value is not None else value
169+
for key, value in self._header_params.items()}
169170
request_headers = {**global_headers, **prepared_headers}
170171

171172
if additional_headers:

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
setup(
1414
name='apimatic-core',
15-
version='0.1.1',
15+
version='0.1.2',
1616
description='A library that contains core logic and utilities for '
1717
'consuming REST APIs using Python SDKs generated by APIMatic.',
1818
long_description=long_description,

tests/apimatic_core/request_builder_tests/test_request_builder.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,14 +231,32 @@ def test_additional_headers(self, input_additional_header_param_value, expected_
231231
.additional_header('header_param', input_additional_header_param_value))
232232
assert http_request.headers == expected_additional_header_param_value
233233

234+
@pytest.mark.parametrize('input_global_header_param_value,'
235+
'input_local_header_param_value,'
236+
'expected_header_param_value', [
237+
('global_string', None, {'header_param': None}),
238+
('global_string', 'local_string', {'header_param': 'local_string'})
239+
])
240+
def test_local_and_global_headers_precedence(self, input_global_header_param_value, input_local_header_param_value,
241+
expected_header_param_value):
242+
global_headers = {'header_param': input_global_header_param_value}
243+
http_request = self.new_request_builder \
244+
.header_param(Parameter()
245+
.key('header_param')
246+
.value(input_local_header_param_value)) \
247+
.build(self.global_configuration.global_headers(global_headers))
248+
assert http_request.headers == expected_header_param_value
249+
234250
@pytest.mark.parametrize('input_global_header_param_value,'
235251
'input_local_header_param_value,'
236252
'input_additional_header_param_value,'
237253
'expected_header_param_value', [
238254
('global_string', 'local_string', 'additional_string',
239-
{'header_param': 'additional_string'})
255+
{'header_param': 'additional_string'}),
256+
('global_string', 'local_string', None,
257+
{'header_param': None})
240258
])
241-
def test_headers_precedence(self, input_global_header_param_value, input_local_header_param_value,
259+
def test_all_headers_precedence(self, input_global_header_param_value, input_local_header_param_value,
242260
input_additional_header_param_value, expected_header_param_value):
243261
global_headers = {'header_param': input_global_header_param_value}
244262
additional_headers = {'header_param': input_additional_header_param_value}

0 commit comments

Comments
 (0)