Convert dict headers and Webob headers into lowercase.
In the fold_headers function, if the headers behaves like a dict, they were being retured unchanged. This would cause issues in the later processing to extract the microversion header, which matches on lower case strings. Convert these headers to lowercase also provide a test case to validate the header is being parsed correctly. Change-Id: I8501c813d668c0a32905906e4ef3f8c6c6b12de2 Close-Bug:# 1606351
This commit is contained in:
parent
c031779d58
commit
1f6eac7c3d
@ -90,8 +90,7 @@ def fold_headers(headers):
|
||||
# If it behaves like a dict, return it. Webob uses objects which
|
||||
# are not dicts, but behave like them.
|
||||
if hasattr(headers, 'keys'):
|
||||
# TODO(cdent): canonicalize? (i.e. in lower())
|
||||
return headers
|
||||
return dict((k.lower(), v) for k, v in headers.items())
|
||||
header_dict = collections.defaultdict(list)
|
||||
for header, value in headers:
|
||||
header_dict[header.lower()].append(value.strip())
|
||||
|
@ -216,3 +216,12 @@ class TestGetHeaders(testtools.TestCase):
|
||||
headers, service_type='compute',
|
||||
legacy_headers=['x-openstack-nova-api-version'])
|
||||
self.assertEqual('2.0', version)
|
||||
|
||||
def test_capitalized_headers(self):
|
||||
headers = {
|
||||
'X-Openstack-Ironic-Api-Version': '123.456'
|
||||
}
|
||||
version = microversion_parse.get_version(
|
||||
headers, service_type='ironic',
|
||||
legacy_headers=['X-Openstack-Ironic-Api-Version'])
|
||||
self.assertEqual('123.456', version)
|
||||
|
@ -30,7 +30,8 @@ class TestWebobHeaders(testtools.TestCase):
|
||||
|
||||
folded_headers = microversion_parse.fold_headers(headers)
|
||||
self.assertEqual(3, len(folded_headers))
|
||||
self.assertEqual(set(headers.keys()), set(folded_headers.keys()))
|
||||
self.assertEqual(set(['header-one', 'header-three', 'header-two']),
|
||||
set(folded_headers.keys()))
|
||||
self.assertEqual('gamma', folded_headers['header-three'])
|
||||
|
||||
def test_simple_match(self):
|
||||
|
Loading…
Reference in New Issue
Block a user