57 lines
1.6 KiB
JavaScript
57 lines
1.6 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
|
|
import {
|
|
configDeclaresProvider,
|
|
listConfiguredProviderIds,
|
|
readCurrentProviderFromConfigText,
|
|
setRootProviderInConfigText
|
|
} from "../src/config-file.js";
|
|
|
|
test("readCurrentProviderFromConfigText falls back to implicit openai", () => {
|
|
const input = `
|
|
# comment
|
|
sandbox_mode = "danger-full-access"
|
|
|
|
[features]
|
|
apps = true
|
|
`;
|
|
|
|
assert.deepEqual(readCurrentProviderFromConfigText(input), {
|
|
provider: "openai",
|
|
implicit: true
|
|
});
|
|
});
|
|
|
|
test("setRootProviderInConfigText inserts root-level model_provider before first table", () => {
|
|
const input = `# comment
|
|
sandbox_mode = "danger-full-access"
|
|
|
|
[features]
|
|
apps = true
|
|
`;
|
|
|
|
const next = setRootProviderInConfigText(input, "apigather");
|
|
assert.match(next, /^# comment\nsandbox_mode = "danger-full-access"\n\nmodel_provider = "apigather"\n\[features]/);
|
|
});
|
|
|
|
test("setRootProviderInConfigText updates existing root-level model_provider", () => {
|
|
const input = `model_provider = "openai"\nsandbox_mode = "danger-full-access"\n`;
|
|
const next = setRootProviderInConfigText(input, "newapi");
|
|
assert.equal(next, `model_provider = "newapi"\nsandbox_mode = "danger-full-access"\n`);
|
|
});
|
|
|
|
test("provider declarations include openai and custom tables", () => {
|
|
const input = `
|
|
[model_providers.apigather]
|
|
base_url = "https://example.com"
|
|
|
|
[model_providers.newapi]
|
|
base_url = "https://example.org"
|
|
`;
|
|
|
|
assert.deepEqual(listConfiguredProviderIds(input), ["apigather", "newapi", "openai"]);
|
|
assert.equal(configDeclaresProvider(input, "apigather"), true);
|
|
assert.equal(configDeclaresProvider(input, "missing"), false);
|
|
});
|