|
|
@@ -363,6 +363,45 @@ class UserDirectoryTestCase(unittest.HomeserverTestCase): |
|
|
|
self.assertEqual(len(s["results"]), 1) |
|
|
|
self.assertEqual(s["results"][0]["user_id"], user) |
|
|
|
|
|
|
|
def test_process_join_after_server_leaves_room(self) -> None: |
|
|
|
alice = self.register_user("alice", "pass") |
|
|
|
alice_token = self.login(alice, "pass") |
|
|
|
bob = self.register_user("bob", "pass") |
|
|
|
bob_token = self.login(bob, "pass") |
|
|
|
|
|
|
|
# Alice makes two rooms. Bob joins one of them. |
|
|
|
room1 = self.helper.create_room_as(alice, tok=alice_token) |
|
|
|
room2 = self.helper.create_room_as(alice, tok=alice_token) |
|
|
|
print("room1=", room1) |
|
|
|
print("room2=", room2) |
|
|
|
self.helper.join(room1, bob, tok=bob_token) |
|
|
|
|
|
|
|
# The user sharing tables should have been updated. |
|
|
|
public1 = self.get_success(self.user_dir_helper.get_users_in_public_rooms()) |
|
|
|
self.assertEqual(set(public1), {(alice, room1), (alice, room2), (bob, room1)}) |
|
|
|
|
|
|
|
# Alice leaves room1. The user sharing tables should be updated. |
|
|
|
self.helper.leave(room1, alice, tok=alice_token) |
|
|
|
public2 = self.get_success(self.user_dir_helper.get_users_in_public_rooms()) |
|
|
|
self.assertEqual(set(public2), {(alice, room2), (bob, room1)}) |
|
|
|
|
|
|
|
# Pause the processing of new events. |
|
|
|
dir_handler = self.hs.get_user_directory_handler() |
|
|
|
dir_handler.update_user_directory = False |
|
|
|
|
|
|
|
# Bob leaves one room and joins the other. |
|
|
|
self.helper.leave(room1, bob, tok=bob_token) |
|
|
|
self.helper.join(room2, bob, tok=bob_token) |
|
|
|
|
|
|
|
# Process the leave and join in one go. |
|
|
|
dir_handler.update_user_directory = True |
|
|
|
dir_handler.notify_new_event() |
|
|
|
self.wait_for_background_updates() |
|
|
|
|
|
|
|
# The user sharing tables should have been updated. |
|
|
|
public3 = self.get_success(self.user_dir_helper.get_users_in_public_rooms()) |
|
|
|
self.assertEqual(set(public3), {(alice, room2), (bob, room2)}) |
|
|
|
|
|
|
|
def test_private_room(self) -> None: |
|
|
|
""" |
|
|
|
A user can be searched for only by people that are either in a public |
|
|
|