diff --git a/zerver/lib/events.py b/zerver/lib/events.py index 9531236841..8b7dc3cf17 100644 --- a/zerver/lib/events.py +++ b/zerver/lib/events.py @@ -314,6 +314,10 @@ def apply_events(state, events, user_profile): elif event['type'] == "realm_domains": if event['op'] == 'add': state['realm_domains'].append(event['alias']) + elif event['op'] == 'change': + for realm_domain in state['realm_domains']: + if realm_domain['domain'] == event['alias']['domain']: + realm_domain['allow_subdomains'] = event['alias']['allow_subdomains'] elif event['op'] == 'remove': state['realm_domains'] = [alias for alias in state['realm_domains'] if alias['domain'] != event['domain']] elif event['type'] == "realm_emoji": diff --git a/zerver/tests/test_events.py b/zerver/tests/test_events.py index 7a8bb1171a..4366880532 100644 --- a/zerver/tests/test_events.py +++ b/zerver/tests/test_events.py @@ -59,6 +59,7 @@ from zerver.lib.actions import ( do_change_pm_content_in_desktop_notifications, do_change_enable_digest_emails, do_add_realm_alias, + do_change_realm_alias, do_remove_realm_alias, ) from zerver.lib.events import ( @@ -832,10 +833,22 @@ class EventsRegisterTest(ZulipTestCase): schema_checker = check_dict([ ('type', equals('realm_domains')), - ('op', equals('remove')), - ('domain', check_string), + ('op', equals('change')), + ('alias', check_dict([ + ('domain', equals('zulip.org')), + ('allow_subdomains', equals(True)), + ])), ]) alias = RealmAlias.objects.get(realm=realm, domain='zulip.org') + events = self.do_test(lambda: do_change_realm_alias(alias, True)) + error = schema_checker('events[0]', events[0]) + self.assert_on_error(error) + + schema_checker = check_dict([ + ('type', equals('realm_domains')), + ('op', equals('remove')), + ('domain', equals('zulip.org')), + ]) events = self.do_test(lambda: do_remove_realm_alias(alias)) error = schema_checker('events[0]', events[0]) self.assert_on_error(error)