mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	test_events: Loop over stream permission group settings.
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							173c09e32b
						
					
				
				
					commit
					3f5fe756bb
				
			@@ -4536,73 +4536,10 @@ class SubscribeActionTest(BaseAction):
 | 
				
			|||||||
            do_change_stream_message_retention_days(stream, self.example_user("hamlet"), -1)
 | 
					            do_change_stream_message_retention_days(stream, self.example_user("hamlet"), -1)
 | 
				
			||||||
        check_stream_update("events[0]", events[0])
 | 
					        check_stream_update("events[0]", events[0])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        moderators_group = NamedUserGroup.objects.get(
 | 
					        for setting_name in Stream.stream_permission_group_settings:
 | 
				
			||||||
            name=SystemGroups.MODERATORS,
 | 
					            self.do_test_subscribe_events_for_stream_permission_group_setting(
 | 
				
			||||||
            is_system_group=True,
 | 
					                setting_name, stream, iago, include_subscribers
 | 
				
			||||||
            realm=self.user_profile.realm,
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
        with self.verify_action(include_subscribers=include_subscribers, num_events=1) as events:
 | 
					 | 
				
			||||||
            do_change_stream_group_based_setting(
 | 
					 | 
				
			||||||
                stream,
 | 
					 | 
				
			||||||
                "can_remove_subscribers_group",
 | 
					 | 
				
			||||||
                moderators_group,
 | 
					 | 
				
			||||||
                acting_user=iago,
 | 
					 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        check_stream_update("events[0]", events[0])
 | 
					 | 
				
			||||||
        self.assertEqual(events[0]["value"], moderators_group.id)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        setting_group = self.create_or_update_anonymous_group_for_setting(
 | 
					 | 
				
			||||||
            [self.user_profile],
 | 
					 | 
				
			||||||
            [moderators_group],
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
        with self.verify_action(include_subscribers=include_subscribers, num_events=1) as events:
 | 
					 | 
				
			||||||
            do_change_stream_group_based_setting(
 | 
					 | 
				
			||||||
                stream,
 | 
					 | 
				
			||||||
                "can_remove_subscribers_group",
 | 
					 | 
				
			||||||
                setting_group,
 | 
					 | 
				
			||||||
                acting_user=iago,
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        check_stream_update("events[0]", events[0])
 | 
					 | 
				
			||||||
        self.assertEqual(
 | 
					 | 
				
			||||||
            events[0]["value"],
 | 
					 | 
				
			||||||
            AnonymousSettingGroupDict(
 | 
					 | 
				
			||||||
                direct_members=[self.user_profile.id], direct_subgroups=[moderators_group.id]
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        moderators_group = NamedUserGroup.objects.get(
 | 
					 | 
				
			||||||
            name=SystemGroups.MODERATORS,
 | 
					 | 
				
			||||||
            is_system_group=True,
 | 
					 | 
				
			||||||
            realm=self.user_profile.realm,
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
        with self.verify_action(include_subscribers=include_subscribers, num_events=1) as events:
 | 
					 | 
				
			||||||
            do_change_stream_group_based_setting(
 | 
					 | 
				
			||||||
                stream,
 | 
					 | 
				
			||||||
                "can_administer_channel_group",
 | 
					 | 
				
			||||||
                moderators_group,
 | 
					 | 
				
			||||||
                acting_user=iago,
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        check_stream_update("events[0]", events[0])
 | 
					 | 
				
			||||||
        self.assertEqual(events[0]["value"], moderators_group.id)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        setting_group = self.create_or_update_anonymous_group_for_setting(
 | 
					 | 
				
			||||||
            [self.user_profile],
 | 
					 | 
				
			||||||
            [moderators_group],
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
        with self.verify_action(include_subscribers=include_subscribers, num_events=1) as events:
 | 
					 | 
				
			||||||
            do_change_stream_group_based_setting(
 | 
					 | 
				
			||||||
                stream,
 | 
					 | 
				
			||||||
                "can_administer_channel_group",
 | 
					 | 
				
			||||||
                setting_group,
 | 
					 | 
				
			||||||
                acting_user=iago,
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
        check_stream_update("events[0]", events[0])
 | 
					 | 
				
			||||||
        self.assertEqual(
 | 
					 | 
				
			||||||
            events[0]["value"],
 | 
					 | 
				
			||||||
            AnonymousSettingGroupDict(
 | 
					 | 
				
			||||||
                direct_members=[self.user_profile.id], direct_subgroups=[moderators_group.id]
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Subscribe to a totally new invite-only stream, so it's just Hamlet on it
 | 
					        # Subscribe to a totally new invite-only stream, so it's just Hamlet on it
 | 
				
			||||||
        stream = self.make_stream("private", self.user_profile.realm, invite_only=True)
 | 
					        stream = self.make_stream("private", self.user_profile.realm, invite_only=True)
 | 
				
			||||||
@@ -4715,6 +4652,43 @@ class SubscribeActionTest(BaseAction):
 | 
				
			|||||||
            )
 | 
					            )
 | 
				
			||||||
        check_subscription_remove("events[0]", events[0])
 | 
					        check_subscription_remove("events[0]", events[0])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def do_test_subscribe_events_for_stream_permission_group_setting(
 | 
				
			||||||
 | 
					        self, setting_name: str, stream: Stream, acting_user: UserProfile, include_subscribers: bool
 | 
				
			||||||
 | 
					    ) -> None:
 | 
				
			||||||
 | 
					        moderators_group = NamedUserGroup.objects.get(
 | 
				
			||||||
 | 
					            name=SystemGroups.MODERATORS,
 | 
				
			||||||
 | 
					            is_system_group=True,
 | 
				
			||||||
 | 
					            realm=self.user_profile.realm,
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        with self.verify_action(include_subscribers=include_subscribers, num_events=1) as events:
 | 
				
			||||||
 | 
					            do_change_stream_group_based_setting(
 | 
				
			||||||
 | 
					                stream,
 | 
				
			||||||
 | 
					                setting_name,
 | 
				
			||||||
 | 
					                moderators_group,
 | 
				
			||||||
 | 
					                acting_user=acting_user,
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        check_stream_update("events[0]", events[0])
 | 
				
			||||||
 | 
					        self.assertEqual(events[0]["value"], moderators_group.id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        setting_group = self.create_or_update_anonymous_group_for_setting(
 | 
				
			||||||
 | 
					            [self.user_profile],
 | 
				
			||||||
 | 
					            [moderators_group],
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        with self.verify_action(include_subscribers=include_subscribers, num_events=1) as events:
 | 
				
			||||||
 | 
					            do_change_stream_group_based_setting(
 | 
				
			||||||
 | 
					                stream,
 | 
				
			||||||
 | 
					                setting_name,
 | 
				
			||||||
 | 
					                setting_group,
 | 
				
			||||||
 | 
					                acting_user=acting_user,
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        check_stream_update("events[0]", events[0])
 | 
				
			||||||
 | 
					        self.assertEqual(
 | 
				
			||||||
 | 
					            events[0]["value"],
 | 
				
			||||||
 | 
					            AnonymousSettingGroupDict(
 | 
				
			||||||
 | 
					                direct_members=[self.user_profile.id], direct_subgroups=[moderators_group.id]
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def test_user_access_events_on_changing_subscriptions(self) -> None:
 | 
					    def test_user_access_events_on_changing_subscriptions(self) -> None:
 | 
				
			||||||
        self.set_up_db_for_testing_user_access()
 | 
					        self.set_up_db_for_testing_user_access()
 | 
				
			||||||
        self.user_profile = self.example_user("polonius")
 | 
					        self.user_profile = self.example_user("polonius")
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user