Files
OmniRoute/tests/unit/provider-test-statuscode-propagation.test.ts

69 lines
1.6 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
const { buildApiKeyConnectionTestResult } =
await import("../../src/app/api/providers/[id]/test/apiKeyTestResult.ts");
const FAILURE_DIAGNOSIS = {
type: "synthetic_failure",
source: "test",
message: "Synthetic validator failure",
code: "synthetic",
};
test("API-key connection tests preserve validator failure status codes", () => {
for (const statusCode of [401, 403, 429, 503]) {
const result = buildApiKeyConnectionTestResult(
{
valid: false,
warning: null,
statusCode,
},
`Synthetic validator failure ${statusCode}`,
FAILURE_DIAGNOSIS
);
assert.equal(result.valid, false);
assert.equal(result.statusCode, statusCode);
assert.deepEqual(result.diagnosis, FAILURE_DIAGNOSIS);
}
});
test("status-less semantic failures remain status-less", () => {
const result = buildApiKeyConnectionTestResult(
{
valid: false,
warning: null,
},
"Synthetic semantic failure",
FAILURE_DIAGNOSIS
);
assert.equal(result.valid, false);
assert.equal(result.statusCode, null);
assert.deepEqual(result.diagnosis, FAILURE_DIAGNOSIS);
});
test("successful validation does not synthesize an HTTP status", () => {
const diagnosis = {
type: "ok",
source: "upstream",
message: null,
code: null,
};
const result = buildApiKeyConnectionTestResult(
{
valid: true,
warning: null,
statusCode: 200,
},
null,
diagnosis
);
assert.equal(result.valid, true);
assert.equal(result.statusCode, null);
assert.deepEqual(result.diagnosis, diagnosis);
});