mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-10-02 05:08:26 -04:00
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:
parent
1866fb39d7
commit
7754af24ab
8 changed files with 46 additions and 802 deletions
|
@ -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",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue