Files
OmniRoute/tests/unit/cli/setup-qwen.test.ts
Diego Rodrigues de Sa e Souza 0ec476b755 feat(cli): setup-qwen — configure Qwen Code for OmniRoute (settings.json modelProvider) (#4301)
CLI #11 of the series. `omniroute setup-qwen` writes Qwen Code's file-based
~/.qwen/settings.json: an openai `modelProvider` (id omniroute, authType openai,
baseUrl WITH /v1, envKey OMNIROUTE_API_KEY — secret stays in the env), selects it,
sets the model. Merges (de-dupes the omniroute provider, preserves the rest).
Remote-aware; model via --model or interactive pick; headless test `qwen -p`.

Researched against QwenLM/qwen-code: modelProviders authType openai, baseUrl /v1,
envKey reference. Qwen's wire (/v1/chat/completions) already validated → "OK".

Tests: resolveQwenTarget (/v1, key), buildQwenSettings (openai provider + /v1 +
envKey + model, de-dupe + preserve). 4 unit tests; cli-i18n green.
2026-06-19 17:26:38 -03:00

29 lines
1.4 KiB
TypeScript

import { test } from "node:test";
import assert from "node:assert/strict";
import { resolveQwenTarget, buildQwenSettings } from "../../../bin/cli/commands/setup-qwen.mjs";
test("resolveQwenTarget ensures /v1", () => {
assert.equal(resolveQwenTarget({ remote: "http://vps:20128" }).baseUrl, "http://vps:20128/v1");
});
test("resolveQwenTarget: explicit --api-key wins", () => {
assert.equal(resolveQwenTarget({ remote: "http://x:20128", apiKey: "sk-x" }).apiKey, "sk-x");
});
test("buildQwenSettings adds an openai modelProvider (baseUrl /v1, envKey), sets model", () => {
const s = buildQwenSettings({}, { baseUrl: "http://vps:20128/v1", model: "glm/glm-5.2" });
const p = s.modelProviders.find((x) => x.id === "omniroute");
assert.equal(p.authType, "openai");
assert.equal(p.baseUrl, "http://vps:20128/v1");
assert.equal(p.envKey, "OMNIROUTE_API_KEY");
assert.equal(s.model, "glm/glm-5.2");
assert.equal(s.selectedProvider, "omniroute");
});
test("buildQwenSettings de-dupes the omniroute provider + preserves others", () => {
const s = buildQwenSettings(
{ modelProviders: [{ id: "other" }, { id: "omniroute", baseUrl: "old" }], theme: "dark" },
{ baseUrl: "http://x/v1", model: "m" }
);
assert.equal(s.modelProviders.filter((p) => p.id === "omniroute").length, 1);
assert.ok(s.modelProviders.some((p) => p.id === "other"));
assert.equal(s.theme, "dark");
});