diff --git a/tests/events/test_utils.py b/tests/events/test_utils.py
index 02f0800a31..e40eac2eb0 100644
--- a/tests/events/test_utils.py
+++ b/tests/events/test_utils.py
@@ -394,7 +394,7 @@ class PruneEventTestCase(stdlib_unittest.TestCase):
)
def test_member(self) -> None:
- """Member events have changed behavior starting with MSC3375."""
+ """Member events have changed behavior in MSC3375 and MSC3821."""
self.run_test(
{
"type": "m.room.member",
@@ -437,6 +437,79 @@ class PruneEventTestCase(stdlib_unittest.TestCase):
room_version=RoomVersions.V9,
)
+ # After MSC3821, the signed key under third_party_invite is protected
+ # from redaction.
+ THIRD_PARTY_INVITE = {
+ "display_name": "alice",
+ "signed": {
+ "mxid": "@alice:example.org",
+ "signatures": {
+ "magic.forest": {
+ "ed25519:3": "fQpGIW1Snz+pwLZu6sTy2aHy/DYWWTspTJRPyNp0PKkymfIsNffysMl6ObMMFdIJhk6g6pwlIqZ54rxo8SLmAg"
+ }
+ },
+ "token": "abc123",
+ },
+ }
+
+ self.run_test(
+ {
+ "type": "m.room.member",
+ "content": {
+ "membership": "invite",
+ "third_party_invite": THIRD_PARTY_INVITE,
+ "other_key": "stripped",
+ },
+ },
+ {
+ "type": "m.room.member",
+ "content": {
+ "membership": "invite",
+ "third_party_invite": {"signed": THIRD_PARTY_INVITE["signed"]},
+ },
+ "signatures": {},
+ "unsigned": {},
+ },
+ room_version=RoomVersions.MSC3821,
+ )
+
+ # Ensure this doesn't break if an invalid field is sent.
+ self.run_test(
+ {
+ "type": "m.room.member",
+ "content": {
+ "membership": "invite",
+ "third_party_invite": {},
+ "other_key": "stripped",
+ },
+ },
+ {
+ "type": "m.room.member",
+ "content": {"membership": "invite", "third_party_invite": {}},
+ "signatures": {},
+ "unsigned": {},
+ },
+ room_version=RoomVersions.MSC3821,
+ )
+
+ self.run_test(
+ {
+ "type": "m.room.member",
+ "content": {
+ "membership": "invite",
+ "third_party_invite": "stripped",
+ "other_key": "stripped",
+ },
+ },
+ {
+ "type": "m.room.member",
+ "content": {"membership": "invite"},
+ "signatures": {},
+ "unsigned": {},
+ },
+ room_version=RoomVersions.MSC3821,
+ )
+
def test_relations(self) -> None:
"""Event relations get redacted until MSC3389."""
# Normally the m._relates_to field is redacted.
|