From 690f8323c3aedd87fcf62f7e8c268eace2888ee1 Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Thu, 14 May 2015 17:25:42 -0700 Subject: [PATCH] Allow undefined max_age parameter in query_results endpoint An Error 500 would be returned by the endpoint if you attempted to pass a query parameter to the dashboard since maxAge was undefined in JavaScript. --- redash/controllers.py | 4 ++-- tests/test_controllers.py | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/redash/controllers.py b/redash/controllers.py index 3c888edd35..4deef845cc 100644 --- a/redash/controllers.py +++ b/redash/controllers.py @@ -450,7 +450,7 @@ def delete(self, visualization_id): class QueryResultListAPI(BaseResource): @require_permission('execute_query') def post(self): - params = request.json + params = request.get_json(force=True) if settings.FEATURE_TABLES_PERMISSIONS: metadata = utils.SQLMetaData(params['query']) @@ -476,7 +476,7 @@ def post(self): activity=params['query'] ).save() - max_age = int(params['max_age']) + max_age = int(params.get('max_age', -1)) if max_age == 0: query_result = None diff --git a/tests/test_controllers.py b/tests/test_controllers.py index fb1960ebca..ce98ce8371 100644 --- a/tests/test_controllers.py +++ b/tests/test_controllers.py @@ -319,6 +319,17 @@ def setUp(self): self.paths = [] super(QueryResultAPITest, self).setUp() + def test_post_result_list(self): + data_source = data_source_factory.create() + query_result = query_result_factory.create() + query = query_factory.create() + + with app.test_client() as c, authenticated_user(c): + rv = json_request(c.post, '/api/query_results', + data={'data_source_id': data_source.id, + 'query': query.query}) + self.assertEquals(rv.status_code, 200) + class JobAPITest(BaseTestCase, AuthenticationTestMixin): def setUp(self):