test_organization_integration_detail_view.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from __future__ import absolute_import
  2. from exam import mock
  3. from sentry.models import Integration
  4. from sentry.testutils import AcceptanceTestCase
  5. from tests.acceptance.page_objects.organization_integration_settings import (
  6. ExampleIntegrationSetupWindowElement,
  7. OrganizationIntegrationDetailViewPage,
  8. )
  9. from sentry.features import OrganizationFeature
  10. from sentry import features
  11. class OrganizationIntegrationDetailView(AcceptanceTestCase):
  12. """
  13. As a developer, I can create an integration, install it, and uninstall it
  14. """
  15. def setUp(self):
  16. super(OrganizationIntegrationDetailView, self).setUp()
  17. features.add("organizations:integrations-feature_flag_integration", OrganizationFeature)
  18. self.login_as(self.user)
  19. def load_page(self, slug, configuration_tab=False):
  20. url = u"/settings/{}/integrations/{}/".format(self.organization.slug, slug)
  21. if configuration_tab:
  22. url += "?tab=configurations"
  23. self.browser.get(url)
  24. self.browser.wait_until_not(".loading-indicator")
  25. def test_example_installation(self):
  26. self.provider = mock.Mock()
  27. self.provider.key = "example"
  28. self.provider.name = "Example Installation"
  29. self.load_page("example")
  30. self.browser.snapshot("integrations - integration detail overview")
  31. detail_view_page = OrganizationIntegrationDetailViewPage(browser=self.browser)
  32. detail_view_page.click_install_button()
  33. detail_view_page.click_through_integration_setup(
  34. ExampleIntegrationSetupWindowElement, {"name": self.provider.name}
  35. )
  36. # provider_element might be rerendered
  37. assert Integration.objects.filter(
  38. provider=self.provider.key, external_id=self.provider.name
  39. ).exists()
  40. detail_view_page.switch_to_configuration_view()
  41. assert self.browser.element_exists('[aria-label="Configure"]')
  42. def test_uninstallation(self):
  43. model = Integration.objects.create(
  44. provider="slack",
  45. external_id="some_slack",
  46. name="Test Slack",
  47. metadata={"domain_name": "slack-test.slack.com"},
  48. )
  49. model.add_organization(self.organization, self.user)
  50. self.load_page("slack", configuration_tab=True)
  51. self.browser.snapshot(name="integrations - integration detail one configuration")
  52. detail_view_page = OrganizationIntegrationDetailViewPage(browser=self.browser)
  53. assert self.browser.element_exists('[aria-label="Configure"]')
  54. detail_view_page.uninstall()
  55. assert not self.browser.element_exists('[aria-label="Configure"]')
  56. self.browser.snapshot(name="integrations - integration detail no configurations")