test_organization_settings.py 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from __future__ import absolute_import
  2. from sentry.testutils import AcceptanceTestCase
  3. class OrganizationSettingsTest(AcceptanceTestCase):
  4. def setUp(self):
  5. super(OrganizationSettingsTest, self).setUp()
  6. self.user = self.create_user('foo@example.com')
  7. self.org = self.create_organization(
  8. name='Rowdy Tiger',
  9. owner=None,
  10. )
  11. self.team = self.create_team(organization=self.org, name='Mariachi Band')
  12. self.project = self.create_project(
  13. organization=self.org,
  14. teams=[self.team],
  15. name='Bengal',
  16. )
  17. self.create_member(
  18. user=self.user,
  19. organization=self.org,
  20. role='owner',
  21. teams=[self.team],
  22. )
  23. self.login_as(self.user)
  24. self.path = u'/organizations/{}/settings/'.format(self.org.slug)
  25. def load_organization_helper(self, snapshot_name=None):
  26. self.browser.wait_until_not('.loading-indicator')
  27. if snapshot_name is not None:
  28. self.browser.snapshot('organization settings -- ' + snapshot_name)
  29. assert self.browser.element_exists('.ref-organization-settings')
  30. def renders_2fa_setting(self):
  31. return self.browser.element_exists('#require2FA')
  32. def test_disabled_2fa_feature(self):
  33. user_owner = self.create_user('owner@example.com')
  34. organization = self.create_organization(name="Example", owner=user_owner)
  35. self.login_as(user_owner)
  36. path = '/organizations/%s/settings/' % organization.slug
  37. self.browser.get(path)
  38. self.load_organization_helper()
  39. assert not self.renders_2fa_setting()
  40. def test_renders_2fa_setting_for_owner(self):
  41. user_owner = self.create_user('owner@example.com')
  42. organization = self.create_organization(name="Example", owner=user_owner)
  43. self.login_as(user_owner)
  44. path = '/organizations/%s/settings/' % organization.slug
  45. with self.feature('organizations:require-2fa'):
  46. self.browser.get(path)
  47. self.load_organization_helper()
  48. assert self.renders_2fa_setting()
  49. def test_renders_2fa_setting_for_manager(self):
  50. user_manager = self.create_user('manager@gexample.com')
  51. organization = self.create_organization(
  52. name="Example", owner=self.create_user('owner@example.com'))
  53. self.create_member(organization=organization, user=user_manager, role='manager')
  54. self.login_as(user_manager)
  55. path = '/organizations/%s/settings/' % organization.slug
  56. with self.feature('organizations:require-2fa'):
  57. self.browser.get(path)
  58. self.load_organization_helper()
  59. assert self.renders_2fa_setting()
  60. def test_setting_2fa_without_2fa_enabled(self):
  61. user_owner = self.create_user('owner@example.com')
  62. organization = self.create_organization(name="Example", owner=user_owner)
  63. self.login_as(user_owner)
  64. path = '/organizations/%s/settings/' % organization.slug
  65. with self.feature('organizations:require-2fa'):
  66. self.browser.get(path)
  67. self.browser.wait_until_not('.loading-indicator')
  68. assert not self.browser.element_exists('.ref-organization-settings .error')
  69. self.browser.click('#require2FA')
  70. self.browser.wait_until('.modal')
  71. self.browser.click('.modal [data-test-id="confirm-modal"]')
  72. self.browser.wait_until_not('.modal')
  73. self.browser.wait_until('.ref-toast.ref-error')
  74. self.load_organization_helper("setting 2fa without 2fa enabled")