diff --git a/zerver/lib/actions.py b/zerver/lib/actions.py index 90ebe78f68..06b1dc4857 100644 --- a/zerver/lib/actions.py +++ b/zerver/lib/actions.py @@ -8157,6 +8157,23 @@ def do_remove_realm_domain( realm = realm_domain.realm domain = realm_domain.domain realm_domain.delete() + + RealmAuditLog.objects.create( + realm=realm, + acting_user=acting_user, + event_type=RealmAuditLog.REALM_DOMAIN_REMOVED, + event_time=timezone_now(), + extra_data=orjson.dumps( + { + "realm_domains": get_realm_domains(realm), + "removed_domain": { + "domain": realm_domain.domain, + "allow_subdomains": realm_domain.allow_subdomains, + }, + } + ).decode(), + ) + if RealmDomain.objects.filter(realm=realm).count() == 0 and realm.emails_restricted_to_domains: # If this was the last realm domain, we mark the realm as no # longer restricted to domain, because the feature doesn't do diff --git a/zerver/models.py b/zerver/models.py index b883a6885c..0100694996 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -4064,6 +4064,7 @@ class AbstractRealmAuditLog(models.Model): REALM_ORG_TYPE_CHANGED = 217 REALM_DOMAIN_ADDED = 218 REALM_DOMAIN_CHANGED = 219 + REALM_DOMAIN_REMOVED = 220 SUBSCRIPTION_CREATED = 301 SUBSCRIPTION_ACTIVATED = 302 diff --git a/zerver/tests/test_audit_log.py b/zerver/tests/test_audit_log.py index ac5e521e14..b81aefd51b 100644 --- a/zerver/tests/test_audit_log.py +++ b/zerver/tests/test_audit_log.py @@ -31,6 +31,7 @@ from zerver.lib.actions import ( do_reactivate_realm, do_reactivate_user, do_regenerate_api_key, + do_remove_realm_domain, do_rename_stream, do_set_realm_authentication_methods, do_set_realm_message_editing, @@ -707,3 +708,24 @@ class TestRealmAuditLog(ZulipTestCase): ).count(), 1, ) + + now = timezone_now() + do_remove_realm_domain(realm_domain, acting_user=user) + removed_domain = { + "domain": "zulip.org", + "allow_subdomains": True, + } + expected_extra_data = { + "realm_domains": initial_domains, + "removed_domain": removed_domain, + } + self.assertEqual( + RealmAuditLog.objects.filter( + realm=user.realm, + event_type=RealmAuditLog.REALM_DOMAIN_REMOVED, + event_time__gte=now, + acting_user=user, + extra_data=orjson.dumps(expected_extra_data).decode(), + ).count(), + 1, + )