fix: complete ebay integer validation test coverage
This commit is contained in:
@@ -36,14 +36,7 @@ export function parseNonNegativeIntegerParam(
|
|||||||
{ status: 400 },
|
{ status: 400 },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
const value = Number(rawValue);
|
return Number(rawValue);
|
||||||
if (value < 0) {
|
|
||||||
return Response.json(
|
|
||||||
{ message: `Invalid ${name} parameter` },
|
|
||||||
{ status: 400 },
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function emptySearchResponse(): Response {
|
export function emptySearchResponse(): Response {
|
||||||
|
|||||||
@@ -633,6 +633,78 @@ describe("API routes", () => {
|
|||||||
expect(body.message).toBe("Invalid maxItems parameter");
|
expect(body.message).toBe("Invalid maxItems parameter");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("ebayRoute returns 400 for empty minPrice", async () => {
|
||||||
|
const { ebayRoute } = await import("../src/routes/ebay");
|
||||||
|
|
||||||
|
const response = await ebayRoute(
|
||||||
|
new Request("http://localhost/api/ebay?q=laptop&minPrice="),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(response.status).toBe(400);
|
||||||
|
const body = await response.json();
|
||||||
|
expect(body.message).toBe("Invalid minPrice parameter");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("ebayRoute returns 400 for whitespace minPrice", async () => {
|
||||||
|
const { ebayRoute } = await import("../src/routes/ebay");
|
||||||
|
|
||||||
|
const response = await ebayRoute(
|
||||||
|
new Request("http://localhost/api/ebay?q=laptop&minPrice=%20%20"),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(response.status).toBe(400);
|
||||||
|
const body = await response.json();
|
||||||
|
expect(body.message).toBe("Invalid minPrice parameter");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("ebayRoute returns 400 for hex minPrice", async () => {
|
||||||
|
const { ebayRoute } = await import("../src/routes/ebay");
|
||||||
|
|
||||||
|
const response = await ebayRoute(
|
||||||
|
new Request("http://localhost/api/ebay?q=laptop&minPrice=0x10"),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(response.status).toBe(400);
|
||||||
|
const body = await response.json();
|
||||||
|
expect(body.message).toBe("Invalid minPrice parameter");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("ebayRoute returns 400 for empty maxPrice", async () => {
|
||||||
|
const { ebayRoute } = await import("../src/routes/ebay");
|
||||||
|
|
||||||
|
const response = await ebayRoute(
|
||||||
|
new Request("http://localhost/api/ebay?q=laptop&maxPrice="),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(response.status).toBe(400);
|
||||||
|
const body = await response.json();
|
||||||
|
expect(body.message).toBe("Invalid maxPrice parameter");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("ebayRoute returns 400 for whitespace maxPrice", async () => {
|
||||||
|
const { ebayRoute } = await import("../src/routes/ebay");
|
||||||
|
|
||||||
|
const response = await ebayRoute(
|
||||||
|
new Request("http://localhost/api/ebay?q=laptop&maxPrice=%20%20"),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(response.status).toBe(400);
|
||||||
|
const body = await response.json();
|
||||||
|
expect(body.message).toBe("Invalid maxPrice parameter");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("ebayRoute returns 400 for hex maxPrice", async () => {
|
||||||
|
const { ebayRoute } = await import("../src/routes/ebay");
|
||||||
|
|
||||||
|
const response = await ebayRoute(
|
||||||
|
new Request("http://localhost/api/ebay?q=laptop&maxPrice=0x10"),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(response.status).toBe(400);
|
||||||
|
const body = await response.json();
|
||||||
|
expect(body.message).toBe("Invalid maxPrice parameter");
|
||||||
|
});
|
||||||
|
|
||||||
test("ebayRoute returns 400 for non-integer minPrice", async () => {
|
test("ebayRoute returns 400 for non-integer minPrice", async () => {
|
||||||
const { ebayRoute } = await import("../src/routes/ebay");
|
const { ebayRoute } = await import("../src/routes/ebay");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user