test_project_events.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. from __future__ import absolute_import
  2. from datetime import timedelta
  3. from django.utils import timezone
  4. from django.core.urlresolvers import reverse
  5. from sentry import options
  6. from sentry.testutils import APITestCase, SnubaTestCase
  7. class ProjectEventsTest(APITestCase, SnubaTestCase):
  8. def setUp(self):
  9. super(ProjectEventsTest, self).setUp()
  10. self.min_ago = timezone.now() - timedelta(minutes=1)
  11. options.set('snuba.events-queries.enabled', True)
  12. def test_simple(self):
  13. self.login_as(user=self.user)
  14. project = self.create_project()
  15. group = self.create_group(project=project)
  16. event_1 = self.create_event('a' * 32, group=group, datetime=self.min_ago)
  17. event_2 = self.create_event('b' * 32, group=group, datetime=self.min_ago)
  18. url = reverse(
  19. 'sentry-api-0-project-events',
  20. kwargs={
  21. 'organization_slug': project.organization.slug,
  22. 'project_slug': project.slug,
  23. }
  24. )
  25. response = self.client.get(url, format='json')
  26. assert response.status_code == 200, response.content
  27. assert len(response.data) == 2
  28. assert sorted(map(lambda x: x['eventID'], response.data)) == sorted(
  29. [
  30. event_1.event_id,
  31. event_2.event_id,
  32. ]
  33. )
  34. def test_message_search(self):
  35. self.login_as(user=self.user)
  36. project = self.create_project()
  37. group = self.create_group(project=project)
  38. self.create_event('x' * 32, group=group, message="how to make fast", datetime=self.min_ago)
  39. event_2 = self.create_event(
  40. 'y' * 32,
  41. group=group,
  42. message="Delet the Data",
  43. datetime=self.min_ago)
  44. url = reverse(
  45. 'sentry-api-0-project-events',
  46. kwargs={
  47. 'organization_slug': project.organization.slug,
  48. 'project_slug': project.slug,
  49. }
  50. )
  51. response = self.client.get(url, {'query': 'delet'}, format='json')
  52. assert response.status_code == 200, response.content
  53. assert len(response.data) == 1
  54. assert response.data[0]['eventID'] == event_2.event_id
  55. assert response.data[0]['message'] == 'Delet the Data'
  56. def test_filters_based_on_retention(self):
  57. self.login_as(user=self.user)
  58. project = self.create_project()
  59. group = self.create_group(project=project)
  60. two_days_ago = timezone.now() - timedelta(days=2)
  61. self.create_event('c' * 32, group=group, datetime=two_days_ago)
  62. event_2 = self.create_event('d' * 32, group=group, datetime=self.min_ago)
  63. with self.options({'system.event-retention-days': 1}):
  64. url = reverse(
  65. 'sentry-api-0-project-events',
  66. kwargs={
  67. 'organization_slug': project.organization.slug,
  68. 'project_slug': project.slug,
  69. }
  70. )
  71. response = self.client.get(url, format='json')
  72. assert response.status_code == 200, response.content
  73. assert len(response.data) == 1
  74. assert response.data[0]['eventID'] == event_2.event_id