import { describe, expect, it } from "vitest"; import { resolveAuthProfileOrder } from "./auth-profiles.js"; describe("resolveAuthProfileOrder", () => { const store: AuthProfileStore = { version: 1, profiles: { "anthropic:default": { type: "api_key", provider: "anthropic", key: "sk-default", }, "anthropic:work": { type: "api_key", provider: "anthropic", key: "sk-work", }, }, }; const cfg = { auth: { profiles: { "anthropic:default": { provider: "anthropic", mode: "api_key" }, "anthropic:work": { provider: "anthropic", mode: "api_key" }, }, }, }; it("uses stored profiles when no config exists", () => { const order = resolveAuthProfileOrder({ store, provider: "anthropic", }); expect(order).toEqual(["anthropic:default", "anthropic:work"]); }); it("prioritizes preferred profiles", () => { const order = resolveAuthProfileOrder({ cfg, store, provider: "anthropic", preferredProfile: "anthropic:work", }); expect(order[0]).toBe("anthropic:work"); expect(order).toContain("anthropic:default"); }); it("drops explicit order entries that are missing from the store", () => { const order = resolveAuthProfileOrder({ cfg: { auth: { order: { minimax: ["minimax:default", "minimax:prod"], }, }, }, store: { version: 1, profiles: { "minimax:prod": { type: "api_key", provider: "minimax", key: "sk-prod", }, }, }, provider: "minimax", }); expect(order).toEqual(["minimax:prod"]); }); it("drops explicit order entries that belong to another provider", () => { const order = resolveAuthProfileOrder({ cfg: { auth: { order: { minimax: ["openai:default", "minimax:prod"], }, }, }, store: { version: 1, profiles: { "openai:default": { type: "api_key", provider: "openai", key: "sk-openai", }, "minimax:prod": { type: "api_key", provider: "minimax", key: "sk-mini", }, }, }, provider: "minimax", }); expect(order).toEqual(["minimax:prod"]); }); it("drops token profiles with empty credentials", () => { const order = resolveAuthProfileOrder({ cfg: { auth: { order: { minimax: ["minimax:default"], }, }, }, store: { version: 1, profiles: { "minimax:default": { type: "token", provider: "minimax", token: " ", }, }, }, provider: "minimax", }); expect(order).toEqual([]); }); it("drops token profiles that are already expired", () => { const order = resolveAuthProfileOrder({ cfg: { auth: { order: { minimax: ["minimax:default"], }, }, }, store: { version: 1, profiles: { "minimax:default": { type: "token", provider: "minimax", token: "sk-minimax", expires: Date.now() - 1000, }, }, }, provider: "minimax", }); expect(order).toEqual([]); }); it("keeps oauth profiles that can refresh", () => { const order = resolveAuthProfileOrder({ cfg: { auth: { order: { anthropic: ["anthropic:oauth"], }, }, }, store: { version: 1, profiles: { "anthropic:oauth": { type: "oauth", provider: "anthropic", access: "", refresh: "refresh-token", expires: Date.now() - 1000, }, }, }, provider: "anthropic", }); expect(order).toEqual(["anthropic:oauth"]); }); });