mirror of
https://github.com/moltbot/moltbot.git
synced 2026-04-27 00:17:29 +00:00
test: dedupe extension channel fixtures
This commit is contained in:
@@ -6,6 +6,7 @@ import { clearBlueBubblesRuntime, setBlueBubblesRuntime } from "./runtime.js";
|
||||
import { sendMessageBlueBubbles, resolveChatGuidForTarget, createChatForHandle } from "./send.js";
|
||||
import {
|
||||
BLUE_BUBBLES_PRIVATE_API_STATUS,
|
||||
createBlueBubblesFetchGuardPassthroughInstaller,
|
||||
installBlueBubblesFetchTestHooks,
|
||||
mockBlueBubblesPrivateApiStatusOnce,
|
||||
} from "./test-harness.js";
|
||||
@@ -13,6 +14,7 @@ import { _setFetchGuardForTesting, type BlueBubblesSendTarget } from "./types.js
|
||||
|
||||
const mockFetch = vi.fn();
|
||||
const privateApiStatusMock = vi.mocked(getCachedBlueBubblesPrivateApiStatus);
|
||||
const setFetchGuardPassthrough = createBlueBubblesFetchGuardPassthroughInstaller();
|
||||
|
||||
installBlueBubblesFetchTestHooks({
|
||||
mockFetch,
|
||||
@@ -62,29 +64,8 @@ function mockNewChatSendResponse(guid: string) {
|
||||
}
|
||||
|
||||
function installSsrFPolicyCapture(policies: unknown[]) {
|
||||
_setFetchGuardForTesting(async (params) => {
|
||||
policies.push(params.policy);
|
||||
const raw = await globalThis.fetch(params.url, params.init);
|
||||
let body: ArrayBuffer;
|
||||
if (typeof raw.arrayBuffer === "function") {
|
||||
body = await raw.arrayBuffer();
|
||||
} else {
|
||||
const text =
|
||||
typeof (raw as { text?: () => Promise<string> }).text === "function"
|
||||
? await (raw as { text: () => Promise<string> }).text()
|
||||
: typeof (raw as { json?: () => Promise<unknown> }).json === "function"
|
||||
? JSON.stringify(await (raw as { json: () => Promise<unknown> }).json())
|
||||
: "";
|
||||
body = new TextEncoder().encode(text).buffer;
|
||||
}
|
||||
return {
|
||||
response: new Response(body, {
|
||||
status: (raw as { status?: number }).status ?? 200,
|
||||
headers: (raw as { headers?: HeadersInit }).headers,
|
||||
}),
|
||||
release: async () => {},
|
||||
finalUrl: params.url,
|
||||
};
|
||||
setFetchGuardPassthrough((policy) => {
|
||||
policies.push(policy);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -68,12 +68,29 @@ export function installBlueBubblesFetchTestHooks(params: {
|
||||
mockReturnValue: (value: boolean | null) => unknown;
|
||||
};
|
||||
}) {
|
||||
const setFetchGuardPassthrough = createBlueBubblesFetchGuardPassthroughInstaller();
|
||||
beforeEach(() => {
|
||||
vi.stubGlobal("fetch", params.mockFetch);
|
||||
// Replace the SSRF guard with a passthrough that delegates to the mocked global.fetch,
|
||||
// wrapping the result in a real Response so callers can call .arrayBuffer() on it.
|
||||
_setFetchGuardForTesting(async (p) => {
|
||||
const raw = await globalThis.fetch(p.url, p.init);
|
||||
setFetchGuardPassthrough();
|
||||
params.mockFetch.mockReset();
|
||||
params.privateApiStatusMock.mockReset?.();
|
||||
params.privateApiStatusMock.mockClear?.();
|
||||
params.privateApiStatusMock.mockReturnValue(BLUE_BUBBLES_PRIVATE_API_STATUS.unknown);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
_setFetchGuardForTesting(null);
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
}
|
||||
|
||||
export function createBlueBubblesFetchGuardPassthroughInstaller() {
|
||||
return (capturePolicy?: (policy: unknown) => void) => {
|
||||
_setFetchGuardForTesting(async (params) => {
|
||||
capturePolicy?.(params.policy);
|
||||
const raw = await globalThis.fetch(params.url, params.init);
|
||||
let body: ArrayBuffer;
|
||||
if (typeof raw.arrayBuffer === "function") {
|
||||
body = await raw.arrayBuffer();
|
||||
@@ -92,17 +109,8 @@ export function installBlueBubblesFetchTestHooks(params: {
|
||||
headers: (raw as { headers?: HeadersInit }).headers,
|
||||
}),
|
||||
release: async () => {},
|
||||
finalUrl: p.url,
|
||||
finalUrl: params.url,
|
||||
};
|
||||
});
|
||||
params.mockFetch.mockReset();
|
||||
params.privateApiStatusMock.mockReset?.();
|
||||
params.privateApiStatusMock.mockClear?.();
|
||||
params.privateApiStatusMock.mockReturnValue(BLUE_BUBBLES_PRIVATE_API_STATUS.unknown);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
_setFetchGuardForTesting(null);
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user