perf(pi): reuse tau rpc for command auto-replies
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import type { AnyMessageContent } from "@whiskeysockets/baileys";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
|
||||
import { resetLogger, setLoggerOverride } from "../logging.js";
|
||||
@@ -17,6 +18,11 @@ vi.mock("./session.js", () => {
|
||||
};
|
||||
});
|
||||
|
||||
const loadWebMediaMock = vi.fn();
|
||||
vi.mock("./media.js", () => ({
|
||||
loadWebMedia: (...args: unknown[]) => loadWebMediaMock(...args),
|
||||
}));
|
||||
|
||||
import { sendMessageWeb } from "./outbound.js";
|
||||
|
||||
const { createWaSocket } = await import("./session.js");
|
||||
@@ -37,4 +43,98 @@ describe("web outbound", () => {
|
||||
expect(sock.sendMessage).toHaveBeenCalled();
|
||||
expect(sock.ws.close).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("maps audio to PTT with opus mime when ogg", async () => {
|
||||
const buf = Buffer.from("audio");
|
||||
loadWebMediaMock.mockResolvedValueOnce({
|
||||
buffer: buf,
|
||||
contentType: "audio/ogg",
|
||||
kind: "audio",
|
||||
});
|
||||
await sendMessageWeb("+1555", "voice note", {
|
||||
verbose: false,
|
||||
mediaUrl: "/tmp/voice.ogg",
|
||||
});
|
||||
const sock = await createWaSocket();
|
||||
const [, payload] = sock.sendMessage.mock.calls.at(-1) as [
|
||||
string,
|
||||
AnyMessageContent,
|
||||
];
|
||||
expect(payload).toMatchObject({
|
||||
audio: buf,
|
||||
ptt: true,
|
||||
mimetype: "audio/ogg; codecs=opus",
|
||||
});
|
||||
});
|
||||
|
||||
it("maps video with caption", async () => {
|
||||
const buf = Buffer.from("video");
|
||||
loadWebMediaMock.mockResolvedValueOnce({
|
||||
buffer: buf,
|
||||
contentType: "video/mp4",
|
||||
kind: "video",
|
||||
});
|
||||
await sendMessageWeb("+1555", "clip", {
|
||||
verbose: false,
|
||||
mediaUrl: "/tmp/video.mp4",
|
||||
});
|
||||
const sock = await createWaSocket();
|
||||
const [, payload] = sock.sendMessage.mock.calls.at(-1) as [
|
||||
string,
|
||||
AnyMessageContent,
|
||||
];
|
||||
expect(payload).toMatchObject({
|
||||
video: buf,
|
||||
caption: "clip",
|
||||
mimetype: "video/mp4",
|
||||
});
|
||||
});
|
||||
|
||||
it("maps image with caption", async () => {
|
||||
const buf = Buffer.from("img");
|
||||
loadWebMediaMock.mockResolvedValueOnce({
|
||||
buffer: buf,
|
||||
contentType: "image/jpeg",
|
||||
kind: "image",
|
||||
});
|
||||
await sendMessageWeb("+1555", "pic", {
|
||||
verbose: false,
|
||||
mediaUrl: "/tmp/pic.jpg",
|
||||
});
|
||||
const sock = await createWaSocket();
|
||||
const [, payload] = sock.sendMessage.mock.calls.at(-1) as [
|
||||
string,
|
||||
AnyMessageContent,
|
||||
];
|
||||
expect(payload).toMatchObject({
|
||||
image: buf,
|
||||
caption: "pic",
|
||||
mimetype: "image/jpeg",
|
||||
});
|
||||
});
|
||||
|
||||
it("maps other kinds to document with filename", async () => {
|
||||
const buf = Buffer.from("pdf");
|
||||
loadWebMediaMock.mockResolvedValueOnce({
|
||||
buffer: buf,
|
||||
contentType: "application/pdf",
|
||||
kind: "document",
|
||||
fileName: "file.pdf",
|
||||
});
|
||||
await sendMessageWeb("+1555", "doc", {
|
||||
verbose: false,
|
||||
mediaUrl: "/tmp/file.pdf",
|
||||
});
|
||||
const sock = await createWaSocket();
|
||||
const [, payload] = sock.sendMessage.mock.calls.at(-1) as [
|
||||
string,
|
||||
AnyMessageContent,
|
||||
];
|
||||
expect(payload).toMatchObject({
|
||||
document: buf,
|
||||
fileName: "file.pdf",
|
||||
caption: "doc",
|
||||
mimetype: "application/pdf",
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user