mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
# Conflicts: # CHANGELOG.md # Dockerfile # docs/i18n/ar/CHANGELOG.md # docs/i18n/bg/CHANGELOG.md # docs/i18n/bn/CHANGELOG.md # docs/i18n/cs/CHANGELOG.md # docs/i18n/da/CHANGELOG.md # docs/i18n/de/CHANGELOG.md # docs/i18n/es/CHANGELOG.md # docs/i18n/fa/CHANGELOG.md # docs/i18n/fi/CHANGELOG.md # docs/i18n/fr/CHANGELOG.md # docs/i18n/gu/CHANGELOG.md # docs/i18n/he/CHANGELOG.md # docs/i18n/hi/CHANGELOG.md # docs/i18n/hu/CHANGELOG.md # docs/i18n/id/CHANGELOG.md # docs/i18n/it/CHANGELOG.md # docs/i18n/ja/CHANGELOG.md # docs/i18n/ko/CHANGELOG.md # docs/i18n/mr/CHANGELOG.md # docs/i18n/ms/CHANGELOG.md # docs/i18n/nl/CHANGELOG.md # docs/i18n/no/CHANGELOG.md # docs/i18n/phi/CHANGELOG.md # docs/i18n/pl/CHANGELOG.md # docs/i18n/pt-BR/CHANGELOG.md # docs/i18n/pt/CHANGELOG.md # docs/i18n/ro/CHANGELOG.md # docs/i18n/ru/CHANGELOG.md # docs/i18n/sk/CHANGELOG.md # docs/i18n/sv/CHANGELOG.md # docs/i18n/sw/CHANGELOG.md # docs/i18n/ta/CHANGELOG.md # docs/i18n/te/CHANGELOG.md # docs/i18n/th/CHANGELOG.md # docs/i18n/tr/CHANGELOG.md # docs/i18n/uk-UA/CHANGELOG.md # docs/i18n/ur/CHANGELOG.md # docs/i18n/vi/CHANGELOG.md # docs/i18n/zh-CN/CHANGELOG.md # open-sse/config/providerRegistry.ts # open-sse/handlers/chatCore.ts # open-sse/services/usage.ts # open-sse/utils/streamReadiness.ts # scripts/check-docs-sync.mjs # src/app/(dashboard)/dashboard/cache/media/MediaPageClient.tsx # src/app/(dashboard)/dashboard/providers/[id]/page.tsx # src/app/(dashboard)/dashboard/settings/components/ProxyTab.tsx # src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx # src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.tsx # src/app/api/usage/analytics/route.ts # src/i18n/messages/zh-CN.json # src/lib/embeddings/service.ts # src/lib/usage/providerLimits.ts # src/mitm/cert/install.ts # src/shared/constants/providers.ts # src/sse/handlers/chat.ts # tests/unit/compression/rtk-code-stripper.test.ts # tests/unit/usage-service-hardening.test.ts
59 lines
2.3 KiB
TypeScript
59 lines
2.3 KiB
TypeScript
import { test } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import {
|
|
defaultUseUpstream429BreakerHints,
|
|
resolveUseUpstream429BreakerHints,
|
|
} from "../../src/shared/utils/providerHints.ts";
|
|
|
|
test("defaultUseUpstream429BreakerHints: direct cloud providers default true", () => {
|
|
for (const id of ["openai", "anthropic", "groq", "cerebras", "mistral", "google"]) {
|
|
assert.equal(defaultUseUpstream429BreakerHints(id), true, `expected true for ${id}`);
|
|
}
|
|
});
|
|
|
|
test("defaultUseUpstream429BreakerHints: cliproxyapi defaults false", () => {
|
|
assert.equal(defaultUseUpstream429BreakerHints("cliproxyapi"), false);
|
|
});
|
|
|
|
test("defaultUseUpstream429BreakerHints: self-hosted chat providers default false", () => {
|
|
for (const id of [
|
|
"lm-studio",
|
|
"vllm",
|
|
"lemonade",
|
|
"llamafile",
|
|
"triton",
|
|
"xinference",
|
|
"oobabooga",
|
|
]) {
|
|
assert.equal(defaultUseUpstream429BreakerHints(id), false, `expected false for ${id}`);
|
|
}
|
|
});
|
|
|
|
test("defaultUseUpstream429BreakerHints: claude-code-* prefix defaults false", () => {
|
|
for (const id of [
|
|
"anthropic-compatible-cc-direct",
|
|
"anthropic-compatible-cc-bedrock",
|
|
"anthropic-compatible-cc-vertex",
|
|
]) {
|
|
assert.equal(defaultUseUpstream429BreakerHints(id), false, `expected false for ${id}`);
|
|
}
|
|
});
|
|
|
|
test("resolveUseUpstream429BreakerHints: user override wins (both directions)", () => {
|
|
// Cloud provider with user override OFF → false
|
|
assert.equal(resolveUseUpstream429BreakerHints("openai", false), false);
|
|
// Cloud provider with user override ON → true (no-op vs default)
|
|
assert.equal(resolveUseUpstream429BreakerHints("openai", true), true);
|
|
// Proxy provider with user override ON → true (user explicitly trusted it)
|
|
assert.equal(resolveUseUpstream429BreakerHints("cliproxyapi", true), true);
|
|
// Proxy provider with user override OFF → false (no-op vs default)
|
|
assert.equal(resolveUseUpstream429BreakerHints("cliproxyapi", false), false);
|
|
});
|
|
|
|
test("resolveUseUpstream429BreakerHints: undefined falls back to per-provider default", () => {
|
|
// Critical: this is the v3 regression-test for the v1 default-vs-gate bug.
|
|
assert.equal(resolveUseUpstream429BreakerHints("openai", undefined), true);
|
|
assert.equal(resolveUseUpstream429BreakerHints("cliproxyapi", undefined), false);
|
|
assert.equal(resolveUseUpstream429BreakerHints("lm-studio", undefined), false);
|
|
});
|