Spaces:
Running
Running
| import fs from "node:fs/promises"; | |
| import os from "node:os"; | |
| import path from "node:path"; | |
| import { describe, expect, it } from "vitest"; | |
| import type { OpenClawConfig } from "../../config/config.js"; | |
| import type { SessionEntry } from "../../config/sessions.js"; | |
| import { resolveSessionAuthProfileOverride } from "./session-override.js"; | |
| async function writeAuthStore(agentDir: string) { | |
| const authPath = path.join(agentDir, "auth-profiles.json"); | |
| const payload = { | |
| version: 1, | |
| profiles: { | |
| "zai:work": { type: "api_key", provider: "zai", key: "sk-test" }, | |
| }, | |
| order: { | |
| zai: ["zai:work"], | |
| }, | |
| }; | |
| await fs.writeFile(authPath, JSON.stringify(payload), "utf-8"); | |
| } | |
| describe("resolveSessionAuthProfileOverride", () => { | |
| it("keeps user override when provider alias differs", async () => { | |
| const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-auth-")); | |
| const prevStateDir = process.env.OPENCLAW_STATE_DIR; | |
| process.env.OPENCLAW_STATE_DIR = tmpDir; | |
| try { | |
| const agentDir = path.join(tmpDir, "agent"); | |
| await fs.mkdir(agentDir, { recursive: true }); | |
| await writeAuthStore(agentDir); | |
| const sessionEntry: SessionEntry = { | |
| sessionId: "s1", | |
| updatedAt: Date.now(), | |
| authProfileOverride: "zai:work", | |
| authProfileOverrideSource: "user", | |
| }; | |
| const sessionStore = { "agent:main:main": sessionEntry }; | |
| const resolved = await resolveSessionAuthProfileOverride({ | |
| cfg: {} as OpenClawConfig, | |
| provider: "z.ai", | |
| agentDir, | |
| sessionEntry, | |
| sessionStore, | |
| sessionKey: "agent:main:main", | |
| storePath: undefined, | |
| isNewSession: false, | |
| }); | |
| expect(resolved).toBe("zai:work"); | |
| expect(sessionEntry.authProfileOverride).toBe("zai:work"); | |
| } finally { | |
| if (prevStateDir === undefined) { | |
| delete process.env.OPENCLAW_STATE_DIR; | |
| } else { | |
| process.env.OPENCLAW_STATE_DIR = prevStateDir; | |
| } | |
| await fs.rm(tmpDir, { recursive: true, force: true }); | |
| } | |
| }); | |
| }); | |