test: cover MEDIA backticks and web media fallback logging
This commit is contained in:
@@ -198,6 +198,31 @@ describe("config and templating", () => {
|
||||
expect(result?.text).toBe("caption before caption after");
|
||||
});
|
||||
|
||||
it("captures MEDIA wrapped in backticks", async () => {
|
||||
const runSpy = vi.spyOn(index, "runCommandWithTimeout").mockResolvedValue({
|
||||
stdout: "MEDIA:`/tmp/pic.png` cool",
|
||||
stderr: "",
|
||||
code: 0,
|
||||
signal: null,
|
||||
killed: false,
|
||||
});
|
||||
const cfg = {
|
||||
inbound: {
|
||||
reply: {
|
||||
mode: "command" as const,
|
||||
command: ["echo", "{{Body}}"],
|
||||
},
|
||||
},
|
||||
};
|
||||
const result = await index.getReplyFromConfig(
|
||||
{ Body: "hi", From: "+1", To: "+2" },
|
||||
undefined,
|
||||
cfg,
|
||||
runSpy,
|
||||
);
|
||||
expect(result?.mediaUrl).toBe("/tmp/pic.png");
|
||||
});
|
||||
|
||||
it("ignores invalid MEDIA lines with whitespace", async () => {
|
||||
const runSpy = vi.spyOn(index, "runCommandWithTimeout").mockResolvedValue({
|
||||
stdout: "hello\nMEDIA: not a url with spaces\nrest\n",
|
||||
|
||||
@@ -46,6 +46,7 @@ import {
|
||||
sendMessageWeb,
|
||||
waitForWaConnection,
|
||||
} from "./provider-web.js";
|
||||
import { monitorWebProvider } from "./index.js";
|
||||
|
||||
const baileys = (await import(
|
||||
"@whiskeysockets/baileys"
|
||||
@@ -209,6 +210,49 @@ describe("provider-web", () => {
|
||||
await listener.close();
|
||||
});
|
||||
|
||||
it("monitorWebProvider falls back to text when media send fails", async () => {
|
||||
const sendMedia = vi.fn().mockRejectedValue(new Error("boom"));
|
||||
const reply = vi.fn().mockResolvedValue(undefined);
|
||||
const sendComposing = vi.fn();
|
||||
const resolver = vi.fn().mockResolvedValue({
|
||||
text: "hi",
|
||||
mediaUrl: "https://example.com/img.png",
|
||||
});
|
||||
|
||||
let capturedOnMessage: ((msg: any) => Promise<void>) | undefined;
|
||||
const listenerFactory = async (opts: { onMessage: (msg: any) => Promise<void> }) => {
|
||||
capturedOnMessage = opts.onMessage;
|
||||
return { close: vi.fn() };
|
||||
};
|
||||
|
||||
const fetchMock = vi
|
||||
.spyOn(global as any, "fetch")
|
||||
.mockResolvedValue({
|
||||
ok: true,
|
||||
body: true,
|
||||
arrayBuffer: async () => new ArrayBuffer(1024),
|
||||
headers: { get: () => "image/png" },
|
||||
status: 200,
|
||||
} as any);
|
||||
|
||||
await monitorWebProvider(false, listenerFactory as any, false, resolver);
|
||||
|
||||
expect(capturedOnMessage).toBeDefined();
|
||||
await capturedOnMessage?.({
|
||||
body: "hello",
|
||||
from: "+1",
|
||||
to: "+2",
|
||||
id: "msg1",
|
||||
sendComposing,
|
||||
reply,
|
||||
sendMedia,
|
||||
});
|
||||
|
||||
expect(sendMedia).toHaveBeenCalled();
|
||||
expect(reply).toHaveBeenCalledWith("hi");
|
||||
fetchMock.mockRestore();
|
||||
});
|
||||
|
||||
it("logWebSelfId prints cached E.164 when creds exist", () => {
|
||||
const existsSpy = vi
|
||||
.spyOn(fsSync, "existsSync")
|
||||
|
||||
Reference in New Issue
Block a user