Skip to content

Commit ba0498b

Browse files
author
Omer Lachish
committed
add dropdown association tests to query creation
1 parent 3e8d1a5 commit ba0498b

1 file changed

Lines changed: 62 additions & 0 deletions

File tree

tests/handlers/test_queries.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,68 @@ def test_create_query(self):
239239
self.assertEquals(len(list(query.visualizations)), 1)
240240
self.assertTrue(query.is_draft)
241241

242+
def test_allows_association_with_authorized_dropdown_queries(self):
243+
data_source = self.factory.create_data_source(group=self.factory.default_group)
244+
245+
other_query = self.factory.create_query(data_source=data_source)
246+
db.session.add(other_query)
247+
248+
query_data = {
249+
'name': 'Testing',
250+
'query': 'SELECT 1',
251+
'schedule': {"interval": "3600"},
252+
'data_source_id': self.factory.data_source.id,
253+
'options': {
254+
'parameters': [{
255+
'type': 'query',
256+
'queryId': other_query.id
257+
}]
258+
}
259+
}
260+
261+
rv = self.make_request('post', '/api/queries', data=query_data)
262+
self.assertEqual(rv.status_code, 200)
263+
264+
def test_prevents_association_with_unauthorized_dropdown_queries(self):
265+
other_data_source = self.factory.create_data_source(group=self.factory.create_group())
266+
other_query = self.factory.create_query(data_source=other_data_source)
267+
db.session.add(other_query)
268+
269+
my_data_source = self.factory.create_data_source(group=self.factory.create_group())
270+
271+
query_data = {
272+
'name': 'Testing',
273+
'query': 'SELECT 1',
274+
'schedule': {"interval": "3600"},
275+
'data_source_id': my_data_source.id,
276+
'options': {
277+
'parameters': [{
278+
'type': 'query',
279+
'queryId': other_query.id
280+
}]
281+
}
282+
}
283+
284+
rv = self.make_request('post', '/api/queries', data=query_data)
285+
self.assertEqual(rv.status_code, 403)
286+
287+
def test_prevents_association_with_non_existing_dropdown_queries(self):
288+
query_data = {
289+
'name': 'Testing',
290+
'query': 'SELECT 1',
291+
'schedule': {"interval": "3600"},
292+
'data_source_id': self.factory.data_source.id,
293+
'options': {
294+
'parameters': [{
295+
'type': 'query',
296+
'queryId': 100000
297+
}]
298+
}
299+
}
300+
301+
rv = self.make_request('post', '/api/queries', data=query_data)
302+
self.assertEqual(rv.status_code, 400)
303+
242304

243305
class TestQueryArchiveResourceGet(BaseTestCase):
244306
def test_returns_queries(self):

0 commit comments

Comments
 (0)