mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-28 12:54:58 +00:00
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { fetchJson } from "../../scripts/tool-search-gateway-e2e.ts";
|
|
|
|
describe("tool search gateway e2e fetch helper", () => {
|
|
it("aborts requests that never resolve", async () => {
|
|
let signal: AbortSignal | undefined;
|
|
await expect(
|
|
fetchJson("https://qa.example.invalid/debug/requests", undefined, {
|
|
timeoutMs: 25,
|
|
fetchImpl: async (_url, init) => {
|
|
signal = init.signal as AbortSignal | undefined;
|
|
return new Promise<Response>(() => {});
|
|
},
|
|
}),
|
|
).rejects.toMatchObject({
|
|
code: "ETIMEDOUT",
|
|
message: "HTTP request to https://qa.example.invalid/debug/requests timed out after 25ms",
|
|
});
|
|
expect(signal?.aborted).toBe(true);
|
|
});
|
|
|
|
it("times out while reading stalled response bodies", async () => {
|
|
await expect(
|
|
fetchJson("https://qa.example.invalid/v1/responses", undefined, {
|
|
timeoutMs: 25,
|
|
fetchImpl: async () =>
|
|
({
|
|
ok: true,
|
|
status: 200,
|
|
text: () => new Promise<string>(() => {}),
|
|
}) as Response,
|
|
}),
|
|
).rejects.toMatchObject({
|
|
code: "ETIMEDOUT",
|
|
message: "HTTP request to https://qa.example.invalid/v1/responses timed out after 25ms",
|
|
});
|
|
});
|
|
|
|
it("parses successful JSON responses", async () => {
|
|
await expect(
|
|
fetchJson("https://qa.example.invalid/debug/requests", undefined, {
|
|
timeoutMs: 25,
|
|
fetchImpl: async () =>
|
|
({
|
|
ok: true,
|
|
status: 200,
|
|
text: async () => '{"ok":true}',
|
|
}) as Response,
|
|
}),
|
|
).resolves.toEqual({ ok: true });
|
|
});
|
|
});
|