improve request decoding and json parsing
This commit is contained in:
parent
6691810316
commit
8d1171df29
@ -95,11 +95,11 @@ class Bloomfilter:
|
||||
class JSONRequest(Request):
|
||||
|
||||
if werkzeug.version.startswith("0.8"):
|
||||
def get_data(self):
|
||||
def get_data(self, **kw):
|
||||
return self.data.decode('utf-8')
|
||||
|
||||
def get_json(self):
|
||||
try:
|
||||
return json.loads(self.get_data().decode('utf-8'))
|
||||
return json.loads(self.get_data(as_text=True))
|
||||
except ValueError:
|
||||
raise BadRequest('Unable to read JSON request')
|
||||
|
@ -55,7 +55,7 @@ def new(app, environ, request, uri):
|
||||
for field in set(data.keys()) - set(['text', 'author', 'website', 'email', 'parent']):
|
||||
data.pop(field)
|
||||
|
||||
if not data.get("text"):
|
||||
if "text" not in data or data["text"] is None or len(data["text"]) < 3:
|
||||
raise BadRequest("no text given")
|
||||
|
||||
if "id" in data and not isinstance(data["id"], int):
|
||||
@ -162,7 +162,7 @@ def single(app, environ, request, id):
|
||||
if request.method == 'PUT':
|
||||
data = request.get_json()
|
||||
|
||||
if data.get("text") is not None and len(data['text']) < 3:
|
||||
if "text" not in data or data["text"] is None or len(data["text"]) < 3:
|
||||
raise BadRequest("no text given")
|
||||
|
||||
for key in set(data.keys()) - set(["text", "author", "website"]):
|
||||
|
@ -1,3 +1,5 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
@ -92,6 +94,18 @@ class TestComments(unittest.TestCase):
|
||||
assert rv["mode"] == 1
|
||||
assert rv["text"] == '<p>Lorem ipsum ...</p>\n'
|
||||
|
||||
def textCreateWithNonAsciiText(self):
|
||||
|
||||
rv = self.post('/new?uri=%2Fpath%2F', data=json.dumps({'text': 'Здравствуй, мир!'}))
|
||||
|
||||
assert rv.status_code == 201
|
||||
assert any(filter(lambda header: header[0] == 'Set-Cookie', rv.headers))
|
||||
|
||||
rv = loads(rv.data)
|
||||
|
||||
assert rv["mode"] == 1
|
||||
assert rv["text"] == '<p>Здравствуй, мир!</p>\n'
|
||||
|
||||
def testCreateMultiple(self):
|
||||
|
||||
a = self.post('/new?uri=test', data=json.dumps({'text': '...'}))
|
||||
|
0
specs/test_cors.py
Normal file
0
specs/test_cors.py
Normal file
Loading…
Reference in New Issue
Block a user