mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
support: Add ability to update max daily invitations for realm.
Adds some validation for changing the realm's max invites via the support view so that it is not set below the default max for the realm's plan type, and so that if it's currently set to the default max it's not reset to that same value.
This commit is contained in:
committed by
Tim Abbott
parent
8911347cdb
commit
d708c3c039
@@ -24,6 +24,7 @@ from zerver.actions.message_send import (
|
||||
)
|
||||
from zerver.actions.realm_settings import (
|
||||
do_add_deactivated_redirect,
|
||||
do_change_realm_max_invites,
|
||||
do_change_realm_org_type,
|
||||
do_change_realm_permission_group_setting,
|
||||
do_change_realm_plan_type,
|
||||
@@ -1015,6 +1016,132 @@ class RealmTest(ZulipTestCase):
|
||||
self.assertEqual(realm_audit_log.acting_user, iago)
|
||||
self.assertEqual(realm.org_type, Realm.ORG_TYPES["government"]["id"])
|
||||
|
||||
def test_change_realm_max_invites(self) -> None:
|
||||
realm = get_realm("zulip")
|
||||
iago = self.example_user("iago")
|
||||
self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_SELF_HOSTED)
|
||||
self.assertEqual(realm.max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX)
|
||||
|
||||
do_change_realm_max_invites(realm, 1, acting_user=iago)
|
||||
realm = get_realm("zulip")
|
||||
realm_audit_log = RealmAuditLog.objects.filter(
|
||||
event_type=RealmAuditLog.REALM_PROPERTY_CHANGED
|
||||
).last()
|
||||
assert realm_audit_log is not None
|
||||
expected_extra_data = {
|
||||
"old_value": settings.INVITES_DEFAULT_REALM_DAILY_MAX,
|
||||
"new_value": 1,
|
||||
"property": "max_invites",
|
||||
}
|
||||
self.assertEqual(realm_audit_log.extra_data, expected_extra_data)
|
||||
self.assertEqual(realm_audit_log.acting_user, iago)
|
||||
self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_SELF_HOSTED)
|
||||
self.assertEqual(realm.max_invites, 1)
|
||||
|
||||
do_change_realm_max_invites(realm, 0, acting_user=iago)
|
||||
realm = get_realm("zulip")
|
||||
realm_audit_log = RealmAuditLog.objects.filter(
|
||||
event_type=RealmAuditLog.REALM_PROPERTY_CHANGED
|
||||
).last()
|
||||
assert realm_audit_log is not None
|
||||
expected_extra_data = {"old_value": 1, "new_value": None, "property": "max_invites"}
|
||||
self.assertEqual(realm_audit_log.extra_data, expected_extra_data)
|
||||
self.assertEqual(realm_audit_log.acting_user, iago)
|
||||
self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_SELF_HOSTED)
|
||||
self.assertEqual(realm.max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX)
|
||||
|
||||
realm.plan_type = Realm.PLAN_TYPE_PLUS
|
||||
realm.save()
|
||||
|
||||
do_change_realm_max_invites(realm, 0, acting_user=iago)
|
||||
realm = get_realm("zulip")
|
||||
realm_audit_log = RealmAuditLog.objects.filter(
|
||||
event_type=RealmAuditLog.REALM_PROPERTY_CHANGED
|
||||
).last()
|
||||
assert realm_audit_log is not None
|
||||
expected_extra_data = {
|
||||
"old_value": settings.INVITES_DEFAULT_REALM_DAILY_MAX,
|
||||
"new_value": Realm.INVITES_STANDARD_REALM_DAILY_MAX,
|
||||
"property": "max_invites",
|
||||
}
|
||||
self.assertEqual(realm_audit_log.extra_data, expected_extra_data)
|
||||
self.assertEqual(realm_audit_log.acting_user, iago)
|
||||
self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_PLUS)
|
||||
self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX)
|
||||
|
||||
realm.plan_type = Realm.PLAN_TYPE_LIMITED
|
||||
realm.save()
|
||||
|
||||
do_change_realm_max_invites(realm, 0, acting_user=iago)
|
||||
realm = get_realm("zulip")
|
||||
realm_audit_log = RealmAuditLog.objects.filter(
|
||||
event_type=RealmAuditLog.REALM_PROPERTY_CHANGED
|
||||
).last()
|
||||
assert realm_audit_log is not None
|
||||
expected_extra_data = {
|
||||
"old_value": Realm.INVITES_STANDARD_REALM_DAILY_MAX,
|
||||
"new_value": settings.INVITES_DEFAULT_REALM_DAILY_MAX,
|
||||
"property": "max_invites",
|
||||
}
|
||||
self.assertEqual(realm_audit_log.extra_data, expected_extra_data)
|
||||
self.assertEqual(realm_audit_log.acting_user, iago)
|
||||
self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_LIMITED)
|
||||
self.assertEqual(realm.max_invites, settings.INVITES_DEFAULT_REALM_DAILY_MAX)
|
||||
|
||||
realm.plan_type = Realm.PLAN_TYPE_STANDARD
|
||||
realm.save()
|
||||
|
||||
do_change_realm_max_invites(realm, 0, acting_user=iago)
|
||||
realm = get_realm("zulip")
|
||||
realm_audit_log = RealmAuditLog.objects.filter(
|
||||
event_type=RealmAuditLog.REALM_PROPERTY_CHANGED
|
||||
).last()
|
||||
assert realm_audit_log is not None
|
||||
expected_extra_data = {
|
||||
"old_value": settings.INVITES_DEFAULT_REALM_DAILY_MAX,
|
||||
"new_value": Realm.INVITES_STANDARD_REALM_DAILY_MAX,
|
||||
"property": "max_invites",
|
||||
}
|
||||
self.assertEqual(realm_audit_log.extra_data, expected_extra_data)
|
||||
self.assertEqual(realm_audit_log.acting_user, iago)
|
||||
self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD)
|
||||
self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX)
|
||||
|
||||
realm.plan_type = Realm.PLAN_TYPE_STANDARD_FREE
|
||||
realm.save()
|
||||
|
||||
do_change_realm_max_invites(realm, 50000, acting_user=iago)
|
||||
realm = get_realm("zulip")
|
||||
realm_audit_log = RealmAuditLog.objects.filter(
|
||||
event_type=RealmAuditLog.REALM_PROPERTY_CHANGED
|
||||
).last()
|
||||
assert realm_audit_log is not None
|
||||
expected_extra_data = {
|
||||
"old_value": Realm.INVITES_STANDARD_REALM_DAILY_MAX,
|
||||
"new_value": 50000,
|
||||
"property": "max_invites",
|
||||
}
|
||||
self.assertEqual(realm_audit_log.extra_data, expected_extra_data)
|
||||
self.assertEqual(realm_audit_log.acting_user, iago)
|
||||
self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD_FREE)
|
||||
self.assertEqual(realm.max_invites, 50000)
|
||||
|
||||
do_change_realm_max_invites(realm, 0, acting_user=iago)
|
||||
realm = get_realm("zulip")
|
||||
realm_audit_log = RealmAuditLog.objects.filter(
|
||||
event_type=RealmAuditLog.REALM_PROPERTY_CHANGED
|
||||
).last()
|
||||
assert realm_audit_log is not None
|
||||
expected_extra_data = {
|
||||
"old_value": 50000,
|
||||
"new_value": Realm.INVITES_STANDARD_REALM_DAILY_MAX,
|
||||
"property": "max_invites",
|
||||
}
|
||||
self.assertEqual(realm_audit_log.extra_data, expected_extra_data)
|
||||
self.assertEqual(realm_audit_log.acting_user, iago)
|
||||
self.assertEqual(realm.plan_type, Realm.PLAN_TYPE_STANDARD_FREE)
|
||||
self.assertEqual(realm.max_invites, Realm.INVITES_STANDARD_REALM_DAILY_MAX)
|
||||
|
||||
@skipUnless(settings.ZILENCER_ENABLED, "requires zilencer")
|
||||
def test_change_realm_plan_type(self) -> None:
|
||||
realm = get_realm("zulip")
|
||||
|
||||
Reference in New Issue
Block a user