fix: normalize z.ai provider ids in auth profiles

This commit is contained in:
mneves75
2026-01-06 11:49:37 -03:00
committed by Peter Steinberger
parent 13c1ce1f05
commit 3550dc294d
7 changed files with 232 additions and 8 deletions

View File

@@ -156,4 +156,104 @@ describe("models list/status", () => {
expect(payload.count).toBe(1);
expect(payload.models[0]?.key).toBe("zai/glm-4.7");
});
it("models list provider filter normalizes Z.AI alias casing", async () => {
loadConfig.mockReturnValue({ agent: { model: "z.ai/glm-4.7" } });
const runtime = makeRuntime();
const models = [
{
provider: "zai",
id: "glm-4.7",
name: "GLM-4.7",
input: ["text"],
baseUrl: "https://api.z.ai/v1",
contextWindow: 128000,
},
{
provider: "openai",
id: "gpt-4.1-mini",
name: "GPT-4.1 mini",
input: ["text"],
baseUrl: "https://api.openai.com/v1",
contextWindow: 128000,
},
];
discoverModels.mockReturnValue({
getAll: () => models,
getAvailable: () => models,
});
const { modelsListCommand } = await import("./models/list.js");
await modelsListCommand({ all: true, provider: "Z.AI", json: true }, runtime);
expect(runtime.log).toHaveBeenCalledTimes(1);
const payload = JSON.parse(String(runtime.log.mock.calls[0]?.[0]));
expect(payload.count).toBe(1);
expect(payload.models[0]?.key).toBe("zai/glm-4.7");
});
it("models list provider filter normalizes z-ai alias", async () => {
loadConfig.mockReturnValue({ agent: { model: "z.ai/glm-4.7" } });
const runtime = makeRuntime();
const models = [
{
provider: "zai",
id: "glm-4.7",
name: "GLM-4.7",
input: ["text"],
baseUrl: "https://api.z.ai/v1",
contextWindow: 128000,
},
{
provider: "openai",
id: "gpt-4.1-mini",
name: "GPT-4.1 mini",
input: ["text"],
baseUrl: "https://api.openai.com/v1",
contextWindow: 128000,
},
];
discoverModels.mockReturnValue({
getAll: () => models,
getAvailable: () => models,
});
const { modelsListCommand } = await import("./models/list.js");
await modelsListCommand({ all: true, provider: "z-ai", json: true }, runtime);
expect(runtime.log).toHaveBeenCalledTimes(1);
const payload = JSON.parse(String(runtime.log.mock.calls[0]?.[0]));
expect(payload.count).toBe(1);
expect(payload.models[0]?.key).toBe("zai/glm-4.7");
});
it("models list marks auth as unavailable when ZAI key is missing", async () => {
loadConfig.mockReturnValue({ agent: { model: "z.ai/glm-4.7" } });
const runtime = makeRuntime();
const model = {
provider: "zai",
id: "glm-4.7",
name: "GLM-4.7",
input: ["text"],
baseUrl: "https://api.z.ai/v1",
contextWindow: 128000,
};
discoverModels.mockReturnValue({
getAll: () => [model],
getAvailable: () => [],
});
const { modelsListCommand } = await import("./models/list.js");
await modelsListCommand({ all: true, json: true }, runtime);
expect(runtime.log).toHaveBeenCalledTimes(1);
const payload = JSON.parse(String(runtime.log.mock.calls[0]?.[0]));
expect(payload.models[0]?.available).toBe(false);
});
});