diff options
| -rw-r--r-- | keystone/common/wsgi.py | 9 | ||||
| -rw-r--r-- | tests/test_wsgi.py | 25 |
2 files changed, 31 insertions, 3 deletions
diff --git a/keystone/common/wsgi.py b/keystone/common/wsgi.py index c52df414..59b49de2 100644 --- a/keystone/common/wsgi.py +++ b/keystone/common/wsgi.py @@ -180,10 +180,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') |
