mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 20:34:48 -04:00
Update module API "update room membership" method to allow for remote joins (#13441)
Co-authored-by: MattC <buffless-matt@users.noreply.github.com> Co-authored-by: Brendan Abolivier <babolivier@matrix.org>
This commit is contained in:
parent
b6a6bb4027
commit
026ac4486c
3 changed files with 34 additions and 4 deletions
|
@ -16,6 +16,7 @@ from unittest.mock import Mock
|
|||
from twisted.internet import defer
|
||||
|
||||
from synapse.api.constants import EduTypes, EventTypes
|
||||
from synapse.api.errors import NotFoundError
|
||||
from synapse.events import EventBase
|
||||
from synapse.federation.units import Transaction
|
||||
from synapse.handlers.presence import UserPresenceState
|
||||
|
@ -532,6 +533,34 @@ class ModuleApiTestCase(HomeserverTestCase):
|
|||
self.assertEqual(res["displayname"], "simone")
|
||||
self.assertIsNone(res["avatar_url"])
|
||||
|
||||
def test_update_room_membership_remote_join(self):
|
||||
"""Test that the module API can join a remote room."""
|
||||
# Necessary to fake a remote join.
|
||||
fake_stream_id = 1
|
||||
mocked_remote_join = simple_async_mock(
|
||||
return_value=("fake-event-id", fake_stream_id)
|
||||
)
|
||||
self.hs.get_room_member_handler()._remote_join = mocked_remote_join
|
||||
fake_remote_host = f"{self.module_api.server_name}-remote"
|
||||
|
||||
# Given that the join is to be faked, we expect the relevant join event not to
|
||||
# be persisted and the module API method to raise that.
|
||||
self.get_failure(
|
||||
defer.ensureDeferred(
|
||||
self.module_api.update_room_membership(
|
||||
sender=f"@user:{self.module_api.server_name}",
|
||||
target=f"@user:{self.module_api.server_name}",
|
||||
room_id=f"!nonexistent:{fake_remote_host}",
|
||||
new_membership="join",
|
||||
remote_room_hosts=[fake_remote_host],
|
||||
)
|
||||
),
|
||||
NotFoundError,
|
||||
)
|
||||
|
||||
# Check that a remote join was attempted.
|
||||
self.assertEqual(mocked_remote_join.call_count, 1)
|
||||
|
||||
def test_get_room_state(self):
|
||||
"""Tests that a module can retrieve the state of a room through the module API."""
|
||||
user_id = self.register_user("peter", "hackme")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue