mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-18 21:40:53 +00:00
test: dedupe directive auth ref label setup
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user