From c196bef0bab1af96e82e288af879894973692603 Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Tue, 13 Oct 2026 23:33:14 +1300 Subject: [PATCH] Add tests for @room mention roles conversion --- src/m2d/converters/event-to-message.test.js | 122 +++++++++++++++++++- test/ooye-test-data.sql | 1 + 2 files changed, 122 insertions(+), 1 deletion(-) diff --git a/src/m2d/converters/event-to-message.test.js b/src/m2d/converters/event-to-message.test.js index b8d88f9..6b3048e 100644 --- a/src/m2d/converters/event-to-message.test.js +++ b/src/m2d/converters/event-to-message.test.js @@ -5521,6 +5521,9 @@ test("event2message: @room converts to @everyone and is allowed when the room do type: "m.room.message", sender: "@cadence:cadence.moe", content: { + "m.mentions": { + room: true + }, msgtype: "m.text", body: "@room dinner's ready", }, @@ -5563,7 +5566,124 @@ test("event2message: @room converts to @everyone and is allowed when the room do content: "@everyone dinner's ready", avatar_url: "https://bridge.example.org/download/letter-avatar?letter=C&hue=90", allowed_mentions: { - parse: ["users", "roles", "everyone"] + users: [], + parse: ["roles", "everyone"] + } + }], + ensureJoined: [] + } + ) +}) + +test("event2message: @room is converted to a role in configured rooms", async t => { + let called = 0 + t.deepEqual( + await eventToMessage({ + type: "m.room.message", + sender: "@cadence:cadence.moe", + content: { + msgtype: "m.text", + body: "@room dinner's ready", + }, + room_id: "!fGgIymcYWOqjbSRUdV:cadence.moe", + event_id: "$SiXetU9h9Dg-M9Frcw_C6ahnoXZ3QPZe3MVJR5tcB9A" + }, data.guild.general, data.channel.general, { + api: { + async getStateEvent(roomID, type, key) { + called++ + t.equal(roomID, "!fGgIymcYWOqjbSRUdV:cadence.moe") + t.equal(type, "m.room.power_levels") + t.equal(key, "") + return { + users: {}, + notifications: { + room: 0 + } + } + }, + async getStateEventOuter(roomID, type, key) { + t.equal(roomID, "!fGgIymcYWOqjbSRUdV:cadence.moe") + t.equal(type, "m.room.create") + t.equal(key, "") + return { + type: "m.room.create", + state_key: "", + sender: "@_ooye_bot:cadence.moe", + content: { + room_version: "11" + } + } + } + } + }), + { + messagesToDelete: [], + messagesToEdit: [], + messagesToSend: [{ + username: "cadence [they]", + content: "<@&123456> dinner's ready", + avatar_url: "https://bridge.example.org/download/matrix/cadence.moe/azCAhThKTojXSZJRoWwZmhvU?preset=avatar", + allowed_mentions: { + parse: ["users", "roles"] + } + }], + ensureJoined: [] + } + ) +}) + +test("event2message: @room is not allowed with mismatched m.mentions", async t => { + let called = 0 + t.deepEqual( + await eventToMessage({ + type: "m.room.message", + sender: "@cadence:cadence.moe", + content: { + "m.mentions": {}, + msgtype: "m.text", + body: "@room dinner's ready", + }, + room_id: "!kLRqKKUQXcibIMtOpl:cadence.moe", + event_id: "$SiXetU9h9Dg-M9Frcw_C6ahnoXZ3QPZe3MVJR5tcB9A" + }, data.guild.general, data.channel.general, { + api: { + async getStateEvent(roomID, type, key) { + called++ + t.equal(roomID, "!kLRqKKUQXcibIMtOpl:cadence.moe") + t.equal(type, "m.room.power_levels") + t.equal(key, "") + return { + users: {}, + notifications: { + room: 0 + } + } + }, + async getStateEventOuter(roomID, type, key) { + t.equal(roomID, "!kLRqKKUQXcibIMtOpl:cadence.moe") + t.equal(type, "m.room.create") + t.equal(key, "") + return { + type: "m.room.create", + state_key: "", + sender: "@_ooye_bot:cadence.moe", + content: { + room_version: "11" + } + } + } + } + }), + { + messagesToDelete: [], + messagesToEdit: [], + messagesToSend: [{ + username: "cadence [they]", + content: "@room dinner's ready", + avatar_url: "https://bridge.example.org/download/letter-avatar?letter=C&hue=90", + allowed_mentions: { + users: [], + parse: ["roles"] } }], ensureJoined: [] diff --git a/test/ooye-test-data.sql b/test/ooye-test-data.sql index 072397f..a164066 100644 --- a/test/ooye-test-data.sql +++ b/test/ooye-test-data.sql @@ -25,6 +25,7 @@ INSERT INTO channel_room (channel_id, room_id, name, nick, thread_parent, custom ('1161864271370666075', '!mHmhQQPwXNananMUqq:cadence.moe', 'updates', NULL, NULL, NULL, '112760669178241024'), ('1438284564815548418', '!MHxNpwtgVqWOrmyoTn:cadence.moe', 'sin-cave', NULL, NULL, NULL, '665289423482519565'), ('598707048112193536', '!JBxeGYnzQwLnaooOLD:cadence.moe', 'winners', NULL, NULL, NULL, '1345641201902288987'); +UPDATE channel_room SET room_mention_role = '123456' WHERE room_id = '!fGgIymcYWOqjbSRUdV:cadence.moe'; INSERT INTO historical_channel_room (reference_channel_id, room_id, upgraded_timestamp) SELECT channel_id, room_id, 0 FROM channel_room;