test_organization_plugin_detail_view.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from __future__ import absolute_import
  2. from exam import fixture
  3. from sentry.testutils import AcceptanceTestCase
  4. from tests.acceptance.page_objects.organization_integration_settings import (
  5. OrganizationAbstractDetailViewPage,
  6. )
  7. from sentry_plugins.opsgenie.plugin import OpsGeniePlugin
  8. class OrganizationPluginDetailedView(AcceptanceTestCase):
  9. @fixture
  10. def plugin(self):
  11. return OpsGeniePlugin()
  12. def setUp(self):
  13. super(OrganizationPluginDetailedView, self).setUp()
  14. # need at least two projects
  15. self.project = self.create_project(organization=self.organization, name="Back end")
  16. self.create_project(organization=self.organization, name="Front End")
  17. self.login_as(self.user)
  18. def load_page(self, slug, configuration_tab=False):
  19. url = u"/settings/{}/plugins/{}/".format(self.organization.slug, slug)
  20. if configuration_tab:
  21. url += "?tab=configurations"
  22. self.browser.get(url)
  23. self.browser.wait_until_not(".loading-indicator")
  24. def test_opsgenie_add_to_project(self):
  25. self.load_page("opsgenie")
  26. self.browser.snapshot("integrations - plugin detail overview")
  27. detail_view_page = OrganizationAbstractDetailViewPage(browser=self.browser)
  28. detail_view_page.click_install_button()
  29. self.browser.click('[id="react-select-2-option-0"]')
  30. # check if we got to the configuration page with the form
  31. self.browser.wait_until_not(".loading-indicator")
  32. self.browser.wait_until_test_id("plugin-config")
  33. self.browser.snapshot("integrations - plugin config form")
  34. def test_uninstallation(self):
  35. self.plugin.set_option("api_key", "7c8951d1", self.project)
  36. self.plugin.set_option("alert_url", "https://api.opsgenie.com/v2/alerts", self.project)
  37. self.load_page("opsgenie", configuration_tab=True)
  38. self.browser.snapshot("integrations - plugin detail one configuration")
  39. detail_view_page = OrganizationAbstractDetailViewPage(browser=self.browser)
  40. assert self.browser.element_exists('[aria-label="Configure"]')
  41. detail_view_page.uninstall()
  42. self.browser.wait_until('[data-test-id="toast-success"]')
  43. assert not self.browser.element_exists('[aria-label="Configure"]')
  44. self.browser.snapshot("integrations - plugin detail no configurations")