77 lines
2.5 KiB
TypeScript
77 lines
2.5 KiB
TypeScript
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
|
const ensureAuthProfileStoreMock = vi.hoisted(() => vi.fn());
|
|
const resolveAuthProfileOrderMock = vi.hoisted(() => vi.fn());
|
|
const resolveAuthProfileDisplayLabelMock = vi.hoisted(() => vi.fn());
|
|
|
|
vi.mock("./auth-profiles.js", () => ({
|
|
ensureAuthProfileStore: (...args: unknown[]) => ensureAuthProfileStoreMock(...args),
|
|
resolveAuthProfileOrder: (...args: unknown[]) => resolveAuthProfileOrderMock(...args),
|
|
resolveAuthProfileDisplayLabel: (...args: unknown[]) =>
|
|
resolveAuthProfileDisplayLabelMock(...args),
|
|
}));
|
|
|
|
vi.mock("./model-auth.js", () => ({
|
|
getCustomProviderApiKey: () => undefined,
|
|
resolveEnvApiKey: () => null,
|
|
}));
|
|
|
|
const { resolveModelAuthLabel } = await import("./model-auth-label.js");
|
|
|
|
describe("resolveModelAuthLabel", () => {
|
|
beforeEach(() => {
|
|
ensureAuthProfileStoreMock.mockReset();
|
|
resolveAuthProfileOrderMock.mockReset();
|
|
resolveAuthProfileDisplayLabelMock.mockReset();
|
|
});
|
|
|
|
it("does not throw when token profile only has tokenRef", () => {
|
|
ensureAuthProfileStoreMock.mockReturnValue({
|
|
version: 1,
|
|
profiles: {
|
|
"github-copilot:default": {
|
|
type: "token",
|
|
provider: "github-copilot",
|
|
tokenRef: { source: "env", provider: "default", id: "GITHUB_TOKEN" },
|
|
},
|
|
},
|
|
} as never);
|
|
resolveAuthProfileOrderMock.mockReturnValue(["github-copilot:default"]);
|
|
resolveAuthProfileDisplayLabelMock.mockReturnValue("github-copilot:default");
|
|
|
|
const label = resolveModelAuthLabel({
|
|
provider: "github-copilot",
|
|
cfg: {},
|
|
sessionEntry: { authProfileOverride: "github-copilot:default" } as never,
|
|
});
|
|
|
|
expect(label).toContain("token ref(env:GITHUB_TOKEN)");
|
|
});
|
|
|
|
it("masks short api-key profile values", () => {
|
|
const shortSecret = "abc123";
|
|
ensureAuthProfileStoreMock.mockReturnValue({
|
|
version: 1,
|
|
profiles: {
|
|
"openai:default": {
|
|
type: "api_key",
|
|
provider: "openai",
|
|
key: shortSecret,
|
|
},
|
|
},
|
|
} as never);
|
|
resolveAuthProfileOrderMock.mockReturnValue(["openai:default"]);
|
|
resolveAuthProfileDisplayLabelMock.mockReturnValue("openai:default");
|
|
|
|
const label = resolveModelAuthLabel({
|
|
provider: "openai",
|
|
cfg: {},
|
|
sessionEntry: { authProfileOverride: "openai:default" } as never,
|
|
});
|
|
|
|
expect(label).toContain("api-key");
|
|
expect(label).toContain("...");
|
|
expect(label).not.toContain(shortSecret);
|
|
});
|
|
});
|