mike-backend / backend /src /lib /inference /resolveProvider.test.ts
bardd's picture
Deploy Mike backend-only Space
06671aa verified
Raw History Blame Contribute Delete
3.27 kB
import assert from "node:assert/strict";
import test from "node:test";
import { ProviderModelMismatchError } from "./errors";
import {
getModelDefaultProvider,
inferenceProviderToLegacy,
normalizeRequestProvider,
resolveInferenceProvider,
validateProviderModelPair,
} from "./resolveProvider";
import { resetInferenceManifestCache } from "./config";
test.beforeEach(() => {
resetInferenceManifestCache();
delete process.env.INFERENCE_MANIFEST_PATH;
});
test("normalizeRequestProvider maps legacy frontend aliases", () => {
assert.equal(normalizeRequestProvider("openai-api"), "proxy-openai");
assert.equal(normalizeRequestProvider("openai"), "proxy-openai");
assert.equal(normalizeRequestProvider("gemini_sdk"), "google-genai");
assert.equal(normalizeRequestProvider("gemini"), "google-genai");
});
test("explicit openai-api beats model registry default", () => {
const provider = resolveInferenceProvider({
explicitRequestProvider: "openai-api",
model: "gemini-3-flash-agent-high",
featureId: "chat",
});
assert.equal(provider, "proxy-openai");
});
test("feature override applies when explicit provider is absent", () => {
const provider = resolveInferenceProvider({
model: "gemini-3-flash-agent-high",
featureId: "python-review",
});
assert.equal(provider, "proxy-openai");
});
test("model registry default applies when feature override is absent", () => {
assert.equal(
getModelDefaultProvider("gemini-3.5-flash-high"),
"proxy-openai",
);
assert.equal(
getModelDefaultProvider("gemini-3-flash-agent-high"),
"proxy-openai",
);
});
test("manifest default provider applies for unknown models", () => {
const provider = resolveInferenceProvider({
model: "unknown-model-id",
});
assert.equal(provider, "proxy-openai");
});
test("explicit provider incompatible with model throws mismatch error", () => {
assert.throws(
() =>
resolveInferenceProvider({
explicitRequestProvider: "gemini_sdk",
model: "gemini-3.5-flash-high",
}),
ProviderModelMismatchError,
);
});
test("validateProviderModelPair returns structured mismatch result", () => {
const result = validateProviderModelPair({
model: "gemini-3.5-flash-high",
inferenceProvider: "gemini_sdk",
featureId: "chat",
});
assert.deepEqual(result, { ok: false, error: "provider_model_mismatch" });
});
test("default frontend chat payload is accepted", () => {
const result = validateProviderModelPair({
model: "gemini-3.5-flash-high",
inferenceProvider: "openai-api",
featureId: "chat",
});
assert.equal(result.ok, true);
if (result.ok) {
assert.equal(result.provider, "proxy-openai");
assert.equal(inferenceProviderToLegacy(result.provider), "openai");
}
});
test("unknown explicit provider is rejected", () => {
assert.throws(
() =>
resolveInferenceProvider({
explicitRequestProvider: "anthropic-direct",
model: "gemini-3-flash-agent-high",
}),
ProviderModelMismatchError,
);
});