123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- from __future__ import absolute_import
- from exam import mock
- from sentry.models import Integration
- from sentry.testutils import AcceptanceTestCase
- from tests.acceptance.page_objects.organization_integration_settings import (
- OrganizationIntegrationSettingsPage, ExampleIntegrationSetupWindowElement
- )
- class OrganizationIntegrationAcceptanceTestCase(AcceptanceTestCase):
- def setUp(self):
- super(OrganizationIntegrationAcceptanceTestCase, self).setUp()
- self.user = self.create_user('foo@example.com')
- self.org = self.create_organization(
- name='Rowdy Tiger',
- owner=None,
- )
- self.team = self.create_team(organization=self.org, name='Mariachi Band')
- self.project = self.create_project(
- organization=self.org,
- teams=[self.team],
- name='Bengal',
- )
- self.create_member(
- user=self.user,
- organization=self.org,
- role='owner',
- teams=[self.team],
- )
- self.model = Integration.objects.create(
- provider='example',
- external_id='example',
- name='Test Integration',
- metadata={
- 'domain_name': 'example-test.com',
- },
- )
- self.org_integration = self.model.add_organization(self.org, self.user)
- self.login_as(self.user)
- self.integration_settings_path = 'sentry-api-0-organization-integrations'
- def load_page(self, url):
- self.browser.get(url)
- self.browser.wait_until_not('.loading-indicator')
- class OrganizationIntegrationSettingsTest(OrganizationIntegrationAcceptanceTestCase):
- """
- As a user(type?), I can setup, configure, and remove an integration.
- """
- # TODO(lb): Tests to be written
- # test_setup_new_integration_with_repository
- # test_setup_new_integration_with_issue_sync
- # test_remove_existing_integration_installation
- # test_update_legacy_integration
- # test_user_permissions_for_integration_settings
- # test_add_multiple_integrations_to_one_provider
- # TODO(lb): check issues details page and see that integration shows in linked issues
- def setUp(self):
- super(OrganizationIntegrationSettingsTest, self).setUp()
- self.org_integration_settings_path = u'/settings/{}/integrations/'.format(
- self.organization.slug)
- self.provider = mock.Mock()
- self.provider.key = 'example'
- self.provider.name = 'Example Installation'
- def test_can_create_new_integration(self):
- self.load_page(self.org_integration_settings_path)
- org_settings_page = OrganizationIntegrationSettingsPage(
- browser=self.browser
- )
- provider_element = org_settings_page.get_provider(self.provider)
- # assert installation rather than upgrade button
- assert provider_element.install_button.label == 'Install'
- assert provider_element.install_button.icon_href == '#icon-circle-add'
- integration_details_modal = org_settings_page.click_install_button(provider_element)
- assert integration_details_modal.add_button.label == 'Add %s' % self.provider.key
- assert integration_details_modal.title == '%s Integration' % self.provider.key.capitalize()
- integration_details_modal.add_button.click()
- org_settings_page.click_through_integration_setup(
- integration_details_modal,
- ExampleIntegrationSetupWindowElement,
- {'name': self.provider.name}
- )
- # provider_element might be rerendered
- provider_element = org_settings_page.get_provider(self.provider)
- installation_element = provider_element.get_installation_with_name(self.provider.name)
- assert installation_element
- assert Integration.objects.filter(
- provider=self.provider.key,
- external_id=self.provider.name
- ).exists()
|