From 78c33285062d25d94f16ad07cd79df82fcbf96c1 Mon Sep 17 00:00:00 2001 From: Christophe de Vienne Date: Mon, 25 Mar 2013 16:07:02 +0100 Subject: [PATCH] Test & fix Server-side errors --- tests/test_flask.py | 14 ++++++++++++++ wsmeext/flask.py | 13 +++++-------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/tests/test_flask.py b/tests/test_flask.py index 43dbd18..27dd4e1 100644 --- a/tests/test_flask.py +++ b/tests/test_flask.py @@ -11,6 +11,12 @@ def multiply(a, b): return a * b +@test_app.route('/divide_by_zero') +@signature(None) +def divide_by_zero(): + return 1 / 0 + + class FlaskrTestCase(unittest.TestCase): def setUp(self): @@ -24,5 +30,13 @@ class FlaskrTestCase(unittest.TestCase): r = self.app.get('/multiply?a=2&b=5') 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__': test_app.run() diff --git a/wsmeext/flask.py b/wsmeext/flask.py index 69b390a..9d67153 100644 --- a/wsmeext/flask.py +++ b/wsmeext/flask.py @@ -8,9 +8,7 @@ import wsme import wsme.api import wsme.rest.json import wsme.rest.xml -from wsme.rest.args import ( - args_from_params, args_from_body, combine_args -) +import wsme.rest.args import flask @@ -30,7 +28,6 @@ def signature(*args, **kw): funcdef, args, kwargs, flask.request.args, flask.request.data, flask.request.content_type ) - print args, kwargs dataformat = None if 'Accept' in flask.request.headers: @@ -52,11 +49,11 @@ def signature(*args, **kw): res.mimetype = dataformat.content_type except: data = wsme.api.format_exception(sys.exc_info()) - res = flask.make_response(dataformat.encode_error(data)) - if data['faultcode']: - res.status = 400 + res = flask.make_response(dataformat.encode_error(None, data)) + if data['faultcode'] == 'client': + res.status_code = 400 else: - res.status = 500 + res.status_code = 500 return res wrapper.wsme_func = f