Fix keystone.common.wsgi to explicitly use bytes
The WSGI spec says that the body of a response needs to be bytes. This ensures that we are using bytes in both Python2 and Python3. bp python3 Change-Id: I40148c2e2e1e517358b64028d335ac27d17323a3
This commit is contained in:
parent
3578566bf2
commit
cfe07fc764
|
@ -721,8 +721,8 @@ class V3ExtensionRouter(ExtensionRouter, RoutersBase):
|
|||
|
||||
response_data = jsonutils.loads(response.body)
|
||||
self._update_version_response(response_data)
|
||||
response.body = jsonutils.dumps(response_data,
|
||||
cls=utils.SmarterEncoder)
|
||||
response.body = jsonutils.dump_as_bytes(response_data,
|
||||
cls=utils.SmarterEncoder)
|
||||
return response
|
||||
|
||||
|
||||
|
@ -735,7 +735,7 @@ def render_response(body=None, status=None, headers=None, method=None):
|
|||
headers.append(('Vary', 'X-Auth-Token'))
|
||||
|
||||
if body is None:
|
||||
body = ''
|
||||
body = b''
|
||||
status = status or (204, 'No Content')
|
||||
else:
|
||||
content_types = [v for h, v in headers if h == 'Content-Type']
|
||||
|
@ -745,7 +745,7 @@ def render_response(body=None, status=None, headers=None, method=None):
|
|||
content_type = None
|
||||
|
||||
if content_type is None or content_type in JSON_ENCODE_CONTENT_TYPES:
|
||||
body = jsonutils.dumps(body, cls=utils.SmarterEncoder)
|
||||
body = jsonutils.dump_as_bytes(body, cls=utils.SmarterEncoder)
|
||||
if content_type is None:
|
||||
headers.append(('Content-Type', 'application/json'))
|
||||
status = status or (200, 'OK')
|
||||
|
|
|
@ -53,7 +53,7 @@ class AuthTestMixin(object):
|
|||
message='_build_auth requires 1 (and only 1) '
|
||||
'secret type and value')
|
||||
|
||||
secret_type, secret_value = kwargs.items()[0]
|
||||
secret_type, secret_value = list(kwargs.items())[0]
|
||||
|
||||
# NOTE(dstanek): just to ensure sanity in the tests
|
||||
self.assertIn(secret_type, ('passcode', 'password'),
|
||||
|
|
|
@ -534,7 +534,7 @@ class RestfulTestCase(unit.SQLDriverOverrides, rest.RestfulTestCase,
|
|||
def head(self, path, expected_status=http_client.NO_CONTENT, **kwargs):
|
||||
r = self.v3_request(path, method='HEAD',
|
||||
expected_status=expected_status, **kwargs)
|
||||
self.assertEqual('', r.body)
|
||||
self.assertEqual(b'', r.body)
|
||||
return r
|
||||
|
||||
def post(self, path, expected_status=http_client.CREATED, **kwargs):
|
||||
|
@ -1339,7 +1339,7 @@ class AuthContextMiddlewareAdminTokenTestCase(RestfulTestCase):
|
|||
def _middleware_request(self, token, extra_environ=None):
|
||||
|
||||
def application(environ, start_response):
|
||||
body = 'body'
|
||||
body = b'body'
|
||||
headers = [('Content-Type', 'text/html; charset=utf8'),
|
||||
('Content-Length', str(len(body)))]
|
||||
start_response('200 OK', headers)
|
||||
|
@ -1381,7 +1381,7 @@ class AuthContextMiddlewareTestCase(RestfulTestCase):
|
|||
def _middleware_request(self, token, extra_environ=None):
|
||||
|
||||
def application(environ, start_response):
|
||||
body = 'body'
|
||||
body = b'body'
|
||||
headers = [('Content-Type', 'text/html; charset=utf8'),
|
||||
('Content-Length', str(len(body)))]
|
||||
start_response('200 OK', headers)
|
||||
|
@ -1390,7 +1390,7 @@ class AuthContextMiddlewareTestCase(RestfulTestCase):
|
|||
app = webtest.TestApp(middleware.AuthContextMiddleware(application),
|
||||
extra_environ=extra_environ)
|
||||
resp = app.get('/', headers={middleware.AUTH_TOKEN_HEADER: token})
|
||||
self.assertEqual('body', resp.text) # just to make sure it worked
|
||||
self.assertEqual(b'body', resp.body) # just to make sure it worked
|
||||
return resp.request
|
||||
|
||||
def test_auth_context_build_by_middleware(self):
|
||||
|
|
|
@ -1,22 +1,11 @@
|
|||
keystone.tests.unit.common.test_ldap
|
||||
keystone.tests.unit.common.test_notifications
|
||||
keystone.tests.unit.test_associate_project_endpoint_extension
|
||||
keystone.tests.unit.test_backend_ldap
|
||||
keystone.tests.unit.test_backend_ldap_pool
|
||||
keystone.tests.unit.test_ipv6
|
||||
keystone.tests.unit.test_v2
|
||||
keystone.tests.unit.test_v3
|
||||
keystone.tests.unit.test_v3_assignment
|
||||
keystone.tests.unit.test_v3_auth
|
||||
keystone.tests.unit.test_v3_credential
|
||||
keystone.tests.unit.test_v3_domain_config
|
||||
keystone.tests.unit.test_v3_endpoint_policy
|
||||
keystone.tests.unit.test_v3_federation
|
||||
keystone.tests.unit.test_v3_identity
|
||||
keystone.tests.unit.test_v3_oauth1
|
||||
keystone.tests.unit.test_v3_os_revoke
|
||||
keystone.tests.unit.test_v3_protection
|
||||
keystone.tests.unit.test_v3_resource
|
||||
keystone.tests.unit.test_v3_trust
|
||||
keystone.tests.unit.test_versions
|
||||
keystone.tests.unit.token.test_fernet_provider
|
||||
|
|
Loading…
Reference in New Issue