From 571bb62e3d1d2bded27553487329eceb112ac390 Mon Sep 17 00:00:00 2001 From: sahil839 Date: Tue, 1 Sep 2020 11:16:12 +0530 Subject: [PATCH] events: Update subscriber list on peer_add for unsubscribed streams. We update the subscriber list on peer_add event for unsubscribed streams as well. --- zerver/lib/events.py | 2 +- zerver/tests/test_events.py | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/zerver/lib/events.py b/zerver/lib/events.py index 5c225e123f..ee5263de32 100644 --- a/zerver/lib/events.py +++ b/zerver/lib/events.py @@ -719,7 +719,7 @@ def apply_event(state: Dict[str, Any], elif event['op'] == 'peer_add': stream_ids = set(event["stream_ids"]) user_ids = set(event["user_ids"]) - for sub_dict in [state["subscriptions"], state["never_subscribed"]]: + for sub_dict in [state["subscriptions"], state['unsubscribed'], state["never_subscribed"]]: for sub in sub_dict: if sub["stream_id"] in stream_ids: subscribers = set(sub["subscribers"]) | user_ids diff --git a/zerver/tests/test_events.py b/zerver/tests/test_events.py index 487a13a2d8..5427ee4d52 100644 --- a/zerver/tests/test_events.py +++ b/zerver/tests/test_events.py @@ -1884,7 +1884,14 @@ class SubscribeActionTest(BaseAction): 'test_stream', ) - self.subscribe(self.example_user("iago"), "test_stream") + # Subscribe other user to test 'peer_add' event flow for unsubscribed stream. + action = lambda: self.subscribe(self.example_user("iago"), "test_stream") + events = self.verify_action( + action, + event_types=["subscription"], + include_subscribers=include_subscribers, + state_change_expected=include_subscribers) + check_subscription_peer_add('events[0]', events[0]) # Remove the user to test 'peer_remove' event flow for unsubscribed stream. action = lambda: bulk_remove_subscriptions(