mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-28 15:08:49 +03:00
Stabliize support for MSC3981: recurse /relations (#17023)
See [MSC3981](https://github.com/matrix-org/matrix-spec-proposals/pull/3981), this pretty much just removes flags though. Part of #17021
This commit is contained in:
parent
89f1092284
commit
a2a543fd12
5 changed files with 9 additions and 19 deletions
1
changelog.d/17023.feature
Normal file
1
changelog.d/17023.feature
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Stabilize support for [MSC3981](https://github.com/matrix-org/matrix-spec-proposals/pull/3981): `/relations` recursion. Contributed by @clokep.
|
|
@ -393,11 +393,6 @@ class ExperimentalConfig(Config):
|
||||||
# MSC3967: Do not require UIA when first uploading cross signing keys
|
# MSC3967: Do not require UIA when first uploading cross signing keys
|
||||||
self.msc3967_enabled = experimental.get("msc3967_enabled", False)
|
self.msc3967_enabled = experimental.get("msc3967_enabled", False)
|
||||||
|
|
||||||
# MSC3981: Recurse relations
|
|
||||||
self.msc3981_recurse_relations = experimental.get(
|
|
||||||
"msc3981_recurse_relations", False
|
|
||||||
)
|
|
||||||
|
|
||||||
# MSC3861: Matrix architecture change to delegate authentication via OIDC
|
# MSC3861: Matrix architecture change to delegate authentication via OIDC
|
||||||
try:
|
try:
|
||||||
self.msc3861 = MSC3861(**experimental.get("msc3861", {}))
|
self.msc3861 = MSC3861(**experimental.get("msc3861", {}))
|
||||||
|
|
|
@ -55,7 +55,6 @@ class RelationPaginationServlet(RestServlet):
|
||||||
self.auth = hs.get_auth()
|
self.auth = hs.get_auth()
|
||||||
self._store = hs.get_datastores().main
|
self._store = hs.get_datastores().main
|
||||||
self._relations_handler = hs.get_relations_handler()
|
self._relations_handler = hs.get_relations_handler()
|
||||||
self._support_recurse = hs.config.experimental.msc3981_recurse_relations
|
|
||||||
|
|
||||||
async def on_GET(
|
async def on_GET(
|
||||||
self,
|
self,
|
||||||
|
@ -70,12 +69,9 @@ class RelationPaginationServlet(RestServlet):
|
||||||
pagination_config = await PaginationConfig.from_request(
|
pagination_config = await PaginationConfig.from_request(
|
||||||
self._store, request, default_limit=5, default_dir=Direction.BACKWARDS
|
self._store, request, default_limit=5, default_dir=Direction.BACKWARDS
|
||||||
)
|
)
|
||||||
if self._support_recurse:
|
recurse = parse_boolean(request, "recurse", default=False) or parse_boolean(
|
||||||
recurse = parse_boolean(request, "recurse", default=False) or parse_boolean(
|
request, "org.matrix.msc3981.recurse", default=False
|
||||||
request, "org.matrix.msc3981.recurse", default=False
|
)
|
||||||
)
|
|
||||||
else:
|
|
||||||
recurse = False
|
|
||||||
|
|
||||||
# The unstable version of this API returns an extra field for client
|
# The unstable version of this API returns an extra field for client
|
||||||
# compatibility, see https://github.com/matrix-org/synapse/issues/12930.
|
# compatibility, see https://github.com/matrix-org/synapse/issues/12930.
|
||||||
|
|
|
@ -132,7 +132,8 @@ class VersionsRestServlet(RestServlet):
|
||||||
# Adds support for relation-based redactions as per MSC3912.
|
# Adds support for relation-based redactions as per MSC3912.
|
||||||
"org.matrix.msc3912": self.config.experimental.msc3912_enabled,
|
"org.matrix.msc3912": self.config.experimental.msc3912_enabled,
|
||||||
# Whether recursively provide relations is supported.
|
# Whether recursively provide relations is supported.
|
||||||
"org.matrix.msc3981": self.config.experimental.msc3981_recurse_relations,
|
# TODO This is no longer needed once unstable MSC3981 does not need to be supported.
|
||||||
|
"org.matrix.msc3981": True,
|
||||||
# Adds support for deleting account data.
|
# Adds support for deleting account data.
|
||||||
"org.matrix.msc3391": self.config.experimental.msc3391_enabled,
|
"org.matrix.msc3391": self.config.experimental.msc3391_enabled,
|
||||||
# Allows clients to inhibit profile update propagation.
|
# Allows clients to inhibit profile update propagation.
|
||||||
|
|
|
@ -35,7 +35,6 @@ from synapse.util import Clock
|
||||||
from tests import unittest
|
from tests import unittest
|
||||||
from tests.server import FakeChannel
|
from tests.server import FakeChannel
|
||||||
from tests.test_utils.event_injection import inject_event
|
from tests.test_utils.event_injection import inject_event
|
||||||
from tests.unittest import override_config
|
|
||||||
|
|
||||||
|
|
||||||
class BaseRelationsTestCase(unittest.HomeserverTestCase):
|
class BaseRelationsTestCase(unittest.HomeserverTestCase):
|
||||||
|
@ -957,7 +956,6 @@ class RelationPaginationTestCase(BaseRelationsTestCase):
|
||||||
|
|
||||||
|
|
||||||
class RecursiveRelationTestCase(BaseRelationsTestCase):
|
class RecursiveRelationTestCase(BaseRelationsTestCase):
|
||||||
@override_config({"experimental_features": {"msc3981_recurse_relations": True}})
|
|
||||||
def test_recursive_relations(self) -> None:
|
def test_recursive_relations(self) -> None:
|
||||||
"""Generate a complex, multi-level relationship tree and query it."""
|
"""Generate a complex, multi-level relationship tree and query it."""
|
||||||
# Create a thread with a few messages in it.
|
# Create a thread with a few messages in it.
|
||||||
|
@ -1003,7 +1001,7 @@ class RecursiveRelationTestCase(BaseRelationsTestCase):
|
||||||
channel = self.make_request(
|
channel = self.make_request(
|
||||||
"GET",
|
"GET",
|
||||||
f"/_matrix/client/v1/rooms/{self.room}/relations/{self.parent_id}"
|
f"/_matrix/client/v1/rooms/{self.room}/relations/{self.parent_id}"
|
||||||
"?dir=f&limit=20&org.matrix.msc3981.recurse=true",
|
"?dir=f&limit=20&recurse=true",
|
||||||
access_token=self.user_token,
|
access_token=self.user_token,
|
||||||
)
|
)
|
||||||
self.assertEqual(200, channel.code, channel.json_body)
|
self.assertEqual(200, channel.code, channel.json_body)
|
||||||
|
@ -1024,7 +1022,6 @@ class RecursiveRelationTestCase(BaseRelationsTestCase):
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@override_config({"experimental_features": {"msc3981_recurse_relations": True}})
|
|
||||||
def test_recursive_relations_with_filter(self) -> None:
|
def test_recursive_relations_with_filter(self) -> None:
|
||||||
"""The event_type and rel_type still apply."""
|
"""The event_type and rel_type still apply."""
|
||||||
# Create a thread with a few messages in it.
|
# Create a thread with a few messages in it.
|
||||||
|
@ -1052,7 +1049,7 @@ class RecursiveRelationTestCase(BaseRelationsTestCase):
|
||||||
channel = self.make_request(
|
channel = self.make_request(
|
||||||
"GET",
|
"GET",
|
||||||
f"/_matrix/client/v1/rooms/{self.room}/relations/{self.parent_id}/{RelationTypes.ANNOTATION}"
|
f"/_matrix/client/v1/rooms/{self.room}/relations/{self.parent_id}/{RelationTypes.ANNOTATION}"
|
||||||
"?dir=f&limit=20&org.matrix.msc3981.recurse=true",
|
"?dir=f&limit=20&recurse=true",
|
||||||
access_token=self.user_token,
|
access_token=self.user_token,
|
||||||
)
|
)
|
||||||
self.assertEqual(200, channel.code, channel.json_body)
|
self.assertEqual(200, channel.code, channel.json_body)
|
||||||
|
@ -1065,7 +1062,7 @@ class RecursiveRelationTestCase(BaseRelationsTestCase):
|
||||||
channel = self.make_request(
|
channel = self.make_request(
|
||||||
"GET",
|
"GET",
|
||||||
f"/_matrix/client/v1/rooms/{self.room}/relations/{self.parent_id}/{RelationTypes.ANNOTATION}/m.reaction"
|
f"/_matrix/client/v1/rooms/{self.room}/relations/{self.parent_id}/{RelationTypes.ANNOTATION}/m.reaction"
|
||||||
"?dir=f&limit=20&org.matrix.msc3981.recurse=true",
|
"?dir=f&limit=20&recurse=true",
|
||||||
access_token=self.user_token,
|
access_token=self.user_token,
|
||||||
)
|
)
|
||||||
self.assertEqual(200, channel.code, channel.json_body)
|
self.assertEqual(200, channel.code, channel.json_body)
|
||||||
|
|
Loading…
Reference in a new issue