From 6013dd83bb96bc1f654fb8a0d7e7b29c25bfa36a Mon Sep 17 00:00:00 2001 From: Brian Waldon Date: Wed, 8 Feb 2012 13:22:51 -0800 Subject: Add content-type to responses * fixes bug 928055 Change-Id: Id86a9b3361d27493ed5ef175462aa1d4c1001bf4 --- keystone/common/wsgi.py | 9 ++++++--- tests/test_wsgi.py | 25 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 tests/test_wsgi.py diff --git a/keystone/common/wsgi.py b/keystone/common/wsgi.py index 34caec2c..b9105264 100644 --- a/keystone/common/wsgi.py +++ b/keystone/common/wsgi.py @@ -177,10 +177,13 @@ class Application(BaseApplication): elif isinstance(result, webob.exc.WSGIHTTPException): return result - return self._serialize(result) + response = webob.Response() + self._serialize(response, result) + return response - def _serialize(self, result): - return json.dumps(result, cls=utils.SmarterEncoder) + def _serialize(self, response, result): + response.content_type = 'application/json' + response.body = json.dumps(result, cls=utils.SmarterEncoder) def _normalize_arg(self, arg): return str(arg).replace(':', '_').replace('-', '_') diff --git a/tests/test_wsgi.py b/tests/test_wsgi.py new file mode 100644 index 00000000..cf329ba7 --- /dev/null +++ b/tests/test_wsgi.py @@ -0,0 +1,25 @@ +import webob + +from keystone import test +from keystone.common import wsgi + + +class FakeApp(wsgi.Application): + def index(self, context): + return {'a': 'b'} + + +class ApplicationTest(test.TestCase): + def setUp(self): + self.app = FakeApp() + + def _make_request(self): + req = webob.Request.blank('/') + args = {'action': 'index', 'controller': self.app} + req.environ['wsgiorg.routing_args'] = [None, args] + return req + + def test_response_content_type(self): + req = self._make_request() + resp = req.get_response(self.app) + self.assertEqual(resp.content_type, 'application/json') -- cgit