mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-17 12:11:20 +00:00
86 lines
2.0 KiB
TypeScript
86 lines
2.0 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
import {
|
|
projectConfigOntoRuntimeSourceSnapshot,
|
|
resetConfigRuntimeState,
|
|
setRuntimeConfigSnapshotRefreshHandler,
|
|
setRuntimeConfigSnapshot,
|
|
} from "./io.js";
|
|
import type { OpenClawConfig } from "./types.js";
|
|
|
|
function createSourceConfig(): OpenClawConfig {
|
|
return {
|
|
models: {
|
|
providers: {
|
|
openai: {
|
|
baseUrl: "https://api.openai.com/v1",
|
|
apiKey: { source: "env", provider: "default", id: "OPENAI_API_KEY" },
|
|
models: [],
|
|
},
|
|
},
|
|
},
|
|
};
|
|
}
|
|
|
|
function createRuntimeConfig(): OpenClawConfig {
|
|
return {
|
|
models: {
|
|
providers: {
|
|
openai: {
|
|
baseUrl: "https://api.openai.com/v1",
|
|
apiKey: "sk-runtime-resolved", // pragma: allowlist secret
|
|
models: [],
|
|
},
|
|
},
|
|
},
|
|
};
|
|
}
|
|
|
|
function resetRuntimeConfigState(): void {
|
|
setRuntimeConfigSnapshotRefreshHandler(null);
|
|
resetConfigRuntimeState();
|
|
}
|
|
|
|
describe("runtime config snapshot writes", () => {
|
|
beforeEach(() => {
|
|
resetRuntimeConfigState();
|
|
});
|
|
|
|
afterEach(() => {
|
|
resetRuntimeConfigState();
|
|
});
|
|
|
|
it("skips source projection for non-runtime-derived configs", () => {
|
|
const sourceConfig: OpenClawConfig = {
|
|
...createSourceConfig(),
|
|
gateway: {
|
|
auth: {
|
|
mode: "token",
|
|
},
|
|
},
|
|
};
|
|
const runtimeConfig: OpenClawConfig = {
|
|
...createRuntimeConfig(),
|
|
gateway: {
|
|
auth: {
|
|
mode: "token",
|
|
},
|
|
},
|
|
};
|
|
const independentConfig: OpenClawConfig = {
|
|
models: {
|
|
providers: {
|
|
openai: {
|
|
baseUrl: "https://api.openai.com/v1",
|
|
apiKey: "sk-independent-config", // pragma: allowlist secret
|
|
models: [],
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
setRuntimeConfigSnapshot(runtimeConfig, sourceConfig);
|
|
const projected = projectConfigOntoRuntimeSourceSnapshot(independentConfig);
|
|
expect(projected).toBe(independentConfig);
|
|
});
|
|
});
|