Files
openwork/apps/desktop/electron/runtime-user-env.test.mjs

89 lines
2.3 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import path from "node:path";
import { reconcileInjectedUserEnv, resolveUserEnvFilePath } from "./runtime.mjs";
test("resolves the user env store from the effective desktop profile", () => {
assert.equal(
resolveUserEnvFilePath({
HOME: "/Users/example",
XDG_CONFIG_HOME: "/tmp/openwork-dev-profile/config",
}),
path.join("/tmp/openwork-dev-profile/config", "openwork", "env.json"),
);
});
test("removes a user env key from the long-lived desktop process after deletion", () => {
const inheritedEnv = { PATH: "/usr/bin" };
const processEnv = {
...inheritedEnv,
ANTHROPIC_API_KEY: "previously-injected",
};
const nextKeys = reconcileInjectedUserEnv({
processEnv,
inheritedEnv,
userEnv: {},
previouslyInjectedKeys: new Set(["ANTHROPIC_API_KEY"]),
});
assert.equal(processEnv.ANTHROPIC_API_KEY, undefined);
assert.deepEqual([...nextKeys], []);
});
test("restores an inherited value when a user env override is removed", () => {
const inheritedEnv = {
PATH: "/usr/bin",
ANTHROPIC_API_KEY: "inherited",
};
const processEnv = {
...inheritedEnv,
ANTHROPIC_API_KEY: "user-store-value",
};
reconcileInjectedUserEnv({
processEnv,
inheritedEnv,
userEnv: {},
previouslyInjectedKeys: new Set(["ANTHROPIC_API_KEY"]),
});
assert.equal(processEnv.ANTHROPIC_API_KEY, "inherited");
});
test("refreshes an injected user env key when its stored value changes", () => {
const inheritedEnv = { PATH: "/usr/bin" };
const processEnv = {
...inheritedEnv,
ANTHROPIC_API_KEY: "old-value",
};
reconcileInjectedUserEnv({
processEnv,
inheritedEnv,
userEnv: { ANTHROPIC_API_KEY: "new-value" },
previouslyInjectedKeys: new Set(["ANTHROPIC_API_KEY"]),
});
assert.equal(processEnv.ANTHROPIC_API_KEY, "new-value");
});
test("dev child env reconciliation preserves an inherited OPENCODE_DB override", () => {
const inheritedEnv = {
OPENWORK_DEV_MODE: "1",
OPENCODE_DB: "/tmp/installed-production/opencode.db",
};
const processEnv = { ...inheritedEnv };
reconcileInjectedUserEnv({
processEnv,
inheritedEnv,
userEnv: {},
previouslyInjectedKeys: new Set(),
});
assert.equal(processEnv.OPENCODE_DB, "/tmp/installed-production/opencode.db");
});