From aff272ec357553a2a4eba977e7db2cf31ce12e14 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 21 Feb 2026 13:15:53 +0000 Subject: [PATCH] refactor(test): reuse env helper in models auth sync --- src/commands/models.list.auth-sync.test.ts | 109 +++++++++------------ 1 file changed, 45 insertions(+), 64 deletions(-) diff --git a/src/commands/models.list.auth-sync.test.ts b/src/commands/models.list.auth-sync.test.ts index 35e89b0a8..159859bb2 100644 --- a/src/commands/models.list.auth-sync.test.ts +++ b/src/commands/models.list.auth-sync.test.ts @@ -4,31 +4,9 @@ import path from "node:path"; import { describe, expect, it, vi } from "vitest"; import { saveAuthProfileStore } from "../agents/auth-profiles.js"; import { clearConfigCache } from "../config/config.js"; +import { withEnvAsync } from "../test-utils/env.js"; import { modelsListCommand } from "./models/list.list-command.js"; -const ENV_KEYS = [ - "OPENCLAW_STATE_DIR", - "OPENCLAW_AGENT_DIR", - "PI_CODING_AGENT_DIR", - "OPENCLAW_CONFIG_PATH", - "OPENROUTER_API_KEY", -] as const; - -function captureEnv() { - return Object.fromEntries(ENV_KEYS.map((key) => [key, process.env[key]])); -} - -function restoreEnv(snapshot: Record) { - for (const key of ENV_KEYS) { - const value = snapshot[key]; - if (value === undefined) { - delete process.env[key]; - } else { - process.env[key] = value; - } - } -} - async function pathExists(pathname: string): Promise { try { await fs.stat(pathname); @@ -40,7 +18,6 @@ async function pathExists(pathname: string): Promise { describe("models list auth-profile sync", () => { it("marks models available when auth exists only in auth-profiles.json", async () => { - const env = captureEnv(); const root = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-models-list-auth-sync-")); try { @@ -50,51 +27,55 @@ describe("models list auth-profile sync", () => { await fs.mkdir(agentDir, { recursive: true }); await fs.writeFile(configPath, "{}\n", "utf8"); - process.env.OPENCLAW_STATE_DIR = stateDir; - process.env.OPENCLAW_AGENT_DIR = agentDir; - process.env.PI_CODING_AGENT_DIR = agentDir; - process.env.OPENCLAW_CONFIG_PATH = configPath; - delete process.env.OPENROUTER_API_KEY; - - saveAuthProfileStore( + await withEnvAsync( { - version: 1, - profiles: { - "openrouter:default": { - type: "api_key", - provider: "openrouter", - key: "sk-or-v1-regression-test", - }, - }, + OPENCLAW_STATE_DIR: stateDir, + OPENCLAW_AGENT_DIR: agentDir, + PI_CODING_AGENT_DIR: agentDir, + OPENCLAW_CONFIG_PATH: configPath, + OPENROUTER_API_KEY: undefined, + }, + async () => { + saveAuthProfileStore( + { + version: 1, + profiles: { + "openrouter:default": { + type: "api_key", + provider: "openrouter", + key: "sk-or-v1-regression-test", + }, + }, + }, + agentDir, + ); + + const authPath = path.join(agentDir, "auth.json"); + expect(await pathExists(authPath)).toBe(false); + + clearConfigCache(); + const runtime = { + log: vi.fn(), + error: vi.fn(), + }; + + await modelsListCommand({ all: true, json: true }, runtime as never); + + expect(runtime.error).not.toHaveBeenCalled(); + expect(runtime.log).toHaveBeenCalledTimes(1); + const payload = JSON.parse(String(runtime.log.mock.calls[0]?.[0])) as { + models?: Array<{ key?: string; available?: boolean }>; + }; + const openrouter = payload.models?.find((model) => + String(model.key ?? "").startsWith("openrouter/"), + ); + expect(openrouter).toBeDefined(); + expect(openrouter?.available).toBe(true); + expect(await pathExists(authPath)).toBe(true); }, - agentDir, ); - - const authPath = path.join(agentDir, "auth.json"); - expect(await pathExists(authPath)).toBe(false); - - clearConfigCache(); - const runtime = { - log: vi.fn(), - error: vi.fn(), - }; - - await modelsListCommand({ all: true, json: true }, runtime as never); - - expect(runtime.error).not.toHaveBeenCalled(); - expect(runtime.log).toHaveBeenCalledTimes(1); - const payload = JSON.parse(String(runtime.log.mock.calls[0]?.[0])) as { - models?: Array<{ key?: string; available?: boolean }>; - }; - const openrouter = payload.models?.find((model) => - String(model.key ?? "").startsWith("openrouter/"), - ); - expect(openrouter).toBeDefined(); - expect(openrouter?.available).toBe(true); - expect(await pathExists(authPath)).toBe(true); } finally { clearConfigCache(); - restoreEnv(env); await fs.rm(root, { recursive: true, force: true }); } });