mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	tests: Add a helper function to create anonymous groups.
This commit adds a new helper function to create or update a UserGroup object for a setting. We could have used existing update_or_create_user_group_for_setting but that also validates user IDs and subgroup IDs which we can skip in tests.
This commit is contained in:
		@@ -107,6 +107,7 @@ from zerver.models import (
 | 
			
		||||
    Recipient,
 | 
			
		||||
    Stream,
 | 
			
		||||
    Subscription,
 | 
			
		||||
    UserGroup,
 | 
			
		||||
    UserGroupMembership,
 | 
			
		||||
    UserMessage,
 | 
			
		||||
    UserProfile,
 | 
			
		||||
@@ -1977,6 +1978,23 @@ Output:
 | 
			
		||||
            realm, "can_access_all_users_group", members_group, acting_user=None
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def create_or_update_anonymous_group_for_setting(
 | 
			
		||||
        self,
 | 
			
		||||
        direct_members: List[UserProfile],
 | 
			
		||||
        direct_subgroups: List[NamedUserGroup],
 | 
			
		||||
        existing_setting_group: Optional[UserGroup] = None,
 | 
			
		||||
    ) -> UserGroup:
 | 
			
		||||
        realm = get_realm("zulip")
 | 
			
		||||
        if existing_setting_group is not None:
 | 
			
		||||
            existing_setting_group.direct_members.set(direct_members)
 | 
			
		||||
            existing_setting_group.direct_subgroups.set(direct_subgroups)
 | 
			
		||||
            return existing_setting_group
 | 
			
		||||
 | 
			
		||||
        user_group = UserGroup.objects.create(realm=realm)
 | 
			
		||||
        user_group.direct_members.set(direct_members)
 | 
			
		||||
        user_group.direct_subgroups.set(direct_subgroups)
 | 
			
		||||
        return user_group
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ZulipTestCase(ZulipTestCaseMixin, TestCase):
 | 
			
		||||
    @contextmanager
 | 
			
		||||
 
 | 
			
		||||
@@ -81,7 +81,6 @@ from zerver.models import (
 | 
			
		||||
    RealmPlayground,
 | 
			
		||||
    Recipient,
 | 
			
		||||
    Subscription,
 | 
			
		||||
    UserGroup,
 | 
			
		||||
    UserProfile,
 | 
			
		||||
)
 | 
			
		||||
from zerver.models.groups import SystemGroups
 | 
			
		||||
@@ -1347,9 +1346,7 @@ class TestRealmAuditLog(ZulipTestCase):
 | 
			
		||||
            name=SystemGroups.MODERATORS, realm=user_group.realm, is_system_group=True
 | 
			
		||||
        )
 | 
			
		||||
        old_group = user_group.can_mention_group
 | 
			
		||||
        new_group = UserGroup.objects.create(realm=user_group.realm)
 | 
			
		||||
        new_group.direct_members.set([hamlet.id])
 | 
			
		||||
        new_group.direct_subgroups.set([moderators_group.id])
 | 
			
		||||
        new_group = self.create_or_update_anonymous_group_for_setting([hamlet], [moderators_group])
 | 
			
		||||
 | 
			
		||||
        now = timezone_now()
 | 
			
		||||
        do_change_user_group_permission_setting(
 | 
			
		||||
@@ -1382,9 +1379,9 @@ class TestRealmAuditLog(ZulipTestCase):
 | 
			
		||||
        # Since the old setting value was a anonymous group, we just update the
 | 
			
		||||
        # members and subgroups of the already existing UserGroup instead of creating
 | 
			
		||||
        # a new UserGroup object to keep this consistent with the actual code.
 | 
			
		||||
        new_group = user_group.can_mention_group
 | 
			
		||||
        new_group.direct_members.set([othello.id])
 | 
			
		||||
        new_group.direct_subgroups.set([moderators_group.id])
 | 
			
		||||
        new_group = self.create_or_update_anonymous_group_for_setting(
 | 
			
		||||
            [othello], [moderators_group], existing_setting_group=user_group.can_mention_group
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        now = timezone_now()
 | 
			
		||||
        do_change_user_group_permission_setting(
 | 
			
		||||
 
 | 
			
		||||
@@ -232,7 +232,6 @@ from zerver.models import (
 | 
			
		||||
    RealmUserDefault,
 | 
			
		||||
    Service,
 | 
			
		||||
    Stream,
 | 
			
		||||
    UserGroup,
 | 
			
		||||
    UserMessage,
 | 
			
		||||
    UserPresence,
 | 
			
		||||
    UserProfile,
 | 
			
		||||
@@ -1776,9 +1775,9 @@ class NormalActionsTest(BaseAction):
 | 
			
		||||
        moderators_group = NamedUserGroup.objects.get(
 | 
			
		||||
            name=SystemGroups.MODERATORS, realm=self.user_profile.realm, is_system_group=True
 | 
			
		||||
        )
 | 
			
		||||
        user_group = UserGroup.objects.create(realm=self.user_profile.realm)
 | 
			
		||||
        user_group.direct_members.set([othello])
 | 
			
		||||
        user_group.direct_subgroups.set([moderators_group])
 | 
			
		||||
        user_group = self.create_or_update_anonymous_group_for_setting(
 | 
			
		||||
            [othello], [moderators_group]
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        with self.verify_action() as events:
 | 
			
		||||
            check_add_user_group(
 | 
			
		||||
@@ -1821,9 +1820,9 @@ class NormalActionsTest(BaseAction):
 | 
			
		||||
        check_user_group_update("events[0]", events[0], "can_mention_group")
 | 
			
		||||
        self.assertEqual(events[0]["data"]["can_mention_group"], moderators_group.id)
 | 
			
		||||
 | 
			
		||||
        setting_group = UserGroup.objects.create(realm=self.user_profile.realm)
 | 
			
		||||
        setting_group.direct_members.set([othello.id])
 | 
			
		||||
        setting_group.direct_subgroups.set([moderators_group.id])
 | 
			
		||||
        setting_group = self.create_or_update_anonymous_group_for_setting(
 | 
			
		||||
            [othello], [moderators_group]
 | 
			
		||||
        )
 | 
			
		||||
        with self.verify_action() as events:
 | 
			
		||||
            do_change_user_group_permission_setting(
 | 
			
		||||
                backend,
 | 
			
		||||
 
 | 
			
		||||
@@ -17,7 +17,7 @@ from zerver.lib.test_classes import ZulipTestCase
 | 
			
		||||
from zerver.lib.test_helpers import queries_captured
 | 
			
		||||
from zerver.lib.topic import TOPIC_NAME
 | 
			
		||||
from zerver.lib.utils import assert_is_not_none
 | 
			
		||||
from zerver.models import Message, NamedUserGroup, Realm, UserGroup, UserProfile, UserTopic
 | 
			
		||||
from zerver.models import Message, NamedUserGroup, Realm, UserProfile, UserTopic
 | 
			
		||||
from zerver.models.groups import SystemGroups
 | 
			
		||||
from zerver.models.realms import EditTopicPolicyEnum, WildcardMentionPolicyEnum, get_realm
 | 
			
		||||
from zerver.models.streams import get_stream
 | 
			
		||||
@@ -1599,9 +1599,9 @@ class EditMessageTest(ZulipTestCase):
 | 
			
		||||
 | 
			
		||||
        # Test all the cases when can_mention_group is not a named user group.
 | 
			
		||||
        content = "Test mentioning user group @*leadership*"
 | 
			
		||||
        user_group = UserGroup.objects.create(realm=iago.realm)
 | 
			
		||||
        user_group.direct_members.set([othello])
 | 
			
		||||
        user_group.direct_subgroups.set([moderators_system_group])
 | 
			
		||||
        user_group = self.create_or_update_anonymous_group_for_setting(
 | 
			
		||||
            [othello], [moderators_system_group]
 | 
			
		||||
        )
 | 
			
		||||
        leadership.can_mention_group = user_group
 | 
			
		||||
        leadership.save()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,6 @@ from zerver.models import (
 | 
			
		||||
    Recipient,
 | 
			
		||||
    Stream,
 | 
			
		||||
    Subscription,
 | 
			
		||||
    UserGroup,
 | 
			
		||||
    UserMessage,
 | 
			
		||||
    UserProfile,
 | 
			
		||||
)
 | 
			
		||||
@@ -2228,9 +2227,9 @@ class StreamMessagesTest(ZulipTestCase):
 | 
			
		||||
 | 
			
		||||
        # Test all the cases when can_mention_group is not a named user group.
 | 
			
		||||
        content = "Test mentioning user group @*leadership*"
 | 
			
		||||
        user_group = UserGroup.objects.create(realm=iago.realm)
 | 
			
		||||
        user_group.direct_members.set([othello])
 | 
			
		||||
        user_group.direct_subgroups.set([moderators_system_group])
 | 
			
		||||
        user_group = self.create_or_update_anonymous_group_for_setting(
 | 
			
		||||
            [othello], [moderators_system_group]
 | 
			
		||||
        )
 | 
			
		||||
        leadership.can_mention_group = user_group
 | 
			
		||||
        leadership.save()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -105,10 +105,9 @@ class UserGroupTestCase(ZulipTestCase):
 | 
			
		||||
        self.assertEqual(user_groups[9]["can_mention_group"], everyone_group.id)
 | 
			
		||||
 | 
			
		||||
        othello = self.example_user("othello")
 | 
			
		||||
        setting_group = UserGroup.objects.create(realm=realm)
 | 
			
		||||
        setting_group.direct_members.set([othello])
 | 
			
		||||
        setting_group.direct_subgroups.set([admins_system_group])
 | 
			
		||||
 | 
			
		||||
        setting_group = self.create_or_update_anonymous_group_for_setting(
 | 
			
		||||
            [othello], [admins_system_group]
 | 
			
		||||
        )
 | 
			
		||||
        new_user_group = check_add_user_group(
 | 
			
		||||
            realm,
 | 
			
		||||
            "newgroup2",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user