test: dedupe directive auth ref label setup

This commit is contained in:
Peter Steinberger
2026-03-13 22:18:35 +00:00
parent 07b3f5233e
commit aaea0b2f28

View File

@@ -4,6 +4,11 @@ import type { OpenClawConfig } from "../../config/config.js";
let mockStore: AuthProfileStore;
let mockOrder: string[];
const githubCopilotTokenRefProfile: AuthProfileStore["profiles"][string] = {
type: "token",
provider: "github-copilot",
tokenRef: { source: "env", provider: "default", id: "GITHUB_TOKEN" },
};
vi.mock("../../agents/auth-health.js", () => ({
formatRemainingShort: () => "1h",
@@ -39,6 +44,28 @@ vi.mock("../../agents/model-auth.js", () => ({
const { resolveAuthLabel } = await import("./directive-handling.auth.js");
async function resolveRefOnlyAuthLabel(params: {
provider: string;
profileId: string;
profile:
| (AuthProfileStore["profiles"][string] & { type: "api_key" })
| (AuthProfileStore["profiles"][string] & { type: "token" });
mode: "compact" | "verbose";
}) {
mockStore.profiles = {
[params.profileId]: params.profile,
};
mockOrder = [params.profileId];
return resolveAuthLabel(
params.provider,
{} as OpenClawConfig,
"/tmp/models.json",
undefined,
params.mode,
);
}
describe("resolveAuthLabel ref-aware labels", () => {
beforeEach(() => {
mockStore = {
@@ -49,64 +76,38 @@ describe("resolveAuthLabel ref-aware labels", () => {
});
it("shows api-key (ref) for keyRef-only profiles in compact mode", async () => {
mockStore.profiles = {
"openai:default": {
const result = await resolveRefOnlyAuthLabel({
provider: "openai",
profileId: "openai:default",
profile: {
type: "api_key",
provider: "openai",
keyRef: { source: "env", provider: "default", id: "OPENAI_API_KEY" },
},
};
mockOrder = ["openai:default"];
const result = await resolveAuthLabel(
"openai",
{} as OpenClawConfig,
"/tmp/models.json",
undefined,
"compact",
);
mode: "compact",
});
expect(result.label).toBe("openai:default api-key (ref)");
});
it("shows token (ref) for tokenRef-only profiles in compact mode", async () => {
mockStore.profiles = {
"github-copilot:default": {
type: "token",
provider: "github-copilot",
tokenRef: { source: "env", provider: "default", id: "GITHUB_TOKEN" },
},
};
mockOrder = ["github-copilot:default"];
const result = await resolveAuthLabel(
"github-copilot",
{} as OpenClawConfig,
"/tmp/models.json",
undefined,
"compact",
);
const result = await resolveRefOnlyAuthLabel({
provider: "github-copilot",
profileId: "github-copilot:default",
profile: githubCopilotTokenRefProfile,
mode: "compact",
});
expect(result.label).toBe("github-copilot:default token (ref)");
});
it("uses token:ref instead of token:missing in verbose mode", async () => {
mockStore.profiles = {
"github-copilot:default": {
type: "token",
provider: "github-copilot",
tokenRef: { source: "env", provider: "default", id: "GITHUB_TOKEN" },
},
};
mockOrder = ["github-copilot:default"];
const result = await resolveAuthLabel(
"github-copilot",
{} as OpenClawConfig,
"/tmp/models.json",
undefined,
"verbose",
);
const result = await resolveRefOnlyAuthLabel({
provider: "github-copilot",
profileId: "github-copilot:default",
profile: githubCopilotTokenRefProfile,
mode: "verbose",
});
expect(result.label).toContain("github-copilot:default=token:ref");
expect(result.label).not.toContain("token:missing");