Ignore EDUs for rooms we're not in (#10317)

This commit is contained in:
Dagfinn Ilmari Mannsåker 2021-07-06 14:31:13 +01:00 committed by GitHub
parent bcb0962a72
commit 47e28b4031
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 67 additions and 0 deletions

View file

@ -38,6 +38,9 @@ U_ONION = UserID.from_string("@onion:farm")
# Test room id
ROOM_ID = "a-room"
# Room we're not in
OTHER_ROOM_ID = "another-room"
def _expect_edu_transaction(edu_type, content, origin="test"):
return {
@ -115,6 +118,11 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
hs.get_auth().check_user_in_room = check_user_in_room
async def check_host_in_room(room_id, server_name):
return room_id == ROOM_ID
hs.get_event_auth_handler().check_host_in_room = check_host_in_room
def get_joined_hosts_for_room(room_id):
return {member.domain for member in self.room_members}
@ -244,6 +252,35 @@ class TypingNotificationsTestCase(unittest.HomeserverTestCase):
],
)
def test_started_typing_remote_recv_not_in_room(self):
self.room_members = [U_APPLE, U_ONION]
self.assertEquals(self.event_source.get_current_key(), 0)
channel = self.make_request(
"PUT",
"/_matrix/federation/v1/send/1000000",
_make_edu_transaction_json(
"m.typing",
content={
"room_id": OTHER_ROOM_ID,
"user_id": U_ONION.to_string(),
"typing": True,
},
),
federation_auth_origin=b"farm",
)
self.assertEqual(channel.code, 200)
self.on_new_event.assert_not_called()
self.assertEquals(self.event_source.get_current_key(), 0)
events = self.get_success(
self.event_source.get_new_events(room_ids=[OTHER_ROOM_ID], from_key=0)
)
self.assertEquals(events[0], [])
self.assertEquals(events[1], 0)
@override_config({"send_federation": True})
def test_stopped_typing(self):
self.room_members = [U_APPLE, U_BANANA, U_ONION]