diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-02-17 22:39:06 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-02-17 22:39:06 +0000 |
| commit | f28ee221e96bae9ba8dbacf2da27a9465c4b6271 (patch) | |
| tree | d7a898aac1758955ca79298d9813044c68e92af7 | |
| parent | dd382af03bb302e91a2465e7c80ae2b148701d0f (diff) | |
| parent | 6672acbeb9586bbc42d1e52c4377896374c750c7 (diff) | |
Merge "Should return 300 Multiple Choice (bug 925548)"
| -rw-r--r-- | keystone/common/wsgi.py | 25 | ||||
| -rw-r--r-- | keystone/service.py | 5 | ||||
| -rw-r--r-- | tests/test_versions.py | 2 |
3 files changed, 20 insertions, 12 deletions
diff --git a/keystone/common/wsgi.py b/keystone/common/wsgi.py index 7b6926d0..c176ec64 100644 --- a/keystone/common/wsgi.py +++ b/keystone/common/wsgi.py @@ -183,6 +183,8 @@ class Application(BaseApplication): if result is None or type(result) is str or type(result) is unicode: return result + elif isinstance(result, webob.Response): + return result elif isinstance(result, webob.exc.WSGIHTTPException): return result @@ -455,20 +457,23 @@ class ExtensionRouter(Router): return _factory -def render_exception(error): - """Forms a WSGI response based on the current error.""" +def render_response(body, status=(200, 'OK'), headers=None): + """Forms a WSGI response""" resp = webob.Response() - resp.status = '%s %s' % (error.code, error.title) - resp.headerlist = [('Content-Type', 'application/json')] + resp.status = '%s %s' % status + resp.headerlist = headers or [('Content-Type', 'application/json')] + + resp.body = json.dumps(body) + + return resp - body = { + +def render_exception(error): + """Forms a WSGI response based on the current error.""" + return render_response(status=(error.code, error.title), body={ 'error': { 'code': error.code, 'title': error.title, 'message': str(error), } - } - - resp.body = json.dumps(body) - - return resp + }) diff --git a/keystone/service.py b/keystone/service.py index e2755e48..aa3c9c8b 100644 --- a/keystone/service.py +++ b/keystone/service.py @@ -137,7 +137,8 @@ class VersionController(wsgi.Application): identity_url = self._get_identity_url(context) if not identity_url.endswith('/'): identity_url = identity_url + '/' - return { + + return wsgi.render_response(status=(300, 'Multiple Choices'), body={ "versions": { "values": [{ "id": "v2.0", @@ -165,7 +166,7 @@ class VersionController(wsgi.Application): }] }] } - } + }) class NoopController(wsgi.Application): diff --git a/tests/test_versions.py b/tests/test_versions.py index 2fef3cf0..4d302bf3 100644 --- a/tests/test_versions.py +++ b/tests/test_versions.py @@ -51,6 +51,7 @@ class VersionTestCase(test.TestCase): def test_public_versions(self): client = self.client(self.public_app) resp = client.get('/') + self.assertEqual(resp.status_int, 300) data = json.loads(resp.body) expected = { "versions": { @@ -87,6 +88,7 @@ class VersionTestCase(test.TestCase): def test_admin_versions(self): client = self.client(self.admin_app) resp = client.get('/') + self.assertEqual(resp.status_int, 300) data = json.loads(resp.body) expected = { "versions": { |
