test_organization_security_privacy.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from __future__ import absolute_import
  2. from sentry.utils import json
  3. from sentry.testutils import AcceptanceTestCase
  4. class OrganizationSecurityAndPrivacyTest(AcceptanceTestCase):
  5. def setUp(self):
  6. super(OrganizationSecurityAndPrivacyTest, self).setUp()
  7. self.user = self.create_user("owner@example.com")
  8. self.org = self.create_organization(owner=self.user, name="Rowdy Tiger")
  9. self.login_as(self.user)
  10. self.path = "/settings/{}/security-and-privacy/".format(self.org.slug)
  11. def load_organization_helper(self, snapshot_name=None):
  12. self.browser.wait_until_not(".loading-indicator")
  13. if snapshot_name is not None:
  14. self.browser.snapshot("organization settings security and privacy -- " + snapshot_name)
  15. assert self.browser.wait_until(
  16. '[data-test-id="organization-settings-security-and-privacy"]'
  17. )
  18. def renders_2fa_setting(self):
  19. return self.browser.wait_until("#require2FA")
  20. def test_renders_2fa_setting_for_owner(self):
  21. self.browser.get(self.path)
  22. self.load_organization_helper()
  23. assert self.renders_2fa_setting()
  24. def test_renders_2fa_setting_for_manager(self):
  25. manager_user = self.create_user("manager@example.com")
  26. self.create_member(organization=self.org, user=manager_user, role="manager")
  27. self.login_as(manager_user)
  28. self.browser.get(self.path)
  29. self.load_organization_helper()
  30. assert self.renders_2fa_setting()
  31. def test_setting_2fa_without_2fa_enabled(self):
  32. self.browser.get(self.path)
  33. self.browser.wait_until_not(".loading-indicator")
  34. assert not self.browser.element_exists(
  35. '[data-test-id="organization-settings-security-and-privacy"] .error'
  36. )
  37. self.browser.click("#require2FA")
  38. self.browser.wait_until(".modal")
  39. self.browser.click('.modal [data-test-id="confirm-button"]')
  40. self.browser.wait_until_not(".modal")
  41. self.browser.wait_until_test_id("toast-error")
  42. self.load_organization_helper("setting 2fa without 2fa enabled")
  43. def test_renders_advanced_data_scrubbing_without_rule(self):
  44. self.browser.get(self.path)
  45. self.browser.wait_until_not(".loading-indicator")
  46. assert self.browser.wait_until('[data-test-id="advanced-data-scrubbing"]')
  47. self.load_organization_helper("advanced-data-scrubbing-without-rule")
  48. def test_renders_advanced_data_scrubbing_with_rules(self):
  49. relayPiiConfig = json.dumps(
  50. {
  51. "rules": {
  52. "0": {
  53. "type": "password",
  54. "redaction": {"method": "replace", "text": "Scrubbed"},
  55. },
  56. "1": {"type": "creditcard", "redaction": {"method": "mask"}},
  57. },
  58. "applications": {"password": ["0"], "$message": ["1"]},
  59. }
  60. )
  61. self.org.update_option("sentry:relay_pii_config", relayPiiConfig)
  62. self.browser.get(self.path)
  63. self.browser.wait_until_not(".loading-indicator")
  64. assert self.browser.wait_until('[data-test-id="advanced-data-scrubbing"]')
  65. assert self.browser.wait_until('[data-test-id="advanced-data-scrubbing-rules"]')
  66. self.load_organization_helper("advanced-data-scrubbing-with-rules")
  67. def test_renders_advanced_data_scrubbing_add_rule_modal(self):
  68. self.browser.get(self.path)
  69. self.browser.wait_until_not(".loading-indicator")
  70. assert self.browser.wait_until('[data-test-id="advanced-data-scrubbing"]')
  71. self.browser.click_when_visible("[aria-label='Add Rule']")
  72. self.load_organization_helper("advanced-data-scrubbing-add-rule-modal")