mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-23 07:32:20 +03:00
Merged — locally validated (23/23 focused probe-isolation tests, typecheck:core clean, file-size/changelog gates green). Reconciled with today's #8367 (codexAccount module extraction, merged earlier): the persistCodexQuotaState closure this PR touched had been extracted into persistCodexChildQuotaResponse — applied the same probe-origin isolation guard (!shouldIsolateProbeFailures()) at its new call site instead of reintroducing the old inline closure. Thanks for closing this real gap!
59 lines
2.0 KiB
TypeScript
59 lines
2.0 KiB
TypeScript
import { test } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import fs from "node:fs";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
|
|
const TEST_DATA_DIR = fs.mkdtempSync(path.join(os.tmpdir(), "omniroute-probe-prodpath-"));
|
|
process.env.DATA_DIR = TEST_DATA_DIR;
|
|
|
|
const core = await import("../../src/lib/db/core.ts");
|
|
const settingsDb = await import("../../src/lib/db/settings.ts");
|
|
const { createProviderConnection } = await import("../../src/lib/db/providers.ts");
|
|
const { markAccountUnavailable } = await import("../../src/sse/services/auth.ts");
|
|
|
|
test.after(() => {
|
|
core.resetDbInstance();
|
|
fs.rmSync(TEST_DATA_DIR, { recursive: true, force: true });
|
|
});
|
|
|
|
function readConnectionRow(connId: string) {
|
|
const db = core.getDbInstance() as unknown as {
|
|
prepare: (sql: string) => {
|
|
get: (id: string) =>
|
|
| {
|
|
is_active: unknown;
|
|
test_status: unknown;
|
|
rate_limited_until: unknown;
|
|
}
|
|
| undefined;
|
|
};
|
|
};
|
|
return db
|
|
.prepare(
|
|
"SELECT is_active, test_status, rate_limited_until FROM provider_connections WHERE id = ?"
|
|
)
|
|
.get(connId);
|
|
}
|
|
|
|
test("real-path permanent failure keeps the full production behavior", async () => {
|
|
await settingsDb.updateSettings({ autoDisableBannedAccounts: true });
|
|
const conn = await createProviderConnection({
|
|
provider: "openai",
|
|
authType: "apikey",
|
|
name: "probe-prodpath",
|
|
apiKey: "sk-probe-prodpath", // pragma: allowlist secret
|
|
isActive: true,
|
|
testStatus: "active",
|
|
});
|
|
const connId = String((conn as { id: string }).id);
|
|
|
|
const res = await markAccountUnavailable(connId, 403, "this account is deactivated", "openai");
|
|
assert.equal(res.shouldFallback, true);
|
|
|
|
const row = readConnectionRow(connId);
|
|
assert.equal(row?.is_active, 0, "is_active flipped off (auto-disable, setting ON)");
|
|
assert.equal(row?.test_status, "banned", "terminal status written");
|
|
assert.equal(row?.rate_limited_until, null, "no persisted cooldown on the terminal path");
|
|
});
|