mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-24 14:21:03 +00:00
test: dedupe outbound delivery mock calls
This commit is contained in:
@@ -1123,7 +1123,13 @@ describe("deliverOutboundPayloads", () => {
|
||||
},
|
||||
});
|
||||
|
||||
const [mediaAccessOptions] = resolveMediaAccessSpy.mock.calls.at(0) ?? [];
|
||||
const [mediaAccessOptions] = requireMockCall(resolveMediaAccessSpy, "media access") as [
|
||||
{
|
||||
messageProvider?: unknown;
|
||||
requesterSenderId?: unknown;
|
||||
sessionKey?: unknown;
|
||||
},
|
||||
];
|
||||
expect(mediaAccessOptions?.sessionKey).toBe("agent:main:matrix:room:ops");
|
||||
expect(mediaAccessOptions?.messageProvider).toBeUndefined();
|
||||
expect(mediaAccessOptions?.requesterSenderId).toBe("attacker");
|
||||
@@ -1152,7 +1158,14 @@ describe("deliverOutboundPayloads", () => {
|
||||
},
|
||||
});
|
||||
|
||||
const [mediaAccessOptions] = resolveMediaAccessSpy.mock.calls.at(0) ?? [];
|
||||
const [mediaAccessOptions] = requireMockCall(resolveMediaAccessSpy, "media access") as [
|
||||
{
|
||||
requesterSenderE164?: unknown;
|
||||
requesterSenderId?: unknown;
|
||||
requesterSenderName?: unknown;
|
||||
requesterSenderUsername?: unknown;
|
||||
},
|
||||
];
|
||||
expect(mediaAccessOptions?.requesterSenderId).toBe("id:matrix:123");
|
||||
expect(mediaAccessOptions?.requesterSenderName).toBe("Alice");
|
||||
expect(mediaAccessOptions?.requesterSenderUsername).toBe("alice_u");
|
||||
@@ -1181,7 +1194,13 @@ describe("deliverOutboundPayloads", () => {
|
||||
},
|
||||
});
|
||||
|
||||
const [mediaAccessOptions] = resolveMediaAccessSpy.mock.calls.at(0) ?? [];
|
||||
const [mediaAccessOptions] = requireMockCall(resolveMediaAccessSpy, "media access") as [
|
||||
{
|
||||
accountId?: unknown;
|
||||
requesterSenderId?: unknown;
|
||||
sessionKey?: unknown;
|
||||
},
|
||||
];
|
||||
expect(mediaAccessOptions?.sessionKey).toBe("agent:main:matrix:room:ops");
|
||||
expect(mediaAccessOptions?.accountId).toBe("source-account");
|
||||
expect(mediaAccessOptions?.requesterSenderId).toBe("attacker");
|
||||
@@ -1489,7 +1508,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
payloads: [{ text: "original" }],
|
||||
});
|
||||
|
||||
expect(sendText.mock.calls.at(0)?.[0]?.text).toBe("visible");
|
||||
expect(requireMockCallArg(sendText, "sendText").text).toBe("visible");
|
||||
});
|
||||
|
||||
it("strips internal runtime scaffolding before adapter payload normalization copies text", async () => {
|
||||
@@ -1533,7 +1552,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
payloads: [{ text: "original" }],
|
||||
});
|
||||
|
||||
const deliveredPayload = sendPayload.mock.calls.at(0)?.[0]?.payload as
|
||||
const deliveredPayload = requireMockCallArg(sendPayload, "sendPayload").payload as
|
||||
| { channelData?: unknown; text?: unknown }
|
||||
| undefined;
|
||||
expect(deliveredPayload?.text).toBe("visible");
|
||||
@@ -1647,12 +1666,10 @@ describe("deliverOutboundPayloads", () => {
|
||||
],
|
||||
});
|
||||
|
||||
expect(JSON.stringify(sendPayload.mock.calls.at(0)?.[0]?.payload)).not.toContain(
|
||||
"previous_response",
|
||||
);
|
||||
const deliveredPayload = sendPayload.mock.calls.at(0)?.[0]?.payload as
|
||||
const deliveredPayload = requireMockCallArg(sendPayload, "sendPayload").payload as
|
||||
| { channelData?: unknown; interactive?: unknown; text?: unknown }
|
||||
| undefined;
|
||||
expect(JSON.stringify(deliveredPayload)).not.toContain("previous_response");
|
||||
expect(deliveredPayload?.text).toBe("visible");
|
||||
expect(deliveredPayload?.channelData).toStrictEqual({
|
||||
renderedText: "visible",
|
||||
@@ -1693,7 +1710,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
payloads: [{ text: "hello" }],
|
||||
});
|
||||
|
||||
const afterDeliveryOptions = afterDeliverPayload.mock.calls.at(0)?.[0] as
|
||||
const afterDeliveryOptions = requireMockCallArg(afterDeliverPayload, "afterDeliverPayload") as
|
||||
| {
|
||||
payload?: { text?: unknown };
|
||||
results?: unknown;
|
||||
@@ -1755,7 +1772,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
});
|
||||
|
||||
expect(sendFormattedText).toHaveBeenCalledTimes(1);
|
||||
const formattedTextOptions = sendFormattedText.mock.calls.at(0)?.[0] as
|
||||
const formattedTextOptions = requireMockCallArg(sendFormattedText, "sendFormattedText") as
|
||||
| { accountId?: unknown; text?: unknown; to?: unknown }
|
||||
| undefined;
|
||||
expect(formattedTextOptions?.to).toBe("U123");
|
||||
@@ -1777,7 +1794,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
});
|
||||
|
||||
expect(sendFormattedMedia).toHaveBeenCalledTimes(1);
|
||||
const sendFormattedMediaCall = sendFormattedMedia.mock.calls.at(0)?.[0] as
|
||||
const sendFormattedMediaCall = requireMockCallArg(sendFormattedMedia, "sendFormattedMedia") as
|
||||
| { mediaLocalRoots?: string[]; mediaUrl?: unknown; text?: unknown; to?: unknown }
|
||||
| undefined;
|
||||
expect(sendFormattedMediaCall?.to).toBe("U123");
|
||||
@@ -1947,9 +1964,10 @@ describe("deliverOutboundPayloads", () => {
|
||||
],
|
||||
});
|
||||
|
||||
const sendingCall = hookMocks.runner.runMessageSending.mock.calls.at(0) as
|
||||
| [{ content?: unknown }, { channelId?: unknown }]
|
||||
| undefined;
|
||||
const sendingCall = requireMockCall(
|
||||
hookMocks.runner.runMessageSending,
|
||||
"message_sending hook",
|
||||
) as [{ content?: unknown }, { channelId?: unknown }] | undefined;
|
||||
expect(sendingCall?.[0]?.content).toBe("original hidden transcript");
|
||||
expect(sendingCall?.[1]?.channelId).toBe("matrix");
|
||||
const sendMediaOptions = (
|
||||
@@ -1960,7 +1978,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
expect(sendMediaOptions?.text).toBe("");
|
||||
expect(sendMediaOptions?.mediaUrl).toBe("file:///tmp/clip.opus");
|
||||
expect(sendMediaOptions?.audioAsVoice).toBe(true);
|
||||
const sentCall = hookMocks.runner.runMessageSent.mock.calls.at(0) as
|
||||
const sentCall = requireMockCall(hookMocks.runner.runMessageSent, "message_sent hook") as
|
||||
| [{ content?: unknown; success?: unknown }, { channelId?: unknown }]
|
||||
| undefined;
|
||||
expect(sentCall?.[0]?.content).toBe("rewritten hidden transcript");
|
||||
@@ -2317,7 +2335,10 @@ describe("deliverOutboundPayloads", () => {
|
||||
expect(sendMatrix).toHaveBeenCalledTimes(2);
|
||||
|
||||
expect(internalHookMocks.createInternalHookEvent).toHaveBeenCalledTimes(1);
|
||||
const createHookCall = internalHookMocks.createInternalHookEvent.mock.calls.at(0) as
|
||||
const createHookCall = requireMockCall(
|
||||
internalHookMocks.createInternalHookEvent,
|
||||
"create internal hook event",
|
||||
) as
|
||||
| [
|
||||
unknown,
|
||||
unknown,
|
||||
@@ -2359,7 +2380,10 @@ describe("deliverOutboundPayloads", () => {
|
||||
await deliverSingleMatrixForHookTest({ sessionKey: "agent:main:main" });
|
||||
|
||||
expect(internalHookMocks.createInternalHookEvent).toHaveBeenCalledTimes(1);
|
||||
const createHookCall = internalHookMocks.createInternalHookEvent.mock.calls.at(0) as
|
||||
const createHookCall = requireMockCall(
|
||||
internalHookMocks.createInternalHookEvent,
|
||||
"create internal hook event",
|
||||
) as
|
||||
| [
|
||||
unknown,
|
||||
unknown,
|
||||
@@ -2399,10 +2423,11 @@ describe("deliverOutboundPayloads", () => {
|
||||
session: { agentId: "agent-main" },
|
||||
});
|
||||
|
||||
expect(logMocks.warn.mock.calls.at(0)?.[0]).toBe(
|
||||
const warnCall = requireMockCall(logMocks.warn, "warn");
|
||||
expect(warnCall[0]).toBe(
|
||||
"deliverOutboundPayloads: session.agentId present without session key; internal message:sent hook will be skipped",
|
||||
);
|
||||
const warnContext = logMocks.warn.mock.calls.at(0)?.[1] as
|
||||
const warnContext = warnCall[1] as
|
||||
| { agentId?: unknown; channel?: unknown; to?: unknown }
|
||||
| undefined;
|
||||
expect(warnContext?.channel).toBe("matrix");
|
||||
@@ -2690,7 +2715,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
});
|
||||
|
||||
expect(onError).toHaveBeenCalledTimes(1);
|
||||
const [error, failedPayload] = onError.mock.calls.at(0) ?? [];
|
||||
const [error, failedPayload] = requireMockCall(onError, "onError");
|
||||
expect(error).toBeInstanceOf(Error);
|
||||
expect((failedPayload as { text?: unknown } | undefined)?.text).toBe("hi");
|
||||
expect((failedPayload as { mediaUrls?: unknown } | undefined)?.mediaUrls).toStrictEqual([
|
||||
@@ -2753,7 +2778,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
deps: { matrix: sendMatrix },
|
||||
});
|
||||
|
||||
const sentCall = hookMocks.runner.runMessageSent.mock.calls.at(0) as
|
||||
const sentCall = requireMockCall(hookMocks.runner.runMessageSent, "message_sent hook") as
|
||||
| [{ content?: unknown; success?: unknown; to?: unknown }, { channelId?: unknown }]
|
||||
| undefined;
|
||||
expect(sentCall?.[0]?.to).toBe("!room:example");
|
||||
@@ -2828,7 +2853,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
});
|
||||
|
||||
expect(results).toEqual([{ channel: "matrix", messageId: "mx-1" }]);
|
||||
expect(sendText.mock.calls.at(0)?.[0]?.text).toBe("provider exploded");
|
||||
expect(requireMockCallArg(sendText, "sendText").text).toBe("provider exploded");
|
||||
expect(sendPayload).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
@@ -2861,7 +2886,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
});
|
||||
|
||||
expect(results).toEqual([{ channel: "matrix", messageId: "mx-1" }]);
|
||||
const sendPayloadOptions = sendPayload.mock.calls.at(0)?.[0] as
|
||||
const sendPayloadOptions = requireMockCallArg(sendPayload, "sendPayload") as
|
||||
| { payload?: { isError?: unknown; text?: unknown }; text?: unknown }
|
||||
| undefined;
|
||||
expect(sendPayloadOptions?.text).toBe("provider exploded");
|
||||
@@ -2936,7 +2961,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
payloads: [{ text: "payload text", channelData: { mode: "custom" } }],
|
||||
});
|
||||
|
||||
const sentCall = hookMocks.runner.runMessageSent.mock.calls.at(0) as
|
||||
const sentCall = requireMockCall(hookMocks.runner.runMessageSent, "message_sent hook") as
|
||||
| [{ content?: unknown; success?: unknown; to?: unknown }, { channelId?: unknown }]
|
||||
| undefined;
|
||||
expect(sentCall?.[0]?.to).toBe("!room:1");
|
||||
@@ -2970,10 +2995,11 @@ describe("deliverOutboundPayloads", () => {
|
||||
|
||||
expect(results).toEqual([{ channel: "matrix", messageId: "mx-1" }]);
|
||||
expect(pinDeliveredMessage).toHaveBeenCalledTimes(1);
|
||||
expect(logMocks.warn.mock.calls.at(0)?.[0]).toBe(
|
||||
const warnCall = requireMockCall(logMocks.warn, "warn");
|
||||
expect(warnCall[0]).toBe(
|
||||
"Delivery pin requested, but channel failed to pin delivered message.",
|
||||
);
|
||||
const warnContext = logMocks.warn.mock.calls.at(0)?.[1] as
|
||||
const warnContext = warnCall[1] as
|
||||
| { channel?: unknown; error?: unknown; messageId?: unknown }
|
||||
| undefined;
|
||||
expect(warnContext?.channel).toBe("matrix");
|
||||
@@ -3112,7 +3138,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
});
|
||||
|
||||
expect(sendPayload).toHaveBeenCalledTimes(1);
|
||||
const sendPayloadOptions = sendPayload.mock.calls.at(0)?.[0] as
|
||||
const sendPayloadOptions = requireMockCallArg(sendPayload, "sendPayload") as
|
||||
| { payload?: { channelData?: unknown; text?: unknown } }
|
||||
| undefined;
|
||||
expect(sendPayloadOptions?.payload?.text).toBe("");
|
||||
@@ -3143,13 +3169,12 @@ describe("deliverOutboundPayloads", () => {
|
||||
});
|
||||
|
||||
expect(sendText).toHaveBeenCalledTimes(1);
|
||||
expect(sendText.mock.calls.at(0)?.[0]?.text).toBe("caption");
|
||||
expect(logMocks.warn.mock.calls.at(0)?.[0]).toBe(
|
||||
expect(requireMockCallArg(sendText, "sendText").text).toBe("caption");
|
||||
const warnCall = requireMockCall(logMocks.warn, "warn");
|
||||
expect(warnCall[0]).toBe(
|
||||
"Plugin outbound adapter does not implement sendMedia; media URLs will be dropped and text fallback will be used",
|
||||
);
|
||||
const warnContext = logMocks.warn.mock.calls.at(0)?.[1] as
|
||||
| { channel?: unknown; mediaCount?: unknown }
|
||||
| undefined;
|
||||
const warnContext = warnCall[1] as { channel?: unknown; mediaCount?: unknown } | undefined;
|
||||
expect(warnContext?.channel).toBe("matrix");
|
||||
expect(warnContext?.mediaCount).toBe(1);
|
||||
expect(results).toEqual([{ channel: "matrix", messageId: "mx-1" }]);
|
||||
@@ -3183,13 +3208,12 @@ describe("deliverOutboundPayloads", () => {
|
||||
});
|
||||
|
||||
expect(sendText).toHaveBeenCalledTimes(1);
|
||||
expect(sendText.mock.calls.at(0)?.[0]?.text).toBe("caption");
|
||||
expect(logMocks.warn.mock.calls.at(0)?.[0]).toBe(
|
||||
expect(requireMockCallArg(sendText, "sendText").text).toBe("caption");
|
||||
const warnCall = requireMockCall(logMocks.warn, "warn");
|
||||
expect(warnCall[0]).toBe(
|
||||
"Plugin outbound adapter does not implement sendMedia; media URLs will be dropped and text fallback will be used",
|
||||
);
|
||||
const warnContext = logMocks.warn.mock.calls.at(0)?.[1] as
|
||||
| { channel?: unknown; mediaCount?: unknown }
|
||||
| undefined;
|
||||
const warnContext = warnCall[1] as { channel?: unknown; mediaCount?: unknown } | undefined;
|
||||
expect(warnContext?.channel).toBe("matrix");
|
||||
expect(warnContext?.mediaCount).toBe(2);
|
||||
expect(results).toEqual([{ channel: "matrix", messageId: "mx-2" }]);
|
||||
@@ -3223,15 +3247,14 @@ describe("deliverOutboundPayloads", () => {
|
||||
);
|
||||
|
||||
expect(sendText).not.toHaveBeenCalled();
|
||||
expect(logMocks.warn.mock.calls.at(0)?.[0]).toBe(
|
||||
const warnCall = requireMockCall(logMocks.warn, "warn");
|
||||
expect(warnCall[0]).toBe(
|
||||
"Plugin outbound adapter does not implement sendMedia; media URLs will be dropped and text fallback will be used",
|
||||
);
|
||||
const warnContext = logMocks.warn.mock.calls.at(0)?.[1] as
|
||||
| { channel?: unknown; mediaCount?: unknown }
|
||||
| undefined;
|
||||
const warnContext = warnCall[1] as { channel?: unknown; mediaCount?: unknown } | undefined;
|
||||
expect(warnContext?.channel).toBe("matrix");
|
||||
expect(warnContext?.mediaCount).toBe(1);
|
||||
const sentCall = hookMocks.runner.runMessageSent.mock.calls.at(0) as
|
||||
const sentCall = requireMockCall(hookMocks.runner.runMessageSent, "message_sent hook") as
|
||||
| [
|
||||
{ content?: unknown; error?: unknown; success?: unknown; to?: unknown },
|
||||
{ channelId?: unknown },
|
||||
@@ -3260,7 +3283,7 @@ describe("deliverOutboundPayloads", () => {
|
||||
}),
|
||||
).rejects.toThrow("downstream failed");
|
||||
|
||||
const sentCall = hookMocks.runner.runMessageSent.mock.calls.at(0) as
|
||||
const sentCall = requireMockCall(hookMocks.runner.runMessageSent, "message_sent hook") as
|
||||
| [
|
||||
{ content?: unknown; error?: unknown; success?: unknown; to?: unknown },
|
||||
{ channelId?: unknown },
|
||||
|
||||
Reference in New Issue
Block a user