Files
diegosouzapw--omniroute/tests/unit/refactor-resolveBaseUrl.test.ts
2026-07-13 13:39:12 +08:00

94 lines
3.2 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import { BaseExecutor } from "../../open-sse/executors/base.ts";
import type { ProviderCredentials } from "../../open-sse/executors/base.ts";
/**
* TestExecutor exposes protected resolveBaseUrl for unit testing.
*/
class TestExecutor extends BaseExecutor {
constructor(config = {}) {
super("test-provider", {
baseUrls: ["https://default.example/v1/chat/completions"],
...config,
});
}
/** Public wrapper for the protected method. */
publicResolveBaseUrl(credentials: ProviderCredentials | null, fallback?: string): string {
return this.resolveBaseUrl(credentials, fallback);
}
async transformRequest(model: string, body: unknown, stream: boolean) {
return body;
}
}
// ---------------------------------------------------------------------------
// Tests
// ---------------------------------------------------------------------------
test("resolveBaseUrl: returns credentials.providerSpecificData.baseUrl when set", () => {
const executor = new TestExecutor();
const result = executor.publicResolveBaseUrl({
apiKey: "key-1",
providerSpecificData: { baseUrl: "https://custom.example/v1/chat/completions" },
});
assert.equal(result, "https://custom.example/v1/chat/completions");
});
test("resolveBaseUrl: returns fallback when credentials have no baseUrl", () => {
const executor = new TestExecutor();
const result = executor.publicResolveBaseUrl(
{ apiKey: "key-1" },
"https://fallback.example/v1/chat/completions"
);
assert.equal(result, "https://fallback.example/v1/chat/completions");
});
test("resolveBaseUrl: returns config.baseUrl when no credentials and no fallback", () => {
const executor = new TestExecutor({
baseUrl: "https://config.example/v1/chat/completions",
});
const result = executor.publicResolveBaseUrl(null);
assert.equal(result, "https://config.example/v1/chat/completions");
});
test("resolveBaseUrl: returns empty string when nothing is configured", () => {
const executor = new TestExecutor();
const result = executor.publicResolveBaseUrl(null);
assert.equal(result, "");
});
test("resolveBaseUrl: credentials.baseUrl takes precedence over fallback", () => {
const executor = new TestExecutor();
const result = executor.publicResolveBaseUrl(
{
apiKey: "key-1",
providerSpecificData: { baseUrl: "https://cred.example/v1" },
},
"https://fallback.example/v1"
);
assert.equal(result, "https://cred.example/v1");
});
test("resolveBaseUrl: credentials.baseUrl takes precedence over config.baseUrl", () => {
const executor = new TestExecutor({
baseUrl: "https://config.example/v1",
});
const result = executor.publicResolveBaseUrl({
apiKey: "key-1",
providerSpecificData: { baseUrl: "https://cred.example/v1" },
});
assert.equal(result, "https://cred.example/v1");
});
test("resolveBaseUrl: fallback takes precedence over config.baseUrl", () => {
const executor = new TestExecutor({
baseUrl: "https://config.example/v1",
});
const result = executor.publicResolveBaseUrl({ apiKey: "key-1" }, "https://fallback.example/v1");
assert.equal(result, "https://fallback.example/v1");
});