コード例 #1
0
 def test_form_fails_blacklist(self):
     q = SimpleQueryFactory(sql="delete $$a$$;", created_by_user_id=None)
     q.params = {}
     form = QueryForm(model_to_dict(q))
     self.assertFalse(form.is_valid())
コード例 #2
0
 def test_query_with_no_resultset_doesnt_throw_error(self):
     query = SimpleQueryFactory(sql="")
     resp = self.client.get('%s?query_id=%s' %
                            (reverse("explorer_playground"), query.id))
     self.assertTemplateUsed(resp, 'explorer/play.html')
コード例 #3
0
 def test_stream_csv_from_query(self):
     q = SimpleQueryFactory()
     resp = self.client.get(
         reverse("stream_query", kwargs={'query_id': q.id}))
     self.assertEqual('text/csv', resp['content-type'])
コード例 #4
0
 def test_fullscreen(self):
     query = SimpleQueryFactory(sql="select 1;")
     resp = self.client.get(
         reverse("query_detail", kwargs={'query_id': query.id}) +
         '?fullscreen=1')
     self.assertTemplateUsed(resp, 'explorer/fullscreen.html')
コード例 #5
0
 def test_params_in_download(self):
     q = SimpleQueryFactory(sql="select '$$foo$$';")
     url = '%s?params=%s' % (reverse("download_query",
                                     kwargs={'query_id': q.id}), 'foo:123')
     resp = self.client.get(url)
     self.assertContains(resp, "'123'")
コード例 #6
0
ファイル: test_views.py プロジェクト: falconmutant/horarios
 def test_query_with_bad_sql_renders_error(self):
     query = SimpleQueryFactory(sql="error")
     resp = self.client.get(
         reverse("query_detail", kwargs={'query_id': query.id}))
     self.assertTemplateUsed(resp, 'explorer/query.html')
     self.assertContains(resp, "syntax error")
コード例 #7
0
 def test_doesnt_render_results_if_show_is_none(self):
     query = SimpleQueryFactory(sql='select 6870+1;')
     resp = self.client.get(
         reverse("query_detail", kwargs={'query_id': query.id}) + '?show=0')
     self.assertTemplateUsed(resp, 'explorer/query.html')
     self.assertNotContains(resp, '6871')
コード例 #8
0
 def test_query_with_bad_sql_renders_error_on_save(self):
     query = SimpleQueryFactory(sql="select 1;")
     resp = self.client.post(reverse("query_detail", kwargs={'query_id': query.id}), data={'sql': 'error'})
     self.assertTemplateUsed(resp, 'explorer/query.html')
     self.assertContains(resp, "syntax error")
コード例 #9
0
 def test_form_is_invalid_with_non_select_statement(self):
     q = SimpleQueryFactory(sql="delete $$a$$;", created_by_user_id=None)
     q.params = {}
     form = QueryForm(model_to_dict(q))
     self.assertFalse(form.is_valid())
コード例 #10
0
 def test_query_saves_to_log(self):
     query = SimpleQueryFactory()
     data = model_to_dict(query)
     data['sql'] = 'select 12345;'
     self.client.post(reverse("query_detail", kwargs={'query_id': query.id}), data)
     self.assertEqual(1, QueryLog.objects.count())
コード例 #11
0
 def test_email_calls_task(self, mocked_execute):
     query = SimpleQueryFactory()
     url = reverse("email_csv_query", kwargs={'query_id': query.id})
     self.client.post(url, data={'email': '*****@*****.**'}, **{'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'})
     self.assertEqual(mocked_execute.delay.call_count, 1)
コード例 #12
0
 def test_saving_non_executing_query_with__wrong_url_params_works(self):
     q = SimpleQueryFactory(sql="select $$swap$$;")
     data = model_to_dict(q)
     url = '{}?params={}'.format(reverse("query_detail", kwargs={'query_id': q.id}), 'foo:123')
     resp = self.client.post(url, data)
     self.assertContains(resp, 'saved')
コード例 #13
0
 def test_tab_delim_in_download(self):
     q = SimpleQueryFactory(sql="select 1, 2;")
     url = '%s?delim=tab' % reverse("query_download",
                                    kwargs={'query_id': q.id})
     resp = self.client.get(url)
     self.assertContains(resp, "1\t2")
コード例 #14
0
 def test_custom_delimiter(self):
     q = SimpleQueryFactory(sql='select 1, 2')
     exporter = CSVExporter(query=q)
     res = exporter.get_output(delim='|')
     self.assertEqual(res, '1|2\r\n1|2\r\n')
