test_organization_discover_saved_queries.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. from __future__ import absolute_import
  2. from sentry.testutils import APITestCase
  3. from django.core.urlresolvers import reverse
  4. from sentry.testutils import SnubaTestCase
  5. from sentry.models import DiscoverSavedQuery
  6. class OrganizationDiscoverSavedQueriesTest(APITestCase, SnubaTestCase):
  7. def setUp(self):
  8. super(OrganizationDiscoverSavedQueriesTest, self).setUp()
  9. self.login_as(user=self.user)
  10. self.org = self.create_organization(owner=self.user)
  11. self.project_ids = [
  12. self.create_project(organization=self.org).id,
  13. self.create_project(organization=self.org).id
  14. ]
  15. self.project_ids_without_access = [
  16. self.create_project().id
  17. ]
  18. query = {
  19. 'fields': ['test'],
  20. 'conditions': [],
  21. 'limit': 10
  22. }
  23. model = DiscoverSavedQuery.objects.create(
  24. organization=self.org, created_by=self.user, name="Test query", query=query)
  25. model.set_projects(self.project_ids)
  26. def test_get(self):
  27. with self.feature('organizations:discover'):
  28. url = reverse('sentry-api-0-organization-discover-saved-queries', args=[self.org.slug])
  29. response = self.client.get(url)
  30. assert response.status_code == 200, response.content
  31. assert len(response.data) == 1
  32. assert response.data[0]['name'] == 'Test query'
  33. assert response.data[0]['projects'] == self.project_ids
  34. assert response.data[0]['fields'] == ['test']
  35. assert response.data[0]['conditions'] == []
  36. assert response.data[0]['limit'] == 10
  37. def test_post(self):
  38. with self.feature('organizations:discover'):
  39. url = reverse('sentry-api-0-organization-discover-saved-queries', args=[self.org.slug])
  40. response = self.client.post(url, {
  41. 'name': 'New query',
  42. 'projects': self.project_ids,
  43. 'fields': [],
  44. 'range': '24h',
  45. 'limit': 20,
  46. 'conditions': [],
  47. 'aggregations': [],
  48. 'orderby': '-time',
  49. })
  50. assert response.status_code == 201, response.content
  51. assert response.data['name'] == 'New query'
  52. assert response.data['projects'] == self.project_ids
  53. assert response.data['range'] == '24h'
  54. assert not hasattr(response.data, 'start')
  55. assert not hasattr(response.data, 'end')
  56. def test_post_invalid_projects(self):
  57. with self.feature('organizations:discover'):
  58. url = reverse('sentry-api-0-organization-discover-saved-queries', args=[self.org.slug])
  59. response = self.client.post(url, {
  60. 'name': 'New query',
  61. 'projects': self.project_ids_without_access,
  62. 'fields': [],
  63. 'range': '24h',
  64. 'limit': 20,
  65. 'conditions': [],
  66. 'aggregations': [],
  67. 'orderby': '-time',
  68. })
  69. assert response.status_code == 403, response.content