diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-07-06 23:40:35 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-07-06 23:40:35 +0000 |
commit | 4e7c4ed250a2c586f817c84fa47f5ed975a4b2c8 (patch) | |
tree | 2aa1f8191962b1b0b82b205548a69cfdaeef8597 | |
parent | f0ad77c0600af0558434cfc795f16acbf5dc4ad8 (diff) | |
parent | d597d3dd13678175d4f1da9ea96d5855941bf14e (diff) | |
download | keystonemiddleware-4e7c4ed250a2c586f817c84fa47f5ed975a4b2c8.tar.gz |
Merge "Don't allow webob to set a default content type"2.1.0
-rw-r--r-- | keystonemiddleware/auth_token/_request.py | 9 | ||||
-rw-r--r-- | keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py | 23 |
2 files changed, 32 insertions, 0 deletions
diff --git a/keystonemiddleware/auth_token/_request.py b/keystonemiddleware/auth_token/_request.py index 8240e44..72fd538 100644 --- a/keystonemiddleware/auth_token/_request.py +++ b/keystonemiddleware/auth_token/_request.py @@ -53,8 +53,17 @@ def _v3_to_v2_catalog(catalog): return v2_services +# NOTE(jamielennox): this should probably be moved into its own file, but at +# the moment there's no real logic here so just keep it locally. +class _AuthTokenResponse(webob.Response): + + default_content_type = None # prevents webob assigning a content type + + class _AuthTokenRequest(webob.Request): + ResponseClass = _AuthTokenResponse + _HEADER_TEMPLATE = { 'X%s-Domain-Id': 'domain_id', 'X%s-Domain-Name': 'domain_name', diff --git a/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py b/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py index dba6997..c2986fa 100644 --- a/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py +++ b/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py @@ -1326,6 +1326,29 @@ class CommonAuthTokenMiddlewareTest(object): self.assertFalse(token_auth.has_service_token) self.assertIsNone(token_auth.service) + def test_doesnt_auto_set_content_type(self): + # webob will set content_type = 'text/html' by default if nothing is + # provided. We don't want our middleware messing with the content type + # of the underlying applications. + + text = uuid.uuid4().hex + + def _middleware(environ, start_response): + start_response(200, []) + return text + + def _start_response(status_code, headerlist, exc_info=None): + self.assertIn('200', status_code) # will be '200 OK' + self.assertEqual([], headerlist) + + m = auth_token.AuthProtocol(_middleware, self.conf) + + env = {'REQUEST_METHOD': 'GET', + 'HTTP_X_AUTH_TOKEN': self.token_dict['uuid_token_default']} + + r = m(env, _start_response) + self.assertEqual(text, r) + class V2CertDownloadMiddlewareTest(BaseAuthTokenMiddlewareTest, testresources.ResourcedTestCase): |