diff --git a/apps/api/src/tests/jobValidator.test.js b/apps/api/src/tests/jobValidator.test.js new file mode 100644 index 0000000000..5feee02956 --- /dev/null +++ b/apps/api/src/tests/jobValidator.test.js @@ -0,0 +1,17 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { createJobSchema } from "../validators/job.js"; + +const validJob = { + title: "Build search filters", + description: "Add search filters for client project discovery.", + budgetMin: 100, + budgetMax: 500, + categoryId: "cat_web", + skills: ["node"] +}; + +test("createJobSchema rejects non-finite budget values", () => { + assert.equal(createJobSchema.safeParse({ ...validJob, budgetMin: Infinity }).success, false); + assert.equal(createJobSchema.safeParse({ ...validJob, budgetMax: Infinity }).success, false); +}); diff --git a/apps/api/src/validators/job.js b/apps/api/src/validators/job.js index 5593a844af..dce585538f 100644 --- a/apps/api/src/validators/job.js +++ b/apps/api/src/validators/job.js @@ -3,8 +3,8 @@ import { z } from "zod"; export const createJobSchema = z.object({ title: z.string().min(4), description: z.string().min(10), - budgetMin: z.number().nonnegative(), - budgetMax: z.number().nonnegative(), + budgetMin: z.number().finite().nonnegative(), + budgetMax: z.number().finite().nonnegative(), categoryId: z.string().min(1), skills: z.array(z.string().min(1)).default([]) });