mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-01 04:11:03 +00:00
* refactor: move WhatsApp channel from src/web/ to extensions/whatsapp/ Move all WhatsApp implementation code (77 source/test files + 9 channel plugin files) from src/web/ and src/channels/plugins/*/whatsapp* to extensions/whatsapp/src/. - Leave thin re-export shims at all original locations so cross-cutting imports continue to resolve - Update plugin-sdk/whatsapp.ts to only re-export generic framework utilities; channel-specific functions imported locally by the extension - Update vi.mock paths in 15 cross-cutting test files - Rename outbound.ts -> send.ts to match extension naming conventions and avoid false positive in cfg-threading guard test - Widen tsconfig.plugin-sdk.dts.json rootDir to support shim->extension cross-directory references Part of the core-channels-to-extensions migration (PR 6/10). * style: format WhatsApp extension files * fix: correct stale import paths in WhatsApp extension tests Fix vi.importActual, test mock, and hardcoded source paths that weren't updated during the file move: - media.test.ts: vi.importActual path - onboarding.test.ts: vi.importActual path - test-helpers.ts: test/mocks/baileys.js path - monitor-inbox.test-harness.ts: incomplete media/store mock - login.test.ts: hardcoded source file path - message-action-runner.media.test.ts: vi.mock/importActual path
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { vi } from "vitest";
|
|
import { monitorWebChannel } from "./auto-reply.js";
|
|
import {
|
|
createWebInboundDeliverySpies,
|
|
createWebListenerFactoryCapture,
|
|
sendWebDirectInboundMessage,
|
|
} from "./auto-reply.test-harness.js";
|
|
import type { WebInboundMessage } from "./inbound.js";
|
|
|
|
export async function monitorWebChannelWithCapture(resolver: unknown): Promise<{
|
|
spies: ReturnType<typeof createWebInboundDeliverySpies>;
|
|
onMessage: (msg: WebInboundMessage) => Promise<void>;
|
|
}> {
|
|
const spies = createWebInboundDeliverySpies();
|
|
const { listenerFactory, getOnMessage } = createWebListenerFactoryCapture();
|
|
|
|
await monitorWebChannel(false, listenerFactory, false, resolver as never);
|
|
const onMessage = getOnMessage();
|
|
if (!onMessage) {
|
|
throw new Error("Missing onMessage handler");
|
|
}
|
|
|
|
return { spies, onMessage };
|
|
}
|
|
|
|
export async function sendWebDirectInboundAndCollectSessionKeys(): Promise<{
|
|
seen: string[];
|
|
resolver: ReturnType<typeof vi.fn>;
|
|
}> {
|
|
const seen: string[] = [];
|
|
const resolver = vi.fn(async (ctx: { SessionKey?: unknown }) => {
|
|
seen.push(String(ctx.SessionKey));
|
|
return { text: "ok" };
|
|
});
|
|
|
|
const { spies, onMessage } = await monitorWebChannelWithCapture(resolver);
|
|
await sendWebDirectInboundMessage({
|
|
onMessage,
|
|
spies,
|
|
id: "m1",
|
|
from: "+1000",
|
|
to: "+2000",
|
|
body: "hello",
|
|
});
|
|
|
|
return { seen, resolver };
|
|
}
|