



























@@ -940,7 +940,7 @@ describe("registerMatrixMonitorEvents verification routing", () => {
940940});
941941942942it("ignores verification notices in unrelated non-DM rooms", async () => {
943-const { sendMessage, roomEventListener } = createHarness({
943+const { sendMessage, roomEventListener, flushTasks } = createHarness({
944944joinedMembersByRoom: {
945945"!group:example.org": ["@alice:example.org", "@bot:example.org", "@ops:example.org"],
946946},
@@ -972,13 +972,12 @@ describe("registerMatrixMonitorEvents verification routing", () => {
972972},
973973});
974974975-await vi.waitFor(() => {
976-expect(sendMessage).toHaveBeenCalledTimes(0);
977-});
975+await flushTasks();
976+expect(sendMessage).toHaveBeenCalledTimes(0);
978977});
979978980979it("routes unmapped verification summaries to the room marked direct in member state", async () => {
981-const { sendMessage, verificationSummaryListener } = createHarness({
980+const { sendMessage, verificationSummaryListener, flushTasks } = createHarness({
982981joinedMembersByRoom: {
983982"!fallback:example.org": ["@alice:example.org", "@bot:example.org"],
984983"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
@@ -1018,24 +1017,24 @@ describe("registerMatrixMonitorEvents verification routing", () => {
10181017updatedAt: new Date("2026-02-25T21:42:55.000Z").toISOString(),
10191018});
102010191021-await vi.waitFor(() => {
1022-expect(sendMessage).toHaveBeenCalledTimes(1);
1023-});
1020+await flushTasks();
1021+expect(sendMessage).toHaveBeenCalledTimes(1);
10241022expect((sendMessage.mock.calls as unknown[][])[0]?.[0]).toBe("!dm:example.org");
10251023});
1026102410271025it("prefers the active direct room over a stale remembered strict room for unmapped summaries", async () => {
1028-const { sendMessage, roomEventListener, verificationSummaryListener } = createHarness({
1029-joinedMembersByRoom: {
1030-"!fallback:example.org": ["@alice:example.org", "@bot:example.org"],
1031-"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
1032-},
1033-memberStateByRoomUser: {
1034-"!dm:example.org": {
1035-"@bot:example.org": { is_direct: true },
1026+const { sendMessage, roomEventListener, verificationSummaryListener, flushTasks } =
1027+createHarness({
1028+joinedMembersByRoom: {
1029+"!fallback:example.org": ["@alice:example.org", "@bot:example.org"],
1030+"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
10361031},
1037-},
1038-});
1032+memberStateByRoomUser: {
1033+"!dm:example.org": {
1034+"@bot:example.org": { is_direct: true },
1035+},
1036+},
1037+});
10391038if (!verificationSummaryListener) {
10401039throw new Error("verification.summary listener was not registered");
10411040}
@@ -1050,9 +1049,8 @@ describe("registerMatrixMonitorEvents verification routing", () => {
10501049},
10511050});
105210511053-await vi.waitFor(() => {
1054-expect(sendMessage).toHaveBeenCalledTimes(1);
1055-});
1052+await flushTasks();
1053+expect(sendMessage).toHaveBeenCalledTimes(1);
10561054sendMessage.mockClear();
1057105510581056verificationSummaryListener({
@@ -1080,14 +1078,13 @@ describe("registerMatrixMonitorEvents verification routing", () => {
10801078updatedAt: new Date("2026-02-25T21:42:55.000Z").toISOString(),
10811079});
108210801083-await vi.waitFor(() => {
1084-expect(sendMessage).toHaveBeenCalledTimes(1);
1085-});
1081+await flushTasks();
1082+expect(sendMessage).toHaveBeenCalledTimes(1);
10861083expect((sendMessage.mock.calls as unknown[][])[0]?.[0]).toBe("!dm:example.org");
10871084});
1088108510891086it("does not emit duplicate SAS notices for the same verification payload", async () => {
1090-const { sendMessage, roomEventListener, listVerifications } = createHarness({
1087+const { sendMessage, roomEventListener, listVerifications, flushTasks } = createHarness({
10911088verifications: [
10921089{
10931090id: "verification-3",
@@ -1114,9 +1111,8 @@ describe("registerMatrixMonitorEvents verification routing", () => {
11141111"m.relates_to": { event_id: "$req3" },
11151112},
11161113});
1117-await vi.waitFor(() => {
1118-expect(sendMessage.mock.calls.length).toBeGreaterThan(0);
1119-});
1114+await flushTasks();
1115+expect(sendMessage.mock.calls.length).toBeGreaterThan(0);
1120111611211117roomEventListener("!room:example.org", {
11221118event_id: "$key3",
@@ -1127,9 +1123,8 @@ describe("registerMatrixMonitorEvents verification routing", () => {
11271123"m.relates_to": { event_id: "$req3" },
11281124},
11291125});
1130-await vi.waitFor(() => {
1131-expect(listVerifications).toHaveBeenCalledTimes(2);
1132-});
1126+await flushTasks();
1127+expect(listVerifications).toHaveBeenCalledTimes(2);
1133112811341129const sasBodies = getSentNoticeBodies(sendMessage).filter((body) =>
11351130body.includes("SAS emoji:"),
@@ -1138,7 +1133,7 @@ describe("registerMatrixMonitorEvents verification routing", () => {
11381133});
1139113411401135it("ignores cancelled verification flows when DM fallback resolves SAS notices", async () => {
1141-const { sendMessage, roomEventListener } = createHarness({
1136+const { sendMessage, roomEventListener, flushTasks } = createHarness({
11421137joinedMembersByRoom: {
11431138"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
11441139},
@@ -1190,16 +1185,16 @@ describe("registerMatrixMonitorEvents verification routing", () => {
11901185},
11911186});
119211871193-await vi.waitFor(() => {
1194- const bodies = getSentNoticeBodies(sendMessage);
1195-expect(bodies.some((body) => body.includes("SAS decimal: 6158 1986 3513"))).toBe(true);
1196-});
1188+await flushTasks();
1189+expect(
1190+getSentNoticeBodies(sendMessage).some((body) => body.includes("SAS decimal: 6158 1986 3513")),
1191+).toBe(true);
11971192const bodies = getSentNoticeBodies(sendMessage);
11981193expect(bodies.some((body) => body.includes("SAS decimal: 1111 2222 3333"))).toBe(false);
11991194});
1200119512011196it("preserves strict-room SAS fallback when active DM inspection cannot resolve a room", async () => {
1202-const { sendMessage, roomEventListener } = createHarness({
1197+const { sendMessage, roomEventListener, flushTasks } = createHarness({
12031198joinedMembersByRoom: {
12041199"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
12051200},
@@ -1235,14 +1230,14 @@ describe("registerMatrixMonitorEvents verification routing", () => {
12351230},
12361231});
123712321238-await vi.waitFor(() => {
1239- const bodies = getSentNoticeBodies(sendMessage);
1240-expect(bodies.some((body) => body.includes("SAS decimal: 6158 1986 3513"))).toBe(true);
1241-});
1233+await flushTasks();
1234+expect(
1235+getSentNoticeBodies(sendMessage).some((body) => body.includes("SAS decimal: 6158 1986 3513")),
1236+).toBe(true);
12421237});
1243123812441239it("prefers the active verification for the current DM when multiple active summaries exist", async () => {
1245-const { sendMessage, roomEventListener } = createHarness({
1240+const { sendMessage, roomEventListener, flushTasks } = createHarness({
12461241joinedMembersByRoom: {
12471242"!dm-current:example.org": ["@alice:example.org", "@bot:example.org"],
12481243},
@@ -1296,16 +1291,16 @@ describe("registerMatrixMonitorEvents verification routing", () => {
12961291},
12971292});
129812931299-await vi.waitFor(() => {
1300- const bodies = getSentNoticeBodies(sendMessage);
1301-expect(bodies.some((body) => body.includes("SAS decimal: 6158 1986 3513"))).toBe(true);
1302-});
1294+await flushTasks();
1295+expect(
1296+getSentNoticeBodies(sendMessage).some((body) => body.includes("SAS decimal: 6158 1986 3513")),
1297+).toBe(true);
13031298const bodies = getSentNoticeBodies(sendMessage);
13041299expect(bodies.some((body) => body.includes("SAS decimal: 1111 2222 3333"))).toBe(false);
13051300});
1306130113071302it("does not emit SAS notices for cancelled verification events", async () => {
1308-const { sendMessage, roomEventListener } = createHarness({
1303+const { sendMessage, roomEventListener, flushTasks } = createHarness({
13091304joinedMembersByRoom: {
13101305"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
13111306},
@@ -1342,9 +1337,8 @@ describe("registerMatrixMonitorEvents verification routing", () => {
13421337},
13431338});
134413391345-await vi.waitFor(() => {
1346-expect(sendMessage).toHaveBeenCalledTimes(1);
1347-});
1340+await flushTasks();
1341+expect(sendMessage).toHaveBeenCalledTimes(1);
13481342const body = getSentNoticeBody(sendMessage, 0);
13491343expect(body).toContain("Matrix verification cancelled by @alice:example.org");
13501344expect(body).not.toContain("SAS decimal:");
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。