test_project_servicehooks.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from __future__ import absolute_import
  2. from sentry.models import ServiceHook
  3. from sentry.testutils import AcceptanceTestCase
  4. class ProjectServiceHooksTest(AcceptanceTestCase):
  5. def setUp(self):
  6. super(ProjectServiceHooksTest, self).setUp()
  7. self.user = self.create_user('foo@example.com')
  8. self.org = self.create_organization(
  9. name='Rowdy Tiger',
  10. owner=None,
  11. )
  12. self.team = self.create_team(organization=self.org, name='Mariachi Band')
  13. self.project = self.create_project(
  14. organization=self.org,
  15. teams=[self.team],
  16. name='Bengal',
  17. )
  18. self.create_member(
  19. user=self.user,
  20. organization=self.org,
  21. role='owner',
  22. teams=[self.team],
  23. )
  24. self.login_as(self.user)
  25. self.list_hooks_path = '/settings/{}/{}/hooks/'.format(self.org.slug, self.project.slug)
  26. self.new_hook_path = '/settings/{}/{}/hooks/new/'.format(self.org.slug, self.project.slug)
  27. def test_simple(self):
  28. with self.feature('projects:servicehooks'):
  29. self.browser.get(self.list_hooks_path)
  30. self.browser.wait_until_not('.loading-indicator')
  31. self.browser.wait_until('.ref-project-service-hooks')
  32. self.browser.snapshot('project settings - service hooks - empty list')
  33. # click "New"
  34. self.browser.click('[data-test-id="new-service-hook"]')
  35. self.browser.wait_until_not('.loading-indicator')
  36. assert self.browser.current_url == '{}{}'.format(
  37. self.browser.live_server_url,
  38. self.new_hook_path,
  39. )
  40. self.browser.snapshot('project settings - service hooks - create')
  41. self.browser.element('input[name="url"]').send_keys('https://example.com/hook')
  42. # click "Save Changes"
  43. self.browser.click('.ref-project-create-service-hook [data-test-id="form-submit"]')
  44. self.browser.wait_until_not('.loading-indicator')
  45. assert self.browser.current_url == '{}{}'.format(
  46. self.browser.live_server_url,
  47. self.list_hooks_path,
  48. )
  49. self.browser.snapshot('project settings - service hooks - list with entries')
  50. hook = ServiceHook.objects.get(project_id=self.project.id)
  51. assert hook.url == 'https://example.com/hook'
  52. assert not hook.events
  53. # hopefully click the first service hook
  54. self.browser.click('.ref-project-service-hooks label a')
  55. self.browser.wait_until_not('.loading-indicator')
  56. assert self.browser.current_url == '{}{}'.format(
  57. self.browser.live_server_url,
  58. '/settings/{}/{}/hooks/{}/'.format(self.org.slug, self.project.slug, hook.guid),
  59. )
  60. self.browser.snapshot('project settings - service hooks - details')