コード例 #15
0
ファイル: test_views.py プロジェクト: falconmutant/horarios
 def test_creating_query_does_not_save_to_log(self):
     query = SimpleQueryFactory()
     self.client.post(reverse("query_create"), model_to_dict(query))
     self.assertEqual(0, QueryLog.objects.count())
コード例 #16
0
 def test_form_is_valid_with_valid_sql(self):
     q = SimpleQueryFactory(sql="select 1;", created_by_user_id=None)
     form = QueryForm(model_to_dict(q))
     self.assertTrue(form.is_valid())
コード例 #17
0
ファイル: test_views.py プロジェクト: falconmutant/horarios
    def test_is_playground(self):
        self.assertTrue(QueryLog(sql='foo').is_playground)

        q = SimpleQueryFactory()
        self.assertFalse(QueryLog(sql='foo', query_id=q.id).is_playground)
コード例 #18
0
 def test_shared(self):
     q = SimpleQueryFactory()
     q2 = SimpleQueryFactory()
     with self.settings(EXPLORER_USER_QUERY_VIEWS={'foo': [q.id]}):
         self.assertTrue(q.shared)
         self.assertFalse(q2.shared)
コード例 #19
0
 def test_modified_date_gets_updated_after_viewing_query(self):
     query = SimpleQueryFactory()
     old = query.last_run_date
     time.sleep(0.1)
     self.client.get(reverse("query_detail", kwargs={'query_id': query.id}))
     self.assertNotEqual(old, Query.objects.get(pk=query.id).last_run_date)
コード例 #20
0
 def test_blacklist_prevents_bad_sql_from_executing(self):
     q = SimpleQueryFactory(sql='select 1 "delete";')
     headers, data, duration, error = q.headers_and_data()
     self.assertEqual(error, MSG_FAILED_BLACKLIST)
コード例 #21
0
 def test_admin_required(self):
     self.client.logout()
     query = SimpleQueryFactory()
     resp = self.client.get(
         reverse("query_detail", kwargs={'query_id': query.id}))
     self.assertTemplateUsed(resp, 'admin/login.html')
コード例 #22
0
 def test_blacklist_prevents_bad_sql_with_params_from_executing(self):
     q = SimpleQueryFactory(sql="select '$$foo$$';")
     headers, data, duration, error = q.headers_and_data(
         params={"foo": "'; delete from *; select'"})
     self.assertEqual(error, MSG_FAILED_BLACKLIST)
コード例 #23
0
 def setUp(self):
     self.query = SimpleQueryFactory(sql="select 1;")
     self.user = User.objects.create_superuser('admin', '*****@*****.**',
                                               'pwd')
     self.client.login(username='******', password='******')
コード例 #24
0
 def test_params_get_merged(self):
     q = SimpleQueryFactory(sql="select '$$foo$$';")
     params = {'foo': 'bar', 'mux': 'qux'}
     self.assertEqual(q.available_params(params), {'foo': 'bar'})
コード例 #25
0
 def test_playground_renders_with_query_sql(self):
     query = SimpleQueryFactory(sql="select 1;")
     resp = self.client.get('%s?query_id=%s' %
                            (reverse("explorer_playground"), query.id))
     self.assertTemplateUsed(resp, 'explorer/play.html')
     self.assertContains(resp, 'select 1;')
コード例 #26
0
 def test_blacklist_check_runs_before_execution(self):
     q = SimpleQueryFactory(sql='select 1;')
     with AssertMethodIsCalled(q, "passes_blacklist"):
         headers, data, duration, error = q.headers_and_data()
コード例 #27
0
 def test_fullscreen(self):
     query = SimpleQueryFactory(sql="")
     resp = self.client.get('%s?query_id=%s&fullscreen=1' %
                            (reverse("explorer_playground"), query.id))
     self.assertTemplateUsed(resp, 'explorer/fullscreen.html')
コード例 #28
0
 def test_get_params_for_request_empty(self):
     q = SimpleQueryFactory()
     self.assertEqual(get_params_for_url(q), None)
コード例 #29
0
 def test_run_count(self):
     q = SimpleQueryFactory(title='foo - bar1')
     for i in range(0, 4):
         q.log()
     resp = self.client.get(reverse("explorer_index"))
     self.assertContains(resp, '<td>4</td>')
コード例 #30
0
 def test_retrieving_query_doesnt_save_to_log(self):
     query = SimpleQueryFactory()
     self.client.get(reverse("query_detail", kwargs={'query_id': query.id}))
     self.assertEqual(0, QueryLog.objects.count())