From d9665465161e83afaefe16bba158fef4a83efede Mon Sep 17 00:00:00 2001 From: melanie witt Date: Wed, 16 Jun 2021 02:16:26 +0000 Subject: [PATCH] Add test coverage for API version headers in CORS This is a follow up to change Idf4650f36952331f02d7512580c21451f3ee3b63 that added the OpenStack-API-Version and X-OpenStack-Nova-API-Version headers to be allowed for CORS requests. Related-Bug: #1931908 Change-Id: Ib98d93f6f4d5ef5d5a637877025f1a7cfaef6bb4 --- nova/tests/functional/test_middleware.py | 28 ++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/nova/tests/functional/test_middleware.py b/nova/tests/functional/test_middleware.py index 556630919f15..3a4d8d64ef02 100644 --- a/nova/tests/functional/test_middleware.py +++ b/nova/tests/functional/test_middleware.py @@ -122,3 +122,31 @@ class TestCORSMiddleware(api_sample_base.ApiSampleTestBaseV21): self.assertEqual(response.status_code, self.exp_version_status) self.assertNotIn('Access-Control-Allow-Origin', response.headers) + + def test_api_version_request_headers(self): + # Verify allow_headers + headers = { + 'Origin': 'http://valid.example.com', + 'Access-Control-Request-Method': 'GET', + 'Access-Control-Request-Headers': + 'OpenStack-API-Version, X-OpenStack-Nova-API-Version' + } + response = self._do_options('', strip_version=True, headers=headers) + + self.assertEqual(response.status_code, 200) + self.assertIn('Access-Control-Allow-Headers', response.headers) + self.assertIn('OpenStack-API-Version', + response.headers['Access-Control-Allow-Headers']) + self.assertIn('X-OpenStack-Nova-API-Version', + response.headers['Access-Control-Allow-Headers']) + + # Verify expose_headers + headers = {'Origin': 'http://valid.example.com'} + response = self._do_get('', strip_version=True, headers=headers) + + self.assertEqual(response.status_code, self.exp_version_status) + self.assertIn('Access-Control-Expose-Headers', response.headers) + self.assertIn('OpenStack-API-Version', + response.headers['Access-Control-Expose-Headers']) + self.assertIn('X-OpenStack-Nova-API-Version', + response.headers['Access-Control-Expose-Headers'])