diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2022-02-15 08:26:57 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-15 08:26:57 -0500 |
commit | 45f45404de2d0c4d68954eddc2dc905e50dfafe9 (patch) | |
tree | 2ac9c748d7322d2b251005fd7799ba981032593b /tests/rest/client | |
parent | Merge tag 'v1.53.0rc1' into develop (diff) | |
download | synapse-45f45404de2d0c4d68954eddc2dc905e50dfafe9.tar.xz |
Fix incorrect thread summaries when the latest event is edited. (#11992)
If the latest event in a thread was edited than the original event content was included in bundled aggregation for threads instead of the edited event content.
Diffstat (limited to 'tests/rest/client')
-rw-r--r-- | tests/rest/client/test_relations.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/rest/client/test_relations.py b/tests/rest/client/test_relations.py index de80aca037..dfd9ffcb93 100644 --- a/tests/rest/client/test_relations.py +++ b/tests/rest/client/test_relations.py @@ -1123,6 +1123,48 @@ class RelationsTestCase(unittest.HomeserverTestCase): {"event_id": edit_event_id, "sender": self.user_id}, m_replace_dict ) + @unittest.override_config({"experimental_features": {"msc3440_enabled": True}}) + def test_edit_thread(self): + """Test that editing a thread works.""" + + # Create a thread and edit the last event. + channel = self._send_relation( + RelationTypes.THREAD, + "m.room.message", + content={"msgtype": "m.text", "body": "A threaded reply!"}, + ) + self.assertEquals(200, channel.code, channel.json_body) + threaded_event_id = channel.json_body["event_id"] + + new_body = {"msgtype": "m.text", "body": "I've been edited!"} + channel = self._send_relation( + RelationTypes.REPLACE, + "m.room.message", + content={"msgtype": "m.text", "body": "foo", "m.new_content": new_body}, + parent_id=threaded_event_id, + ) + self.assertEquals(200, channel.code, channel.json_body) + + # Fetch the thread root, to get the bundled aggregation for the thread. + channel = self.make_request( + "GET", + f"/rooms/{self.room}/event/{self.parent_id}", + access_token=self.user_token, + ) + self.assertEquals(200, channel.code, channel.json_body) + + # We expect that the edit message appears in the thread summary in the + # unsigned relations section. + relations_dict = channel.json_body["unsigned"].get("m.relations") + self.assertIn(RelationTypes.THREAD, relations_dict) + + thread_summary = relations_dict[RelationTypes.THREAD] + self.assertIn("latest_event", thread_summary) + latest_event_in_thread = thread_summary["latest_event"] + self.assertEquals( + latest_event_in_thread["content"]["body"], "I've been edited!" + ) + def test_edit_edit(self): """Test that an edit cannot be edited.""" new_body = {"msgtype": "m.text", "body": "Initial edit"} |