forked from orbit-oss/flask
detect UTF encodings when loading json
This commit is contained in:
parent
aab4c8c745
commit
0e1e9a04aa
3 changed files with 67 additions and 23 deletions
|
|
@ -21,6 +21,8 @@ from werkzeug.datastructures import Range
|
|||
from werkzeug.exceptions import BadRequest, NotFound
|
||||
from werkzeug.http import parse_cache_control_header, parse_options_header
|
||||
from werkzeug.http import http_date
|
||||
|
||||
from flask import json
|
||||
from flask._compat import StringIO, text_type
|
||||
|
||||
|
||||
|
|
@ -34,6 +36,20 @@ def has_encoding(name):
|
|||
|
||||
|
||||
class TestJSON(object):
|
||||
@pytest.mark.parametrize('value', (
|
||||
1, 't', True, False, None,
|
||||
[], [1, 2, 3],
|
||||
{}, {'foo': u'🐍'},
|
||||
))
|
||||
@pytest.mark.parametrize('encoding', (
|
||||
'utf-8', 'utf-8-sig',
|
||||
'utf-16-le', 'utf-16-be', 'utf-16',
|
||||
'utf-32-le', 'utf-32-be', 'utf-32',
|
||||
))
|
||||
def test_detect_encoding(self, value, encoding):
|
||||
data = json.dumps(value).encode(encoding)
|
||||
assert json.detect_encoding(data) == encoding
|
||||
assert json.loads(data) == value
|
||||
|
||||
def test_ignore_cached_json(self):
|
||||
app = flask.Flask(__name__)
|
||||
|
|
@ -85,18 +101,6 @@ class TestJSON(object):
|
|||
rv = c.post('/json', data='"foo"', content_type='application/x+json')
|
||||
assert rv.data == b'foo'
|
||||
|
||||
def test_json_body_encoding(self):
|
||||
app = flask.Flask(__name__)
|
||||
app.testing = True
|
||||
@app.route('/')
|
||||
def index():
|
||||
return flask.request.get_json()
|
||||
|
||||
c = app.test_client()
|
||||
resp = c.get('/', data=u'"Hällo Wörld"'.encode('iso-8859-15'),
|
||||
content_type='application/json; charset=iso-8859-15')
|
||||
assert resp.data == u'Hällo Wörld'.encode('utf-8')
|
||||
|
||||
def test_json_as_unicode(self):
|
||||
app = flask.Flask(__name__)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue