mirror of
https://github.com/element-hq/synapse.git
synced 2025-12-05 01:10:13 +00:00
Put MSC2666 endpoint behind an experimental flag (#19219)
This commit is contained in:
1
changelog.d/19219.misc
Normal file
1
changelog.d/19219.misc
Normal file
@@ -0,0 +1 @@
|
||||
Require an experimental feature flag to be enabled in order for the unstable [MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666) endpoint (`/_matrix/client/unstable/uk.half-shot.msc2666/user/mutual_rooms`) to be available.
|
||||
@@ -117,6 +117,17 @@ each upgrade are complete before moving on to the next upgrade, to avoid
|
||||
stacking them up. You can monitor the currently running background updates with
|
||||
[the Admin API](usage/administration/admin_api/background_updates.html#status).
|
||||
|
||||
# Upgrading to v1.144.0
|
||||
|
||||
## Unstable mutual rooms endpoint is now behind an experimental feature flag
|
||||
|
||||
The unstable mutual rooms endpoint from
|
||||
[MSC2666](https://github.com/matrix-org/matrix-spec-proposals/pull/2666)
|
||||
(`/_matrix/client/unstable/uk.half-shot.msc2666/user/mutual_rooms`) is now
|
||||
disabled by default. If you rely on this unstable endpoint, you must now set
|
||||
`experimental_features.msc2666_enabled: true` in your configuration to keep
|
||||
using it.
|
||||
|
||||
# Upgrading to v1.143.0
|
||||
|
||||
## Dropping support for PostgreSQL 13
|
||||
|
||||
@@ -438,6 +438,9 @@ class ExperimentalConfig(Config):
|
||||
# previously calculated push actions.
|
||||
self.msc2654_enabled: bool = experimental.get("msc2654_enabled", False)
|
||||
|
||||
# MSC2666: Query mutual rooms between two users.
|
||||
self.msc2666_enabled: bool = experimental.get("msc2666_enabled", False)
|
||||
|
||||
# MSC2815 (allow room moderators to view redacted event content)
|
||||
self.msc2815_enabled: bool = experimental.get("msc2815_enabled", False)
|
||||
|
||||
|
||||
@@ -90,4 +90,5 @@ class UserMutualRoomsServlet(RestServlet):
|
||||
|
||||
|
||||
def register_servlets(hs: "HomeServer", http_server: HttpServer) -> None:
|
||||
UserMutualRoomsServlet(hs).register(http_server)
|
||||
if hs.config.experimental.msc2666_enabled:
|
||||
UserMutualRoomsServlet(hs).register(http_server)
|
||||
|
||||
@@ -124,7 +124,7 @@ class VersionsRestServlet(RestServlet):
|
||||
# Implements additional endpoints as described in MSC2432
|
||||
"org.matrix.msc2432": True,
|
||||
# Implements additional endpoints as described in MSC2666
|
||||
"uk.half-shot.msc2666.query_mutual_rooms": True,
|
||||
"uk.half-shot.msc2666.query_mutual_rooms": self.config.experimental.msc2666_enabled,
|
||||
# Whether new rooms will be set to encrypted or not (based on presets).
|
||||
"io.element.e2ee_forced.public": self.e2ee_forced_public,
|
||||
"io.element.e2ee_forced.private": self.e2ee_forced_private,
|
||||
|
||||
@@ -43,6 +43,12 @@ class UserMutualRoomsTest(unittest.HomeserverTestCase):
|
||||
mutual_rooms.register_servlets,
|
||||
]
|
||||
|
||||
def default_config(self) -> dict:
|
||||
config = super().default_config()
|
||||
experimental = config.setdefault("experimental_features", {})
|
||||
experimental.setdefault("msc2666_enabled", True)
|
||||
return config
|
||||
|
||||
def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
|
||||
config = self.default_config()
|
||||
return self.setup_test_homeserver(config=config)
|
||||
@@ -58,6 +64,21 @@ class UserMutualRoomsTest(unittest.HomeserverTestCase):
|
||||
access_token=token,
|
||||
)
|
||||
|
||||
@unittest.override_config({"experimental_features": {"msc2666_enabled": False}})
|
||||
def test_mutual_rooms_no_experimental_flag(self) -> None:
|
||||
"""
|
||||
The endpoint should 404 if the experimental flag is not enabled.
|
||||
"""
|
||||
# Register a user.
|
||||
u1 = self.register_user("user1", "pass")
|
||||
u1_token = self.login(u1, "pass")
|
||||
|
||||
# Check that we're unable to query the endpoint due to the endpoint
|
||||
# being unrecognised.
|
||||
channel = self._get_mutual_rooms(u1_token, "@not-used:test")
|
||||
self.assertEqual(404, channel.code, channel.result)
|
||||
self.assertEqual("M_UNRECOGNIZED", channel.json_body["errcode"], channel.result)
|
||||
|
||||
def test_shared_room_list_public(self) -> None:
|
||||
"""
|
||||
A room should show up in the shared list of rooms between two users
|
||||
|
||||
Reference in New Issue
Block a user