diff --git a/raven/contrib/flask.py b/raven/contrib/flask.py index 39b4b691b..897a7cdad 100644 --- a/raven/contrib/flask.py +++ b/raven/contrib/flask.py @@ -191,7 +191,7 @@ def get_form_data(self, request): return request.form def get_json_data(self, request): - return request.data + return request.get_json() def get_http_info_with_retriever(self, request, retriever=None): """ diff --git a/tests/contrib/flask/tests.py b/tests/contrib/flask/tests.py index ab7d80376..37a25b992 100644 --- a/tests/contrib/flask/tests.py +++ b/tests/contrib/flask/tests.py @@ -1,5 +1,6 @@ import logging import pytest +import json from exam import before, fixture from flask import Flask, current_app, g @@ -187,6 +188,26 @@ def test_post(self): self.assertTrue('SERVER_PORT' in env, env.keys()) self.assertEquals(env['SERVER_PORT'], '80') + def test_post_json(self): + response = self.client.post( + '/an-error/?biz=baz', + data=json.dumps({'foo': 'bar'}), + content_type='application/json' + ) + + self.assertEquals(response.status_code, 500) + self.assertEquals(len(self.raven.events), 1) + + event = self.raven.events.pop(0) + assert 'request' in event + http = event['request'] + + self.assertEquals(http['data'], {'foo': 'bar'}) + + headers = http['headers'] + self.assertEquals(headers['Content-Type'], 'application/json') + + def test_captureException_captures_http(self): response = self.client.get('/capture/?foo=bar') self.assertEquals(response.status_code, 200)