Files
OmniRoute/tests/unit/cli/setup-goose.test.ts
Diego Rodrigues de Sa e Souza 25f9dac9e9 feat(cli): setup-goose — configure Goose for OmniRoute (config.yaml + env recipe) (#4300)
CLI #10 of the series. `omniroute setup-goose` writes Goose's file-based
~/.config/goose/config.yaml (GOOSE_PROVIDER=openai, GOOSE_MODEL=<model>,
OPENAI_HOST=<root, NO /v1 — Goose appends the path itself>), merges to preserve
existing keys, and prints the guaranteed env-var recipe (the key lives in the env
/ OS keyring, never the config). Remote-aware (--remote/--api-key → context →
localhost); model via --model or interactive pick.

Researched against block/goose: provider openai + OPENAI_HOST base (no /v1).
Goose's wire (/v1/chat/completions) already validated → "OK".

Tests: resolveGooseTarget (/v1 strip, key), buildGooseConfig (provider/model/host
+ preserve), buildGooseEnvRecipe (env-ref key). 4 unit tests; cli-i18n green.
2026-06-19 17:04:44 -03:00

25 lines
1.3 KiB
TypeScript

import { test } from "node:test";
import assert from "node:assert/strict";
import { resolveGooseTarget, buildGooseConfig, buildGooseEnvRecipe } from "../../../bin/cli/commands/setup-goose.mjs";
test("resolveGooseTarget strips /v1 (Goose appends it)", () => {
assert.equal(resolveGooseTarget({ remote: "http://vps:20128/v1/" }).host, "http://vps:20128");
assert.equal(resolveGooseTarget({ remote: "http://vps:20128" }).host, "http://vps:20128");
});
test("resolveGooseTarget: explicit --api-key wins", () => {
assert.equal(resolveGooseTarget({ remote: "http://x:20128", apiKey: "sk-x" }).apiKey, "sk-x");
});
test("buildGooseConfig sets GOOSE_PROVIDER/MODEL + OPENAI_HOST (root), preserves rest", () => {
const c = buildGooseConfig({ GOOSE_MODE: "auto" }, { host: "http://vps:20128", model: "glm/glm-5.2" });
assert.equal(c.GOOSE_PROVIDER, "openai");
assert.equal(c.GOOSE_MODEL, "glm/glm-5.2");
assert.equal(c.OPENAI_HOST, "http://vps:20128");
assert.equal(c.GOOSE_MODE, "auto");
});
test("buildGooseEnvRecipe references the env key (secret off disk)", () => {
const r = buildGooseEnvRecipe({ host: "http://vps:20128", model: "m" });
assert.ok(r.includes("OPENAI_HOST=http://vps:20128"));
assert.ok(r.includes("OPENAI_API_KEY=$OMNIROUTE_API_KEY"));
assert.ok(r.includes("GOOSE_PROVIDER=openai"));
});