fix(coding-agent): mention oauth exemption in apiKey validation error; add validation tests

This commit is contained in:
can1357
2026-08-19 01:04:58 +02:00
parent 539d841b10
commit e61775a470
2 changed files with 32 additions and 1 deletions
@@ -71,7 +71,7 @@ export function validateProviderConfiguration(
throw new Error(
mode === "runtime-register"
? `Provider ${providerName}: "apiKey" or "oauth" is required when defining models.`
: `Provider ${providerName}: "apiKey" is required when defining custom models unless auth is "none".`,
: `Provider ${providerName}: "apiKey" is required when defining custom models unless auth is "none" or "oauth".`,
);
}
}
@@ -0,0 +1,31 @@
import { describe, expect, test } from "bun:test";
import { validateProviderConfiguration } from "@oh-my-pi/pi-coding-agent/config/models-config";
const models = [{ id: "grok-4", api: "openai-completions" as const }];
const baseUrl = "https://api.example.invalid/v1";
describe("validateProviderConfiguration (models-config auth)", () => {
test("auth: oauth allows custom models without apiKey", () => {
expect(() =>
validateProviderConfiguration("xai-oauth", { baseUrl, auth: "oauth", models }, "models-config"),
).not.toThrow();
});
test("auth: none allows custom models without apiKey", () => {
expect(() =>
validateProviderConfiguration("local", { baseUrl, auth: "none", models }, "models-config"),
).not.toThrow();
});
test("default auth (apiKey) still requires apiKey for custom models", () => {
expect(() => validateProviderConfiguration("custom", { baseUrl, models }, "models-config")).toThrow(
'Provider custom: "apiKey" is required when defining custom models unless auth is "none" or "oauth".',
);
});
test("explicit auth: apiKey with apiKey set passes", () => {
expect(() =>
validateProviderConfiguration("custom", { baseUrl, auth: "apiKey", apiKey: "sk-test", models }, "models-config"),
).not.toThrow();
});
});