cjovs's picture
Add Custom LLM Endpoint plugin
df23150 verified
Raw
History Blame Contribute Delete
1.82 kB
import { describe, expect, it, vi } from "vitest";
import {
fetchOpenAiModelCatalog,
normalizeBaseUrl,
toModelCatalog,
} from "../src/lib/providers.js";
describe("provider utilities", () => {
it("normalizes base URLs by trimming whitespace and trailing slashes", () => {
expect(normalizeBaseUrl(" https://example.test/v1/ ")).toBe("https://example.test/v1");
});
it("dedupes and sorts fetched model entries", () => {
expect(
toModelCatalog([
{ id: "gpt-5.4" },
{ id: "gpt-5.3-mini", name: "GPT-5.3 Mini" },
{ id: "gpt-5.4", name: "Duplicate" },
{ id: " " },
]),
).toEqual([
{ id: "gpt-5.3-mini", label: "GPT-5.3 Mini", raw: { id: "gpt-5.3-mini", name: "GPT-5.3 Mini" } },
{ id: "gpt-5.4", label: "gpt-5.4", raw: { id: "gpt-5.4" } },
]);
});
it("fetches the openai-compatible model catalog with bearer auth", async () => {
const fetchMock = vi.fn<typeof fetch>(async (_url, _init) => ({
ok: true,
json: async () => ({
data: [
{ id: "gpt-5.4" },
{ id: "gpt-5.3-codex", name: "GPT-5.3 Codex" },
],
}),
} as Response));
const result = await fetchOpenAiModelCatalog(fetchMock, {
baseUrl: "https://example.test/v1/",
apiKey: "sk-provider",
});
expect(fetchMock).toHaveBeenCalledWith(
"https://example.test/v1/models",
expect.objectContaining({
headers: {
Authorization: "Bearer sk-provider",
},
}),
);
expect(result).toEqual({
baseUrl: "https://example.test/v1",
modelCatalog: [
{ id: "gpt-5.3-codex", label: "GPT-5.3 Codex", raw: { id: "gpt-5.3-codex", name: "GPT-5.3 Codex" } },
{ id: "gpt-5.4", label: "gpt-5.4", raw: { id: "gpt-5.4" } },
],
});
});
});