diff --git a/microversion_parse/__init__.py b/microversion_parse/__init__.py index f5ab455..cb3fe63 100644 --- a/microversion_parse/__init__.py +++ b/microversion_parse/__init__.py @@ -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()) diff --git a/microversion_parse/tests/test_get_version.py b/microversion_parse/tests/test_get_version.py index bc87362..fa16681 100644 --- a/microversion_parse/tests/test_get_version.py +++ b/microversion_parse/tests/test_get_version.py @@ -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) diff --git a/microversion_parse/tests/test_webob.py b/microversion_parse/tests/test_webob.py index ce0b58e..a2e36c8 100644 --- a/microversion_parse/tests/test_webob.py +++ b/microversion_parse/tests/test_webob.py @@ -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):