Files
paperclip-adapter-claude-k8s/src/server/models.test.ts
T
Test User 0b67ccc081 feat: add Opus 4.7 models and enable manual model selection
- Add claude-opus-4-7 and Bedrock Opus 4.7 to model lists
- Set models export to undefined (like opencode_k8s) to allow free-text model entry
- Move direct models list into server/models.ts
- Bump version to 0.1.17

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-16 16:57:09 +00:00

53 lines
2.1 KiB
TypeScript

import { describe, it, expect, beforeEach, afterEach } from "vitest";
import { listK8sModels } from "./models.js";
describe("listK8sModels", () => {
const savedEnv: Record<string, string | undefined> = {};
beforeEach(() => {
savedEnv.CLAUDE_CODE_USE_BEDROCK = process.env.CLAUDE_CODE_USE_BEDROCK;
savedEnv.ANTHROPIC_BEDROCK_BASE_URL = process.env.ANTHROPIC_BEDROCK_BASE_URL;
delete process.env.CLAUDE_CODE_USE_BEDROCK;
delete process.env.ANTHROPIC_BEDROCK_BASE_URL;
});
afterEach(() => {
for (const [key, value] of Object.entries(savedEnv)) {
if (value === undefined) delete process.env[key];
else process.env[key] = value;
}
});
it("returns direct API models by default", async () => {
const models = await listK8sModels();
expect(models.some((m) => m.id === "claude-opus-4-7")).toBe(true);
expect(models.some((m) => m.id === "claude-opus-4-6")).toBe(true);
expect(models.every((m) => !m.id.includes("anthropic."))).toBe(true);
});
it("returns Bedrock models when CLAUDE_CODE_USE_BEDROCK=1", async () => {
process.env.CLAUDE_CODE_USE_BEDROCK = "1";
const models = await listK8sModels();
expect(models.some((m) => m.id.includes("anthropic."))).toBe(true);
expect(models.every((m) => !m.id.startsWith("claude-"))).toBe(true);
});
it("returns Bedrock models when CLAUDE_CODE_USE_BEDROCK=true", async () => {
process.env.CLAUDE_CODE_USE_BEDROCK = "true";
const models = await listK8sModels();
expect(models.some((m) => m.id.includes("anthropic."))).toBe(true);
});
it("returns Bedrock models when ANTHROPIC_BEDROCK_BASE_URL is set", async () => {
process.env.ANTHROPIC_BEDROCK_BASE_URL = "https://bedrock.us-east-1.amazonaws.com";
const models = await listK8sModels();
expect(models.some((m) => m.id.includes("anthropic."))).toBe(true);
});
it("ignores blank ANTHROPIC_BEDROCK_BASE_URL", async () => {
process.env.ANTHROPIC_BEDROCK_BASE_URL = " ";
const models = await listK8sModels();
expect(models.some((m) => m.id === "claude-opus-4-7")).toBe(true);
});
});