Remove the unstable /spaces endpoint. (#12073)

...and various code supporting it.

The /spaces endpoint was from an old version of MSC2946 and included
both a Client-Server and Server-Server API. Note that the unstable
/hierarchy endpoint (from the final version of MSC2946) is not yet
removed.
This commit is contained in:
Patrick Cloke 2022-02-28 13:33:00 -05:00 committed by GitHub
parent 1866fb39d7
commit 7754af24ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 46 additions and 802 deletions

View file

@ -157,35 +157,6 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
state_key=room_id,
)
def _assert_rooms(
self, result: JsonDict, rooms_and_children: Iterable[Tuple[str, Iterable[str]]]
) -> None:
"""
Assert that the expected room IDs and events are in the response.
Args:
result: The result from the API call.
rooms_and_children: An iterable of tuples where each tuple is:
The expected room ID.
The expected IDs of any children rooms.
"""
room_ids = []
children_ids = []
for room_id, children in rooms_and_children:
room_ids.append(room_id)
if children:
children_ids.extend([(room_id, child_id) for child_id in children])
self.assertCountEqual(
[room.get("room_id") for room in result["rooms"]], room_ids
)
self.assertCountEqual(
[
(event.get("room_id"), event.get("state_key"))
for event in result["events"]
],
children_ids,
)
def _assert_hierarchy(
self, result: JsonDict, rooms_and_children: Iterable[Tuple[str, Iterable[str]]]
) -> None:
@ -251,11 +222,9 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
def test_simple_space(self):
"""Test a simple space with a single room."""
result = self.get_success(self.handler.get_space_summary(self.user, self.space))
# The result should have the space and the room in it, along with a link
# from space -> room.
expected = [(self.space, [self.room]), (self.room, ())]
self._assert_rooms(result, expected)
result = self.get_success(
self.handler.get_room_hierarchy(create_requester(self.user), self.space)
@ -271,12 +240,6 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
self._add_child(self.space, room, self.token)
rooms.append(room)
result = self.get_success(self.handler.get_space_summary(self.user, self.space))
# The spaces result should have the space and the first 50 rooms in it,
# along with the links from space -> room for those 50 rooms.
expected = [(self.space, rooms[:50])] + [(room, []) for room in rooms[:49]]
self._assert_rooms(result, expected)
# The result should have the space and the rooms in it, along with the links
# from space -> room.
expected = [(self.space, rooms)] + [(room, []) for room in rooms]
@ -300,10 +263,7 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
token2 = self.login("user2", "pass")
# The user can see the space since it is publicly joinable.
result = self.get_success(self.handler.get_space_summary(user2, self.space))
expected = [(self.space, [self.room]), (self.room, ())]
self._assert_rooms(result, expected)
result = self.get_success(
self.handler.get_room_hierarchy(create_requester(user2), self.space)
)
@ -316,7 +276,6 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
body={"join_rule": JoinRules.INVITE},
tok=self.token,
)
self.get_failure(self.handler.get_space_summary(user2, self.space), AuthError)
self.get_failure(
self.handler.get_room_hierarchy(create_requester(user2), self.space),
AuthError,
@ -329,9 +288,6 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
body={"history_visibility": HistoryVisibility.WORLD_READABLE},
tok=self.token,
)
result = self.get_success(self.handler.get_space_summary(user2, self.space))
self._assert_rooms(result, expected)
result = self.get_success(
self.handler.get_room_hierarchy(create_requester(user2), self.space)
)
@ -344,7 +300,6 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
body={"history_visibility": HistoryVisibility.JOINED},
tok=self.token,
)
self.get_failure(self.handler.get_space_summary(user2, self.space), AuthError)
self.get_failure(
self.handler.get_room_hierarchy(create_requester(user2), self.space),
AuthError,
@ -353,19 +308,12 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
# Join the space and results should be returned.
self.helper.invite(self.space, targ=user2, tok=self.token)
self.helper.join(self.space, user2, tok=token2)
result = self.get_success(self.handler.get_space_summary(user2, self.space))
self._assert_rooms(result, expected)
result = self.get_success(
self.handler.get_room_hierarchy(create_requester(user2), self.space)
)
self._assert_hierarchy(result, expected)
# Attempting to view an unknown room returns the same error.
self.get_failure(
self.handler.get_space_summary(user2, "#not-a-space:" + self.hs.hostname),
AuthError,
)
self.get_failure(
self.handler.get_room_hierarchy(
create_requester(user2), "#not-a-space:" + self.hs.hostname
@ -496,7 +444,6 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
# Join the space.
self.helper.join(self.space, user2, tok=token2)
result = self.get_success(self.handler.get_space_summary(user2, self.space))
expected = [
(
self.space,
@ -520,7 +467,6 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
(world_readable_room, ()),
(joined_room, ()),
]
self._assert_rooms(result, expected)
result = self.get_success(
self.handler.get_room_hierarchy(create_requester(user2), self.space)
@ -554,8 +500,6 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
self._add_child(subspace, self.room, token=self.token)
self._add_child(subspace, room2, self.token)
result = self.get_success(self.handler.get_space_summary(self.user, self.space))
# The result should include each room a single time and each link.
expected = [
(self.space, [self.room, room2, subspace]),
@ -563,7 +507,6 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
(subspace, [subroom, self.room, room2]),
(subroom, ()),
]
self._assert_rooms(result, expected)
result = self.get_success(
self.handler.get_room_hierarchy(create_requester(self.user), self.space)
@ -728,10 +671,8 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
)
)
result = self.get_success(self.handler.get_space_summary(self.user, self.space))
# The result should have only the space, along with a link from space -> room.
expected = [(self.space, [self.room])]
self._assert_rooms(result, expected)
result = self.get_success(
self.handler.get_room_hierarchy(create_requester(self.user), self.space)
@ -775,41 +716,18 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
"world_readable": True,
}
async def summarize_remote_room(
_self, room, suggested_only, max_children, exclude_rooms
):
return [
requested_room_entry,
_RoomEntry(
subroom,
{
"room_id": subroom,
"world_readable": True,
},
),
]
async def summarize_remote_room_hierarchy(_self, room, suggested_only):
return requested_room_entry, {subroom: child_room}, set()
# Add a room to the space which is on another server.
self._add_child(self.space, subspace, self.token)
with mock.patch(
"synapse.handlers.room_summary.RoomSummaryHandler._summarize_remote_room",
new=summarize_remote_room,
):
result = self.get_success(
self.handler.get_space_summary(self.user, self.space)
)
expected = [
(self.space, [self.room, subspace]),
(self.room, ()),
(subspace, [subroom]),
(subroom, ()),
]
self._assert_rooms(result, expected)
with mock.patch(
"synapse.handlers.room_summary.RoomSummaryHandler._summarize_remote_room_hierarchy",
@ -881,7 +799,7 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
"room_id": restricted_room,
"world_readable": False,
"join_rules": JoinRules.RESTRICTED,
"allowed_spaces": [],
"allowed_room_ids": [],
},
),
(
@ -890,7 +808,7 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
"room_id": restricted_accessible_room,
"world_readable": False,
"join_rules": JoinRules.RESTRICTED,
"allowed_spaces": [self.room],
"allowed_room_ids": [self.room],
},
),
(
@ -929,30 +847,12 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
],
)
async def summarize_remote_room(
_self, room, suggested_only, max_children, exclude_rooms
):
return [subspace_room_entry] + [
# A copy is made of the room data since the allowed_spaces key
# is removed.
_RoomEntry(child_room[0], dict(child_room[1]))
for child_room in children_rooms
]
async def summarize_remote_room_hierarchy(_self, room, suggested_only):
return subspace_room_entry, dict(children_rooms), set()
# Add a room to the space which is on another server.
self._add_child(self.space, subspace, self.token)
with mock.patch(
"synapse.handlers.room_summary.RoomSummaryHandler._summarize_remote_room",
new=summarize_remote_room,
):
result = self.get_success(
self.handler.get_space_summary(self.user, self.space)
)
expected = [
(self.space, [self.room, subspace]),
(self.room, ()),
@ -976,7 +876,6 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
(world_readable_room, ()),
(joined_room, ()),
]
self._assert_rooms(result, expected)
with mock.patch(
"synapse.handlers.room_summary.RoomSummaryHandler._summarize_remote_room_hierarchy",
@ -1010,31 +909,17 @@ class SpaceSummaryTestCase(unittest.HomeserverTestCase):
},
)
async def summarize_remote_room(
_self, room, suggested_only, max_children, exclude_rooms
):
return [fed_room_entry]
async def summarize_remote_room_hierarchy(_self, room, suggested_only):
return fed_room_entry, {}, set()
# Add a room to the space which is on another server.
self._add_child(self.space, fed_room, self.token)
with mock.patch(
"synapse.handlers.room_summary.RoomSummaryHandler._summarize_remote_room",
new=summarize_remote_room,
):
result = self.get_success(
self.handler.get_space_summary(self.user, self.space)
)
expected = [
(self.space, [self.room, fed_room]),
(self.room, ()),
(fed_room, ()),
]
self._assert_rooms(result, expected)
with mock.patch(
"synapse.handlers.room_summary.RoomSummaryHandler._summarize_remote_room_hierarchy",