test_organization_developer_settings.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. from __future__ import absolute_import
  2. from sentry.testutils import AcceptanceTestCase
  3. class OrganizationDeveloperSettingsNewAcceptanceTest(AcceptanceTestCase):
  4. """
  5. As a developer, I can create an integration, install it, and uninstall it
  6. """
  7. def setUp(self):
  8. super(OrganizationDeveloperSettingsNewAcceptanceTest, self).setUp()
  9. self.team = self.create_team(organization=self.organization, name="Tesla Motors")
  10. self.project = self.create_project(
  11. organization=self.organization, teams=[self.team], name="Model S"
  12. )
  13. self.login_as(self.user)
  14. self.org_developer_settings_path = u"/settings/{}/developer-settings/".format(
  15. self.organization.slug
  16. )
  17. def load_page(self, url):
  18. self.browser.get(url)
  19. self.browser.wait_until_not(".loading-indicator")
  20. def test_create_new_public_integration(self):
  21. self.load_page(self.org_developer_settings_path)
  22. self.browser.click('[aria-label="New Public Integration"]')
  23. self.browser.element('input[name="name"]').send_keys("Tesla")
  24. self.browser.element('input[name="author"]').send_keys("Elon Musk")
  25. self.browser.element('input[name="webhookUrl"]').send_keys("https://example.com/webhook")
  26. self.browser.click('[aria-label="Save Changes"]')
  27. self.browser.wait_until(xpath="//div[contains(text(), 'Client ID')]", timeout=3)
  28. def test_create_new_internal_integration(self):
  29. self.load_page(self.org_developer_settings_path)
  30. self.browser.click('[aria-label="New Internal Integration"]')
  31. self.browser.element('input[name="name"]').send_keys("Tesla")
  32. self.browser.click('[aria-label="Save Changes"]')
  33. self.browser.wait_until(xpath="//button//span[contains(text(), 'New Token')]", timeout=3)
  34. class OrganizationDeveloperSettingsEditAcceptanceTest(AcceptanceTestCase):
  35. """
  36. As a developer, I can edit an existing integration
  37. """
  38. def setUp(self):
  39. super(OrganizationDeveloperSettingsEditAcceptanceTest, self).setUp()
  40. self.user = self.create_user("foo@example.com")
  41. self.org = self.create_organization(name="Tesla", owner=self.user)
  42. self.team = self.create_team(organization=self.org, name="Tesla Motors")
  43. self.project = self.create_project(organization=self.org, teams=[self.team], name="Model S")
  44. self.sentry_app = self.create_sentry_app(
  45. name="Tesla App",
  46. organization=self.org,
  47. schema={"elements": [self.create_issue_link_schema()]},
  48. )
  49. self.login_as(self.user)
  50. self.org_developer_settings_path = u"/settings/{}/developer-settings/{}".format(
  51. self.org.slug, self.sentry_app.slug
  52. )
  53. def load_page(self, url):
  54. self.browser.get(url)
  55. self.browser.wait_until_not(".loading-indicator")
  56. def test_edit_integration_schema(self):
  57. self.load_page(self.org_developer_settings_path)
  58. textarea = self.browser.element('textarea[name="schema"]')
  59. textarea.clear()
  60. textarea.send_keys("{}")
  61. self.browser.click('[aria-label="Save Changes"]')
  62. self.browser.wait_until(".ref-success")
  63. link = self.browser.find_element_by_link_text("Tesla App")
  64. link.click()
  65. self.browser.wait_until_not(".loading-indicator")
  66. schema = self.browser.element('textarea[name="schema"]')
  67. assert schema.text == ""
  68. def test_remove_tokens_internal_app(self):
  69. internal_app = self.create_internal_integration(name="Internal App", organization=self.org)
  70. url = u"/settings/{}/developer-settings/{}".format(self.org.slug, internal_app.slug)
  71. self.load_page(url)
  72. self.browser.click('[data-test-id="token-delete"]')
  73. self.browser.wait_until(".ref-success")
  74. assert self.browser.find_element_by_xpath(
  75. "//div[contains(text(), 'No tokens created yet.')]"
  76. )
  77. def test_add_tokens_internal_app(self):
  78. internal_app = self.create_internal_integration(name="Internal App", organization=self.org)
  79. url = u"/settings/{}/developer-settings/{}".format(self.org.slug, internal_app.slug)
  80. self.load_page(url)
  81. self.browser.click('[data-test-id="token-add"]')
  82. self.browser.wait_until(".ref-success")
  83. assert len(self.browser.find_elements_by_css_selector('[data-test-id="token-delete"]')) == 2