def test_two_sessions_one_leave(self): # first session joins users = utils.get_users_in_room(BaseTest.ROOM_ID, skip_cache=True) self.assertNotIn(BaseTest.USER_ID, users.keys()) act = self.activity_for_join() OnJoinHooks.join_room((act, as_parser(act))) users = utils.get_users_in_room(BaseTest.ROOM_ID, skip_cache=True) self.assertIn(BaseTest.USER_ID, users.keys()) # second session joins self.env.request = BaseTest.Request(SESSION_ID_TWO) environ.env.request = self.env.request OnJoinHooks.join_room((act, as_parser(act))) room_sids = self.db.get_rooms_with_sid(user_id=BaseTest.USER_ID) self.assertIn(SESSION_ID_ONE, room_sids.keys()) self.assertIn(SESSION_ID_TWO, room_sids.keys()) # second session leaves act = self.act_leave() users = utils.get_users_in_room(BaseTest.ROOM_ID, skip_cache=True) self.assertIn(BaseTest.USER_ID, users.keys()) OnLeaveHooks.leave_room((act, as_parser(act))) users = utils.get_users_in_room(BaseTest.ROOM_ID, skip_cache=True) self.assertIn(BaseTest.USER_ID, users.keys()) room_sids = self.db.get_rooms_with_sid(user_id=BaseTest.USER_ID) self.assertNotIn(SESSION_ID_TWO, room_sids.keys()) self.assertIn(SESSION_ID_ONE, room_sids.keys()) # first session leaves self.env.request = BaseTest.Request(SESSION_ID_ONE) environ.env.request = self.env.request act = self.activity_for_leave() OnLeaveHooks.leave_room((act, as_parser(act))) room_sids = self.db.get_rooms_with_sid(user_id=BaseTest.USER_ID) self.assertNotIn(SESSION_ID_TWO, room_sids.keys()) self.assertNotIn(SESSION_ID_ONE, room_sids.keys()) users = utils.get_users_in_room(BaseTest.ROOM_ID, skip_cache=True) self.assertNotIn(BaseTest.USER_ID, users.keys())
def setUp(self): self.set_up_env('sqlite') self.env.stats = MockStatsd() self.env.auth = AllowAllAuth() self.env.capture_exception = lambda x: False self.env.observer = EventEmitter() self.env.request = BaseTest.Request(SESSION_ID_ONE) environ.env.request = self.env.request self.db.create_channel(BaseTest.CHANNEL_NAME, BaseTest.CHANNEL_ID, BaseTest.USER_ID) self.db.create_room(BaseTest.ROOM_NAME, BaseTest.ROOM_ID, BaseTest.CHANNEL_ID, BaseTest.USER_ID, BaseTest.USER_NAME)