Files
openclaw/src/infra/net/ssrf.dispatcher.test.ts

38 lines
1.0 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
const { agentCtor } = vi.hoisted(() => ({
agentCtor: vi.fn(function MockAgent(this: { options: unknown }, options: unknown) {
this.options = options;
}),
}));
vi.mock("undici", () => ({
Agent: agentCtor,
}));
import { createPinnedDispatcher, type PinnedHostname } from "./ssrf.js";
describe("createPinnedDispatcher", () => {
it("uses pinned lookup without overriding global family policy", () => {
const lookup = vi.fn() as unknown as PinnedHostname["lookup"];
const pinned: PinnedHostname = {
hostname: "api.telegram.org",
addresses: ["149.154.167.220"],
lookup,
};
const dispatcher = createPinnedDispatcher(pinned);
expect(dispatcher).toBeDefined();
expect(agentCtor).toHaveBeenCalledWith({
connect: {
lookup,
},
});
const firstCallArg = agentCtor.mock.calls[0]?.[0] as
| { connect?: Record<string, unknown> }
| undefined;
expect(firstCallArg?.connect?.autoSelectFamily).toBeUndefined();
});
});