fix validation throwing 403 rather than 400; enable extra test

This commit is contained in:
Chris Forbes 2014-03-03 11:43:23 +13:00
parent cea0e75b70
commit fdf0472592
2 changed files with 4 additions and 5 deletions

View File

@ -6,10 +6,10 @@ import json
def _validate(data, *args, **kwargs): def _validate(data, *args, **kwargs):
for key in itertools.chain(args, kwargs.keys()): for key in itertools.chain(args, kwargs.keys()):
if not key in data: if not key in data:
flask.abort(403, json.dumps({'error': 'missing parameter', flask.abort(400, json.dumps({'error': 'missing parameter',
'param': key})) 'param': key}))
for key, val in kwargs.iteritems(): for key, val in kwargs.iteritems():
flask.abort(403, json.dumps({'error': 'validation failed', flask.abort(400, json.dumps({'error': 'validation failed',
'param': key})) 'param': key}))
@ -41,7 +41,7 @@ def json_must(*args, **kwargs):
def unpack(func): def unpack(func):
def dejson(f, *iargs): def dejson(f, *iargs):
if flask.request.headers.get('content-type', '') != "application/json": if flask.request.headers.get('content-type', '') != "application/json":
flask.abort(403, json.dumps({"error": "must be in JSON format"})) flask.abort(400, json.dumps({"error": "must be in JSON format"}))
# todo -- parse_float was handled specially # todo -- parse_float was handled specially
_validate(flask.request.json, *args, **kwargs) _validate(flask.request.json, *args, **kwargs)
return func(*iargs) return func(*iargs)

View File

@ -96,8 +96,7 @@ class TestApi(test_interface.TestInterface):
self.assertTrue(resp_json['tenants'][0]['generated']) self.assertTrue(resp_json['tenants'][0]['generated'])
self.assertEquals(resp_json['tenants'][0]['id'], 'tenant_id_0') self.assertEquals(resp_json['tenants'][0]['id'], 'tenant_id_0')
@unittest.skip
def test_sales_raises_400(self): def test_sales_raises_400(self):
"""Assertion that 400 is being thrown if content is not json.""" """Assertion that 400 is being thrown if content is not json."""
resp = self.app.post("/sales_order") resp = self.app.post("/sales_order", expect_errors=True)
self.assertTrue(resp.status_int, 400) self.assertTrue(resp.status_int, 400)