test(cli): table-drive camera url failure cases

This commit is contained in:
Peter Steinberger
2026-02-21 23:24:43 +00:00
parent c9593c4c87
commit dd4e8f8098

View File

@@ -141,36 +141,44 @@ describe("nodes camera helpers", () => {
}); });
}); });
it("rejects non-https url payload", async () => { it("rejects invalid url payload responses", async () => {
await expect(writeUrlToFile("/tmp/ignored", "http://example.com/x.bin")).rejects.toThrow( const cases = [
/only https/i, {
); name: "non-https url",
}); url: "http://example.com/x.bin",
expectedMessage: /only https/i,
},
{
name: "oversized content-length",
url: "https://example.com/huge.bin",
response: new Response("tiny", {
status: 200,
headers: { "content-length": String(999_999_999) },
}),
expectedMessage: /exceeds max/i,
},
{
name: "non-ok status",
url: "https://example.com/down.bin",
response: new Response("down", { status: 503, statusText: "Service Unavailable" }),
expectedMessage: /503/i,
},
{
name: "empty response body",
url: "https://example.com/empty.bin",
response: new Response(null, { status: 200 }),
expectedMessage: /empty response body/i,
},
] as const;
it("rejects oversized content-length for url payload", async () => { for (const testCase of cases) {
stubFetchResponse( if (testCase.response) {
new Response("tiny", { stubFetchResponse(testCase.response);
status: 200, }
headers: { "content-length": String(999_999_999) }, await expect(writeUrlToFile("/tmp/ignored", testCase.url), testCase.name).rejects.toThrow(
}), testCase.expectedMessage,
); );
await expect(writeUrlToFile("/tmp/ignored", "https://example.com/huge.bin")).rejects.toThrow( }
/exceeds max/i,
);
});
it("rejects non-ok https url payload responses", async () => {
stubFetchResponse(new Response("down", { status: 503, statusText: "Service Unavailable" }));
await expect(writeUrlToFile("/tmp/ignored", "https://example.com/down.bin")).rejects.toThrow(
/503/i,
);
});
it("rejects empty https response body", async () => {
stubFetchResponse(new Response(null, { status: 200 }));
await expect(writeUrlToFile("/tmp/ignored", "https://example.com/empty.bin")).rejects.toThrow(
/empty response body/i,
);
}); });
it("removes partially written file when url stream fails", async () => { it("removes partially written file when url stream fails", async () => {