summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-07-06 23:40:35 +0000
committerGerrit Code Review <review@openstack.org>2015-07-06 23:40:35 +0000
commit4e7c4ed250a2c586f817c84fa47f5ed975a4b2c8 (patch)
tree2aa1f8191962b1b0b82b205548a69cfdaeef8597
parentf0ad77c0600af0558434cfc795f16acbf5dc4ad8 (diff)
parentd597d3dd13678175d4f1da9ea96d5855941bf14e (diff)
downloadkeystonemiddleware-4e7c4ed250a2c586f817c84fa47f5ed975a4b2c8.tar.gz
Merge "Don't allow webob to set a default content type"2.1.0
-rw-r--r--keystonemiddleware/auth_token/_request.py9
-rw-r--r--keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py23
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):