test_manager.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import pytest
  2. from django.utils import timezone
  3. from sentry import audit_log
  4. from sentry.audit_log import (
  5. AuditLogEvent,
  6. AuditLogEventManager,
  7. AuditLogEventNotRegistered,
  8. DuplicateAuditLogEvent,
  9. )
  10. from sentry.models.auditlogentry import AuditLogEntry
  11. from sentry.testutils.cases import TestCase
  12. from sentry.testutils.silo import control_silo_test
  13. @control_silo_test
  14. class AuditLogEventManagerTest(TestCase):
  15. def test_audit_log_manager(self):
  16. test_manager = AuditLogEventManager()
  17. test_manager.add(
  18. AuditLogEvent(
  19. event_id=500,
  20. name="TEST_LOG_ENTRY",
  21. api_name="test-log.entry",
  22. template="test member {email} is {role}",
  23. )
  24. )
  25. log_event = test_manager.get(event_id=500)
  26. log_entry = AuditLogEntry.objects.create(
  27. organization_id=self.organization.id,
  28. event=audit_log.get_event_id("MEMBER_INVITE"),
  29. actor=self.user,
  30. datetime=timezone.now(),
  31. data={"email": "my_email@mail.com", "role": "admin"},
  32. )
  33. assert test_manager.get_event_id(name="TEST_LOG_ENTRY") == 500
  34. assert "test-log.entry" in test_manager.get_api_names()
  35. assert test_manager.get_event_id_from_api_name("test-log.entry") == 500
  36. assert log_event.render(log_entry) == "test member my_email@mail.com is admin"
  37. def test_duplicate_event_id(self):
  38. test_manager = AuditLogEventManager()
  39. test_manager.add(
  40. AuditLogEvent(
  41. event_id=500,
  42. name="TEST_LOG_ENTRY",
  43. api_name="test-log.entry",
  44. template="test member {email} is {role}",
  45. )
  46. )
  47. with pytest.raises(DuplicateAuditLogEvent):
  48. test_manager.add(
  49. AuditLogEvent(
  50. event_id=500,
  51. name="TEST_DUPLICATE",
  52. api_name="test.duplicate",
  53. template="test duplicate",
  54. )
  55. )
  56. assert test_manager.get_event_id(name="TEST_LOG_ENTRY") == 500
  57. with pytest.raises(AuditLogEventNotRegistered):
  58. test_manager.get_event_id(name="TEST_DUPLICATE")
  59. def test_duplicate_event_name(self):
  60. test_manager = AuditLogEventManager()
  61. test_manager.add(
  62. AuditLogEvent(
  63. event_id=500,
  64. name="TEST_LOG_ENTRY",
  65. api_name="test-log.entry",
  66. template="test member {email} is {role}",
  67. )
  68. )
  69. with pytest.raises(DuplicateAuditLogEvent):
  70. test_manager.add(
  71. AuditLogEvent(
  72. event_id=501,
  73. name="TEST_LOG_ENTRY",
  74. api_name="test.duplicate",
  75. template="test duplicate",
  76. )
  77. )
  78. assert test_manager.get_event_id(name="TEST_LOG_ENTRY") == 500
  79. assert "test.duplicate" not in test_manager.get_api_names()
  80. with pytest.raises(AuditLogEventNotRegistered):
  81. test_manager.get(501)
  82. def test_duplicate_api_name(self):
  83. test_manager = AuditLogEventManager()
  84. test_manager.add(
  85. AuditLogEvent(
  86. event_id=500,
  87. name="TEST_LOG_ENTRY",
  88. api_name="test-log.entry",
  89. template="test member {email} is {role}",
  90. )
  91. )
  92. with pytest.raises(DuplicateAuditLogEvent):
  93. test_manager.add(
  94. AuditLogEvent(
  95. event_id=501,
  96. name="TEST_DUPLICATE",
  97. api_name="test-log.entry",
  98. template="test duplicate",
  99. )
  100. )
  101. assert test_manager.get_event_id_from_api_name(api_name="test-log.entry") == 500
  102. with pytest.raises(AuditLogEventNotRegistered):
  103. test_manager.get(501)