mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-22 15:12:23 +03:00
Merged — validated together with a batch of related RaviTharuma PRs in one combined worktree (typecheck:core clean, complexity/file-size/changelog gates green, focused tests passing). Thanks for the contribution!
74 lines
2.3 KiB
TypeScript
74 lines
2.3 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { mkdtempSync } from "node:fs";
|
|
import { tmpdir } from "node:os";
|
|
import { join } from "node:path";
|
|
|
|
process.env.DATA_DIR = mkdtempSync(join(tmpdir(), "omniroute-search-named-errors-"));
|
|
|
|
const { handleSearch } = await import("../../open-sse/handlers/search.ts");
|
|
const { formatSearchProviderFailure } = await import(
|
|
"../../open-sse/handlers/search/providerFailure.ts"
|
|
);
|
|
|
|
test("formatSearchProviderFailure names the provider and sanitized Node cause", () => {
|
|
const err = new TypeError("fetch failed");
|
|
(err as Error & { cause?: { code: string; address: string } }).cause = {
|
|
code: "ENETUNREACH",
|
|
address: "203.0.113.10",
|
|
};
|
|
|
|
const result = formatSearchProviderFailure("serper-search", err, false);
|
|
|
|
assert.equal(result.success, false);
|
|
assert.equal(result.status, 502);
|
|
assert.equal(
|
|
result.error,
|
|
"Search provider serper-search error: fetch failed (cause: ENETUNREACH)"
|
|
);
|
|
assert.equal(result.error.includes("203.0.113"), false);
|
|
});
|
|
|
|
test("formatSearchProviderFailure omits non-Node cause codes", () => {
|
|
const err = new TypeError("fetch failed");
|
|
(err as Error & { cause?: { code: string } }).cause = { code: "not-a-node-code" };
|
|
|
|
const result = formatSearchProviderFailure("brave-search", err, false);
|
|
|
|
assert.equal(result.status, 502);
|
|
assert.equal(result.error, "Search provider brave-search error: fetch failed");
|
|
});
|
|
|
|
test("handleSearch names the provider and sanitized cause on fetch failed 502", async () => {
|
|
const originalFetch = globalThis.fetch;
|
|
globalThis.fetch = async () => {
|
|
const err = new TypeError("fetch failed");
|
|
(err as Error & { cause?: { code: string; address: string } }).cause = {
|
|
code: "ENETUNREACH",
|
|
address: "203.0.113.10",
|
|
};
|
|
throw err;
|
|
};
|
|
|
|
try {
|
|
const result = await handleSearch({
|
|
query: "named provider 502",
|
|
provider: "serper-search",
|
|
maxResults: 5,
|
|
searchType: "web",
|
|
credentials: { apiKey: "test-key" },
|
|
log: null,
|
|
});
|
|
|
|
assert.equal(result.success, false);
|
|
assert.equal(result.status, 502);
|
|
assert.equal(
|
|
result.error,
|
|
"Search provider serper-search error: fetch failed (cause: ENETUNREACH)"
|
|
);
|
|
assert.equal(String(result.error).includes("203.0.113"), false);
|
|
} finally {
|
|
globalThis.fetch = originalFetch;
|
|
}
|
|
});
|