mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-13 02:01:16 +00:00
111 lines
3.8 KiB
TypeScript
111 lines
3.8 KiB
TypeScript
import { afterEach, beforeAll, describe, expect, it } from "vitest";
|
|
import type { AuthProfileStore } from "../agents/auth-profiles.js";
|
|
import type { OpenClawConfig } from "../config/config.js";
|
|
import { clearConfigCache, clearRuntimeConfigSnapshot } from "../config/config.js";
|
|
import {
|
|
activateSecretsRuntimeSnapshot,
|
|
clearSecretsRuntimeSnapshot,
|
|
prepareSecretsRuntimeSnapshot,
|
|
} from "./runtime.js";
|
|
|
|
const EMPTY_LOADABLE_PLUGIN_ORIGINS = new Map();
|
|
|
|
function loadAuthStoreWithProfiles(profiles: AuthProfileStore["profiles"]): AuthProfileStore {
|
|
return {
|
|
version: 1,
|
|
profiles,
|
|
};
|
|
}
|
|
|
|
describe("secrets runtime snapshot inline auth-store refs", () => {
|
|
beforeAll(() => {});
|
|
|
|
afterEach(() => {
|
|
clearSecretsRuntimeSnapshot();
|
|
clearRuntimeConfigSnapshot();
|
|
clearConfigCache();
|
|
});
|
|
|
|
it("normalizes inline SecretRef object on token to tokenRef", async () => {
|
|
const config: OpenClawConfig = { models: {}, secrets: {} };
|
|
const snapshot = await prepareSecretsRuntimeSnapshot({
|
|
config,
|
|
env: { MY_TOKEN: "resolved-token-value" },
|
|
agentDirs: ["/tmp/openclaw-agent-main"],
|
|
loadablePluginOrigins: EMPTY_LOADABLE_PLUGIN_ORIGINS,
|
|
loadAuthStore: () =>
|
|
loadAuthStoreWithProfiles({
|
|
"custom:inline-token": {
|
|
type: "token",
|
|
provider: "custom",
|
|
token: { source: "env", provider: "default", id: "MY_TOKEN" } as unknown as string,
|
|
},
|
|
}),
|
|
});
|
|
|
|
const profile = snapshot.authStores[0]?.store.profiles["custom:inline-token"] as Record<
|
|
string,
|
|
unknown
|
|
>;
|
|
expect(profile.tokenRef).toEqual({ source: "env", provider: "default", id: "MY_TOKEN" });
|
|
activateSecretsRuntimeSnapshot(snapshot);
|
|
expect(profile.token).toBe("resolved-token-value");
|
|
});
|
|
|
|
it("normalizes inline SecretRef object on key to keyRef", async () => {
|
|
const config: OpenClawConfig = { models: {}, secrets: {} };
|
|
const snapshot = await prepareSecretsRuntimeSnapshot({
|
|
config,
|
|
env: { MY_KEY: "resolved-key-value" },
|
|
agentDirs: ["/tmp/openclaw-agent-main"],
|
|
loadablePluginOrigins: EMPTY_LOADABLE_PLUGIN_ORIGINS,
|
|
loadAuthStore: () =>
|
|
loadAuthStoreWithProfiles({
|
|
"custom:inline-key": {
|
|
type: "api_key",
|
|
provider: "custom",
|
|
key: { source: "env", provider: "default", id: "MY_KEY" } as unknown as string,
|
|
},
|
|
}),
|
|
});
|
|
|
|
const profile = snapshot.authStores[0]?.store.profiles["custom:inline-key"] as Record<
|
|
string,
|
|
unknown
|
|
>;
|
|
expect(profile.keyRef).toEqual({ source: "env", provider: "default", id: "MY_KEY" });
|
|
activateSecretsRuntimeSnapshot(snapshot);
|
|
expect(profile.key).toBe("resolved-key-value");
|
|
});
|
|
|
|
it("keeps explicit keyRef when inline key SecretRef is also present", async () => {
|
|
const config: OpenClawConfig = { models: {}, secrets: {} };
|
|
const snapshot = await prepareSecretsRuntimeSnapshot({
|
|
config,
|
|
env: {
|
|
PRIMARY_KEY: "primary-key-value",
|
|
SHADOW_KEY: "shadow-key-value",
|
|
},
|
|
agentDirs: ["/tmp/openclaw-agent-main"],
|
|
loadablePluginOrigins: EMPTY_LOADABLE_PLUGIN_ORIGINS,
|
|
loadAuthStore: () =>
|
|
loadAuthStoreWithProfiles({
|
|
"custom:explicit-keyref": {
|
|
type: "api_key",
|
|
provider: "custom",
|
|
keyRef: { source: "env", provider: "default", id: "PRIMARY_KEY" },
|
|
key: { source: "env", provider: "default", id: "SHADOW_KEY" } as unknown as string,
|
|
},
|
|
}),
|
|
});
|
|
|
|
const profile = snapshot.authStores[0]?.store.profiles["custom:explicit-keyref"] as Record<
|
|
string,
|
|
unknown
|
|
>;
|
|
expect(profile.keyRef).toEqual({ source: "env", provider: "default", id: "PRIMARY_KEY" });
|
|
activateSecretsRuntimeSnapshot(snapshot);
|
|
expect(profile.key).toBe("primary-key-value");
|
|
});
|
|
});
|