# Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. import testtools import microversion_parse class TestHeadersFromWSGIEnviron(testtools.TestCase): def test_empty_environ(self): self.assertEqual({}, microversion_parse.headers_from_wsgi_environ({})) def test_non_empty_no_headers(self): environ = {'PATH_INFO': '/foo/bar'} self.assertEqual( {}, microversion_parse.headers_from_wsgi_environ(environ) ) def test_headers(self): environ = { 'PATH_INFO': '/foo/bar', 'HTTP_OPENSTACK_API_VERSION': 'placement 2.1', 'HTTP_CONTENT_TYPE': 'application/json', } expected = { 'HTTP_OPENSTACK_API_VERSION': 'placement 2.1', 'HTTP_CONTENT_TYPE': 'application/json', } found_headers = microversion_parse.headers_from_wsgi_environ(environ) self.assertEqual(expected, found_headers) def test_get_version_from_environ(self): environ = { 'PATH_INFO': '/foo/bar', 'HTTP_OPENSTACK_API_VERSION': 'placement 2.1', 'HTTP_CONTENT_TYPE': 'application/json', } expected_version = '2.1' headers = microversion_parse.headers_from_wsgi_environ(environ) version = microversion_parse.get_version(headers, 'placement') self.assertEqual(expected_version, version) def test_get_version_from_environ_legacy(self): environ = { 'PATH_INFO': '/foo/bar', 'HTTP_X_OPENSTACK_PLACEMENT_API_VERSION': '2.1', 'HTTP_CONTENT_TYPE': 'application/json', } expected_version = '2.1' headers = microversion_parse.headers_from_wsgi_environ(environ) version = microversion_parse.get_version( headers, 'placement', legacy_headers=['x-openstack-placement-api-version'], ) self.assertEqual(expected_version, version)