Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Rename shared_rooms to mutual_rooms #12036

Merged
merged 4 commits into from Mar 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/12036.misc
@@ -0,0 +1 @@
Rename `shared_rooms` to `mutual_rooms` (MSC2666), as per proposal changes.
4 changes: 2 additions & 2 deletions synapse/rest/__init__.py
Expand Up @@ -32,6 +32,7 @@
knock,
login as v1_login,
logout,
mutual_rooms,
notifications,
openid,
password_policy,
Expand All @@ -49,7 +50,6 @@
room_keys,
room_upgrade_rest_servlet,
sendtodevice,
shared_rooms,
sync,
tags,
thirdparty,
Expand Down Expand Up @@ -132,4 +132,4 @@ def register_servlets(client_resource: HttpServer, hs: "HomeServer") -> None:
admin.register_servlets_for_client_rest_resource(hs, client_resource)

# unstable
shared_rooms.register_servlets(hs, client_resource)
mutual_rooms.register_servlets(hs, client_resource)
Expand Up @@ -28,13 +28,13 @@
logger = logging.getLogger(__name__)


class UserSharedRoomsServlet(RestServlet):
class UserMutualRoomsServlet(RestServlet):
"""
GET /uk.half-shot.msc2666/user/shared_rooms/{user_id} HTTP/1.1
GET /uk.half-shot.msc2666/user/mutual_rooms/{user_id} HTTP/1.1
"""

PATTERNS = client_patterns(
"/uk.half-shot.msc2666/user/shared_rooms/(?P<user_id>[^/]*)",
"/uk.half-shot.msc2666/user/mutual_rooms/(?P<user_id>[^/]*)",
releases=(), # This is an unstable feature
)

