Skip to content
This repository was archived by the owner on Oct 23, 2023. It is now read-only.

fix(flask): Use request.get_json instead of data #1070

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion raven/contrib/flask.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
"""
Expand Down
21 changes: 21 additions & 0 deletions tests/contrib/flask/tests.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import logging
import pytest
import json

from exam import before, fixture
from flask import Flask, current_app, g
Expand Down Expand Up @@ -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)
Expand Down