mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-08-29 18:31:33 +00:00
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const fetchWithProxy = vi.fn();
|
|
const getFetchDispatcher = vi.fn();
|
|
const safeOutboundFetch = vi.fn();
|
|
const readPrivateAllowlist = vi.fn();
|
|
const evaluateEgress = vi.fn();
|
|
const globalFetch = vi.fn();
|
|
|
|
vi.mock("../../utils/proxy-agent.js", () => ({
|
|
fetchWithProxy,
|
|
getFetchDispatcher,
|
|
}));
|
|
vi.mock("../../utils/safe-outbound-fetch.js", () => ({ safeOutboundFetch }));
|
|
vi.mock("../../ai/egress.js", () => ({
|
|
readPrivateAllowlist,
|
|
evaluateEgress,
|
|
}));
|
|
|
|
const { providerFetch } = await import("../../ai/providers/http.js");
|
|
|
|
describe("providerFetch", () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
vi.stubGlobal("fetch", globalFetch);
|
|
readPrivateAllowlist.mockResolvedValue(["192.168.1.50"]);
|
|
});
|
|
|
|
it("uses the matching Undici fetch implementation for private providers", async () => {
|
|
const response = { ok: true, status: 200 } as Response;
|
|
const init = { method: "GET" };
|
|
evaluateEgress.mockReturnValue({ allowed: true, isPrivate: true });
|
|
fetchWithProxy.mockResolvedValue(response);
|
|
|
|
await expect(
|
|
providerFetch("http://192.168.1.50:11434/api/tags", init),
|
|
).resolves.toBe(response);
|
|
|
|
expect(fetchWithProxy).toHaveBeenCalledWith(
|
|
"http://192.168.1.50:11434/api/tags",
|
|
init,
|
|
);
|
|
expect(globalFetch).not.toHaveBeenCalled();
|
|
expect(safeOutboundFetch).not.toHaveBeenCalled();
|
|
});
|
|
});
|