Test & fix Server-side errors

This commit is contained in:
Christophe de Vienne 2013-03-25 16:07:02 +01:00
parent 4ba5ce042a
commit 78c3328506
2 changed files with 19 additions and 8 deletions

View File

@ -11,6 +11,12 @@ def multiply(a, b):
return a * b return a * b
@test_app.route('/divide_by_zero')
@signature(None)
def divide_by_zero():
return 1 / 0
class FlaskrTestCase(unittest.TestCase): class FlaskrTestCase(unittest.TestCase):
def setUp(self): def setUp(self):
@ -24,5 +30,13 @@ class FlaskrTestCase(unittest.TestCase):
r = self.app.get('/multiply?a=2&b=5') r = self.app.get('/multiply?a=2&b=5')
assert r.data == '10' assert r.data == '10'
def test_serversideerror(self):
r = self.app.get('/divide_by_zero')
assert r.status_code == 500
self.assertEquals(
r.data,
''
)
if __name__ == '__main__': if __name__ == '__main__':
test_app.run() test_app.run()

View File

@ -8,9 +8,7 @@ import wsme
import wsme.api import wsme.api
import wsme.rest.json import wsme.rest.json
import wsme.rest.xml import wsme.rest.xml
from wsme.rest.args import ( import wsme.rest.args
args_from_params, args_from_body, combine_args
)
import flask import flask
@ -30,7 +28,6 @@ def signature(*args, **kw):
funcdef, args, kwargs, flask.request.args, flask.request.data, funcdef, args, kwargs, flask.request.args, flask.request.data,
flask.request.content_type flask.request.content_type
) )
print args, kwargs
dataformat = None dataformat = None
if 'Accept' in flask.request.headers: if 'Accept' in flask.request.headers:
@ -52,11 +49,11 @@ def signature(*args, **kw):
res.mimetype = dataformat.content_type res.mimetype = dataformat.content_type
except: except:
data = wsme.api.format_exception(sys.exc_info()) data = wsme.api.format_exception(sys.exc_info())
res = flask.make_response(dataformat.encode_error(data)) res = flask.make_response(dataformat.encode_error(None, data))
if data['faultcode']: if data['faultcode'] == 'client':
res.status = 400 res.status_code = 400
else: else:
res.status = 500 res.status_code = 500
return res return res
wrapper.wsme_func = f wrapper.wsme_func = f