Edits/annotations should not have any bundled aggregations calculated. (#12633)

Fixes a regression from 8b309adb43 (#11660)
and b65acead42 (#11752) where events which
themselves were an edit or an annotation could have bundled aggregations calculated,
which is not allowed.
This commit is contained in:
Patrick Cloke 2022-05-05 08:15:12 -04:00 committed by GitHub
parent ddc8bba00f
commit f90d381c7b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 50 additions and 20 deletions

View file

@ -620,6 +620,19 @@ class RelationsTestCase(BaseRelationsTestCase):
{"event_id": edit_event_id, "sender": self.user_id}, m_replace_dict
)
# Directly requesting the edit should not have the edit to the edit applied.
channel = self.make_request(
"GET",
f"/rooms/{self.room}/event/{edit_event_id}",
access_token=self.user_token,
)
self.assertEqual(200, channel.code, channel.json_body)
self.assertEqual("Wibble", channel.json_body["content"]["body"])
self.assertIn("m.new_content", channel.json_body["content"])
# The relations information should not include the edit to the edit.
self.assertNotIn("m.relations", channel.json_body["unsigned"])
def test_unknown_relations(self) -> None:
"""Unknown relations should be accepted."""
channel = self._send_relation("m.relation.test", "m.room.test")
@ -984,6 +997,24 @@ class BundledAggregationsTestCase(BaseRelationsTestCase):
self._test_bundled_aggregations(RelationTypes.ANNOTATION, assert_annotations, 7)
def test_annotation_to_annotation(self) -> None:
"""Any relation to an annotation should be ignored."""
channel = self._send_relation(RelationTypes.ANNOTATION, "m.reaction", "a")
event_id = channel.json_body["event_id"]
self._send_relation(
RelationTypes.ANNOTATION, "m.reaction", "b", parent_id=event_id
)
# Fetch the initial annotation event to see if it has bundled aggregations.
channel = self.make_request(
"GET",
f"/_matrix/client/v3/rooms/{self.room}/event/{event_id}",
access_token=self.user_token,
)
self.assertEquals(200, channel.code, channel.json_body)
# The first annotationt should not have any bundled aggregations.
self.assertNotIn("m.relations", channel.json_body["unsigned"])
def test_reference(self) -> None:
"""
Test that references get correctly bundled.