Expand Down Expand Up @@ -64,12 +64,13 @@ async def on_GET(
msg="You cannot request a list of shared rooms with yourself",
errcode=Codes.FORBIDDEN,
)
rooms = await self.store.get_shared_rooms_for_users(

rooms = await self.store.get_mutual_rooms_for_users(
requester.user.to_string(), user_id
)

return 200, {"joined": list(rooms)}


def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
UserSharedRoomsServlet(hs).register(http_server)
UserMutualRoomsServlet(hs).register(http_server)
6 changes: 3 additions & 3 deletions synapse/storage/databases/main/user_directory.py
Expand Up @@ -718,7 +718,7 @@ async def get_user_dir_rooms_user_is_in(self, user_id: str) -> List[str]:
users.update(rows)
return list(users)

async def get_shared_rooms_for_users(
async def get_mutual_rooms_for_users(
self, user_id: str, other_user_id: str
) -> Set[str]:
"""
Expand All @@ -732,7 +732,7 @@ async def get_shared_rooms_for_users(
A set of room ID's that the users share.
"""

def _get_shared_rooms_for_users_txn(
def _get_mutual_rooms_for_users_txn(
txn: LoggingTransaction,
) -> List[Dict[str, str]]:
txn.execute(
Expand All @@ -756,7 +756,7 @@ def _get_shared_rooms_for_users_txn(
return rows

rows = await self.db_pool.runInteraction(
"get_shared_rooms_for_users", _get_shared_rooms_for_users_txn
"get_mutual_rooms_for_users", _get_mutual_rooms_for_users_txn
)

return {row["room_id"] for row in rows}
Expand Down
Expand Up @@ -14,24 +14,24 @@
from twisted.test.proto_helpers import MemoryReactor

import synapse.rest.admin
from synapse.rest.client import login, room, shared_rooms
from synapse.rest.client import login, mutual_rooms, room
from synapse.server import HomeServer
from synapse.util import Clock

from tests import unittest
from tests.server import FakeChannel


class UserSharedRoomsTest(unittest.HomeserverTestCase):
class UserMutualRoomsTest(unittest.HomeserverTestCase):
"""
Tests the UserSharedRoomsServlet.
Tests the UserMutualRoomsServlet.
"""

servlets = [
login.register_servlets,
synapse.rest.admin.register_servlets_for_client_rest_resource,
room.register_servlets,
shared_rooms.register_servlets,
mutual_rooms.register_servlets,
]

def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
Expand All @@ -43,10 +43,10 @@ def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
self.store = hs.get_datastores().main
self.handler = hs.get_user_directory_handler()

def _get_shared_rooms(self, token: str, other_user: str) -> FakeChannel:
def _get_mutual_rooms(self, token: str, other_user: str) -> FakeChannel:
return self.make_request(
"GET",
"/_matrix/client/unstable/uk.half-shot.msc2666/user/shared_rooms/%s"
"/_matrix/client/unstable/uk.half-shot.msc2666/user/mutual_rooms/%s"
% other_user,
access_token=token,
)
Expand All @@ -56,14 +56,14 @@ def test_shared_room_list_public(self) -> None:
A room should show up in the shared list of rooms between two users
if it is public.
"""
self._check_shared_rooms_with(room_one_is_public=True, room_two_is_public=True)
self._check_mutual_rooms_with(room_one_is_public=True, room_two_is_public=True)

def test_shared_room_list_private(self) -> None:
"""
A room should show up in the shared list of rooms between two users
if it is private.
"""
self._check_shared_rooms_with(
self._check_mutual_rooms_with(
room_one_is_public=False, room_two_is_public=False
)

Expand All @@ -72,9 +72,9 @@ def test_shared_room_list_mixed(self) -> None:
The shared room list between two users should contain both public and private
rooms.
"""
self._check_shared_rooms_with(room_one_is_public=True, room_two_is_public=False)
self._check_mutual_rooms_with(room_one_is_public=True, room_two_is_public=False)

def _check_shared_rooms_with(
def _check_mutual_rooms_with(
self, room_one_is_public: bool, room_two_is_public: bool
) -> None:
"""Checks that shared public or private rooms between two users appear in
Expand All @@ -94,7 +94,7 @@ def _check_shared_rooms_with(

# Check shared rooms from user1's perspective.
# We should see the one room in common
channel = self._get_shared_rooms(u1_token, u2)
channel = self._get_mutual_rooms(u1_token, u2)
self.assertEqual(200, channel.code, channel.result)
self.assertEqual(len(channel.json_body["joined"]), 1)
self.assertEqual(channel.json_body["joined"][0], room_id_one)
Expand All @@ -107,7 +107,7 @@ def _check_shared_rooms_with(
self.helper.join(room_id_two, user=u2, tok=u2_token)

# Check shared rooms again. We should now see both rooms.
channel = self._get_shared_rooms(u1_token, u2)
channel = self._get_mutual_rooms(u1_token, u2)
self.assertEqual(200, channel.code, channel.result)
self.assertEqual(len(channel.json_body["joined"]), 2)
for room_id_id in channel.json_body["joined"]:
Expand All @@ -128,19 +128,19 @@ def test_shared_room_list_after_leave(self) -> None:
self.helper.join(room, user=u2, tok=u2_token)

# Assert user directory is not empty
channel = self._get_shared_rooms(u1_token, u2)
channel = self._get_mutual_rooms(u1_token, u2)
self.assertEqual(200, channel.code, channel.result)
self.assertEqual(len(channel.json_body["joined"]), 1)
self.assertEqual(channel.json_body["joined"][0], room)

self.helper.leave(room, user=u1, tok=u1_token)

# Check user1's view of shared rooms with user2
channel = self._get_shared_rooms(u1_token, u2)
channel = self._get_mutual_rooms(u1_token, u2)
self.assertEqual(200, channel.code, channel.result)
self.assertEqual(len(channel.json_body["joined"]), 0)

# Check user2's view of shared rooms with user1
channel = self._get_shared_rooms(u2_token, u1)
channel = self._get_mutual_rooms(u2_token, u1)
self.assertEqual(200, channel.code, channel.result)
self.assertEqual(len(channel.json_body["joined"]), 0)