diff --git a/changelog.d/19646.bugfix b/changelog.d/19646.bugfix new file mode 100644 index 0000000000..5c8d505e87 --- /dev/null +++ b/changelog.d/19646.bugfix @@ -0,0 +1 @@ +Advertise `org.matrix.msc4143` in `unstable_features` when `msc4143_enabled` is set. diff --git a/synapse/rest/client/versions.py b/synapse/rest/client/versions.py index f5e91ded1b..809e920a2b 100644 --- a/synapse/rest/client/versions.py +++ b/synapse/rest/client/versions.py @@ -191,6 +191,8 @@ class VersionsRestServlet(RestServlet): ), # MSC4140: Delayed events "org.matrix.msc4140": bool(self.config.server.max_event_delay_ms), + # MSC4143: Matrix RTC transports (LiveKit backend) + "org.matrix.msc4143": self.config.experimental.msc4143_enabled, # Simplified sliding sync "org.matrix.simplified_msc3575": msc3575_enabled, # Arbitrary key-value profile fields. diff --git a/tests/rest/client/test_matrixrtc.py b/tests/rest/client/test_matrixrtc.py index b5216c7adc..87969467fb 100644 --- a/tests/rest/client/test_matrixrtc.py +++ b/tests/rest/client/test_matrixrtc.py @@ -20,10 +20,11 @@ from twisted.internet.testing import MemoryReactor from synapse.rest import admin -from synapse.rest.client import login, matrixrtc, register, room +from synapse.rest.client import login, matrixrtc, register, room, versions from synapse.server import HomeServer from synapse.util.clock import Clock +from tests import unittest from tests.unittest import HomeserverTestCase, override_config PATH_PREFIX = "/_matrix/client/unstable/org.matrix.msc4143" @@ -103,3 +104,20 @@ class MatrixRtcTestCase(HomeserverTestCase): ) self.assertEqual(200, channel.code, channel.json_body) self.assert_dict({"rtc_transports": [LIVEKIT_ENDPOINT]}, channel.json_body) + + +class MatrixRtcVersionsTestCase(HomeserverTestCase): + """Tests that org.matrix.msc4143 is correctly advertised in /versions.""" + + servlets = [versions.register_servlets] + + def test_msc4143_false_by_default(self) -> None: + channel = self.make_request("GET", "/_matrix/client/versions") + self.assertEqual(channel.code, 200, channel.result) + self.assertFalse(channel.json_body["unstable_features"]["org.matrix.msc4143"]) + + @unittest.override_config({"experimental_features": {"msc4143_enabled": True}}) + def test_msc4143_true_if_enabled(self) -> None: + channel = self.make_request("GET", "/_matrix/client/versions") + self.assertEqual(channel.code, 200, channel.result) + self.assertTrue(channel.json_body["unstable_features"]["org.matrix.msc4143"])