@@ -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
243305class TestQueryArchiveResourceGet (BaseTestCase ):
244306 def test_returns_queries (self ):
0 commit comments