mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 12:00:44 +00:00
test: speed matrix verification waits
This commit is contained in:
@@ -940,7 +940,7 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
});
|
||||
|
||||
it("ignores verification notices in unrelated non-DM rooms", async () => {
|
||||
const { sendMessage, roomEventListener } = createHarness({
|
||||
const { sendMessage, roomEventListener, flushTasks } = createHarness({
|
||||
joinedMembersByRoom: {
|
||||
"!group:example.org": ["@alice:example.org", "@bot:example.org", "@ops:example.org"],
|
||||
},
|
||||
@@ -972,13 +972,12 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
},
|
||||
});
|
||||
|
||||
await vi.waitFor(() => {
|
||||
expect(sendMessage).toHaveBeenCalledTimes(0);
|
||||
});
|
||||
await flushTasks();
|
||||
expect(sendMessage).toHaveBeenCalledTimes(0);
|
||||
});
|
||||
|
||||
it("routes unmapped verification summaries to the room marked direct in member state", async () => {
|
||||
const { sendMessage, verificationSummaryListener } = createHarness({
|
||||
const { sendMessage, verificationSummaryListener, flushTasks } = createHarness({
|
||||
joinedMembersByRoom: {
|
||||
"!fallback:example.org": ["@alice:example.org", "@bot:example.org"],
|
||||
"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
|
||||
@@ -1018,24 +1017,24 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
updatedAt: new Date("2026-02-25T21:42:55.000Z").toISOString(),
|
||||
});
|
||||
|
||||
await vi.waitFor(() => {
|
||||
expect(sendMessage).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
await flushTasks();
|
||||
expect(sendMessage).toHaveBeenCalledTimes(1);
|
||||
expect((sendMessage.mock.calls as unknown[][])[0]?.[0]).toBe("!dm:example.org");
|
||||
});
|
||||
|
||||
it("prefers the active direct room over a stale remembered strict room for unmapped summaries", async () => {
|
||||
const { sendMessage, roomEventListener, verificationSummaryListener } = createHarness({
|
||||
joinedMembersByRoom: {
|
||||
"!fallback:example.org": ["@alice:example.org", "@bot:example.org"],
|
||||
"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
|
||||
},
|
||||
memberStateByRoomUser: {
|
||||
"!dm:example.org": {
|
||||
"@bot:example.org": { is_direct: true },
|
||||
const { sendMessage, roomEventListener, verificationSummaryListener, flushTasks } =
|
||||
createHarness({
|
||||
joinedMembersByRoom: {
|
||||
"!fallback:example.org": ["@alice:example.org", "@bot:example.org"],
|
||||
"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
|
||||
},
|
||||
},
|
||||
});
|
||||
memberStateByRoomUser: {
|
||||
"!dm:example.org": {
|
||||
"@bot:example.org": { is_direct: true },
|
||||
},
|
||||
},
|
||||
});
|
||||
if (!verificationSummaryListener) {
|
||||
throw new Error("verification.summary listener was not registered");
|
||||
}
|
||||
@@ -1050,9 +1049,8 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
},
|
||||
});
|
||||
|
||||
await vi.waitFor(() => {
|
||||
expect(sendMessage).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
await flushTasks();
|
||||
expect(sendMessage).toHaveBeenCalledTimes(1);
|
||||
sendMessage.mockClear();
|
||||
|
||||
verificationSummaryListener({
|
||||
@@ -1080,14 +1078,13 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
updatedAt: new Date("2026-02-25T21:42:55.000Z").toISOString(),
|
||||
});
|
||||
|
||||
await vi.waitFor(() => {
|
||||
expect(sendMessage).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
await flushTasks();
|
||||
expect(sendMessage).toHaveBeenCalledTimes(1);
|
||||
expect((sendMessage.mock.calls as unknown[][])[0]?.[0]).toBe("!dm:example.org");
|
||||
});
|
||||
|
||||
it("does not emit duplicate SAS notices for the same verification payload", async () => {
|
||||
const { sendMessage, roomEventListener, listVerifications } = createHarness({
|
||||
const { sendMessage, roomEventListener, listVerifications, flushTasks } = createHarness({
|
||||
verifications: [
|
||||
{
|
||||
id: "verification-3",
|
||||
@@ -1114,9 +1111,8 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
"m.relates_to": { event_id: "$req3" },
|
||||
},
|
||||
});
|
||||
await vi.waitFor(() => {
|
||||
expect(sendMessage.mock.calls.length).toBeGreaterThan(0);
|
||||
});
|
||||
await flushTasks();
|
||||
expect(sendMessage.mock.calls.length).toBeGreaterThan(0);
|
||||
|
||||
roomEventListener("!room:example.org", {
|
||||
event_id: "$key3",
|
||||
@@ -1127,9 +1123,8 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
"m.relates_to": { event_id: "$req3" },
|
||||
},
|
||||
});
|
||||
await vi.waitFor(() => {
|
||||
expect(listVerifications).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
await flushTasks();
|
||||
expect(listVerifications).toHaveBeenCalledTimes(2);
|
||||
|
||||
const sasBodies = getSentNoticeBodies(sendMessage).filter((body) =>
|
||||
body.includes("SAS emoji:"),
|
||||
@@ -1138,7 +1133,7 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
});
|
||||
|
||||
it("ignores cancelled verification flows when DM fallback resolves SAS notices", async () => {
|
||||
const { sendMessage, roomEventListener } = createHarness({
|
||||
const { sendMessage, roomEventListener, flushTasks } = createHarness({
|
||||
joinedMembersByRoom: {
|
||||
"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
|
||||
},
|
||||
@@ -1190,16 +1185,16 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
},
|
||||
});
|
||||
|
||||
await vi.waitFor(() => {
|
||||
const bodies = getSentNoticeBodies(sendMessage);
|
||||
expect(bodies.some((body) => body.includes("SAS decimal: 6158 1986 3513"))).toBe(true);
|
||||
});
|
||||
await flushTasks();
|
||||
expect(
|
||||
getSentNoticeBodies(sendMessage).some((body) => body.includes("SAS decimal: 6158 1986 3513")),
|
||||
).toBe(true);
|
||||
const bodies = getSentNoticeBodies(sendMessage);
|
||||
expect(bodies.some((body) => body.includes("SAS decimal: 1111 2222 3333"))).toBe(false);
|
||||
});
|
||||
|
||||
it("preserves strict-room SAS fallback when active DM inspection cannot resolve a room", async () => {
|
||||
const { sendMessage, roomEventListener } = createHarness({
|
||||
const { sendMessage, roomEventListener, flushTasks } = createHarness({
|
||||
joinedMembersByRoom: {
|
||||
"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
|
||||
},
|
||||
@@ -1235,14 +1230,14 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
},
|
||||
});
|
||||
|
||||
await vi.waitFor(() => {
|
||||
const bodies = getSentNoticeBodies(sendMessage);
|
||||
expect(bodies.some((body) => body.includes("SAS decimal: 6158 1986 3513"))).toBe(true);
|
||||
});
|
||||
await flushTasks();
|
||||
expect(
|
||||
getSentNoticeBodies(sendMessage).some((body) => body.includes("SAS decimal: 6158 1986 3513")),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it("prefers the active verification for the current DM when multiple active summaries exist", async () => {
|
||||
const { sendMessage, roomEventListener } = createHarness({
|
||||
const { sendMessage, roomEventListener, flushTasks } = createHarness({
|
||||
joinedMembersByRoom: {
|
||||
"!dm-current:example.org": ["@alice:example.org", "@bot:example.org"],
|
||||
},
|
||||
@@ -1296,16 +1291,16 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
},
|
||||
});
|
||||
|
||||
await vi.waitFor(() => {
|
||||
const bodies = getSentNoticeBodies(sendMessage);
|
||||
expect(bodies.some((body) => body.includes("SAS decimal: 6158 1986 3513"))).toBe(true);
|
||||
});
|
||||
await flushTasks();
|
||||
expect(
|
||||
getSentNoticeBodies(sendMessage).some((body) => body.includes("SAS decimal: 6158 1986 3513")),
|
||||
).toBe(true);
|
||||
const bodies = getSentNoticeBodies(sendMessage);
|
||||
expect(bodies.some((body) => body.includes("SAS decimal: 1111 2222 3333"))).toBe(false);
|
||||
});
|
||||
|
||||
it("does not emit SAS notices for cancelled verification events", async () => {
|
||||
const { sendMessage, roomEventListener } = createHarness({
|
||||
const { sendMessage, roomEventListener, flushTasks } = createHarness({
|
||||
joinedMembersByRoom: {
|
||||
"!dm:example.org": ["@alice:example.org", "@bot:example.org"],
|
||||
},
|
||||
@@ -1342,9 +1337,8 @@ describe("registerMatrixMonitorEvents verification routing", () => {
|
||||
},
|
||||
});
|
||||
|
||||
await vi.waitFor(() => {
|
||||
expect(sendMessage).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
await flushTasks();
|
||||
expect(sendMessage).toHaveBeenCalledTimes(1);
|
||||
const body = getSentNoticeBody(sendMessage, 0);
|
||||
expect(body).toContain("Matrix verification cancelled by @alice:example.org");
|
||||
expect(body).not.toContain("SAS decimal:");
|
||||
|
||||
Reference in New Issue
Block a user