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

Commit

Permalink
Default to private room visibility rather than public when a clie…
Browse files Browse the repository at this point in the history
…nt does not specify one, according to spec. (#12350)
  • Loading branch information
reivilibre authored Apr 1, 2022
1 parent 336bff1 commit c4cf916
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 7 deletions.
1 change: 1 addition & 0 deletions changelog.d/12350.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Default to `private` room visibility rather than `public` when a client does not specify one, according to spec.
4 changes: 3 additions & 1 deletion synapse/handlers/room.py
Original file line number Diff line number Diff line change
Expand Up @@ -771,7 +771,9 @@ async def create_room(
% (user_id,),
)

visibility = config.get("visibility", None)
# The spec says rooms should default to private visibility if
# `visibility` is not specified.
visibility = config.get("visibility", "private")
is_public = visibility == "public"

room_id = await self._generate_room_id(
Expand Down
2 changes: 1 addition & 1 deletion tests/module_api/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ def test_public_rooms(self):
# Create a user and room to play with
user_id = self.register_user("kermit", "monkey")
tok = self.login("kermit", "monkey")
room_id = self.helper.create_room_as(user_id, tok=tok)
room_id = self.helper.create_room_as(user_id, tok=tok, is_public=False)

# The room should not currently be in the public rooms directory
is_in_public_rooms = self.get_success(
Expand Down
11 changes: 7 additions & 4 deletions tests/rest/client/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ def create_room_as(
def create_room_as(
self,
room_creator: Optional[str] = None,
is_public: Optional[bool] = None,
is_public: Optional[bool] = True,
room_version: Optional[str] = None,
tok: Optional[str] = None,
expect_code: int = HTTPStatus.OK,
Expand All @@ -101,9 +101,12 @@ def create_room_as(
Args:
room_creator: The user ID to create the room with.
is_public: If True, the `visibility` parameter will be set to
"public". If False, it will be set to "private". If left
unspecified, the server will set it to an appropriate default
(which should be "private" as per the CS spec).
"public". If False, it will be set to "private".
If None, doesn't specify the `visibility` parameter in which
case the server is supposed to make the room private according to
the CS API.
Defaults to public, since that is commonly needed in tests
for convenience where room privacy is not a problem.
room_version: The room version to create the room as. Defaults to Synapse's
default room version.
tok: The access token to use in the request.
Expand Down
4 changes: 3 additions & 1 deletion tests/storage/test_cleanup_extrems.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,9 @@ def prepare(self, reactor, clock, homeserver):
self.user = UserID.from_string(self.register_user("user1", "password"))
self.token1 = self.login("user1", "password")
self.requester = create_requester(self.user)
info, _ = self.get_success(self.room_creator.create_room(self.requester, {}))
info, _ = self.get_success(
self.room_creator.create_room(self.requester, {"visibility": "public"})
)
self.room_id = info["room_id"]
self.event_creator = homeserver.get_event_creation_handler()
homeserver.config.consent.user_consent_version = self.CONSENT_VERSION
Expand Down

0 comments on commit c4cf916

Please sign in to comment.