{
  "filename": "server.cjs",
  "rule": "The checkout route rejects discountPercent unless it is a finite number in the inclusive range 0 to 20, before calculating the discounted total.",
  "fixed": "const express = require(\"express\");\nconst app = express();\napp.use(express.json({ limit: \"10kb\" }));\n\napp.post(\"/checkout\", (request, response) => {\n  const { subtotalCents, discountPercent = 0 } = request.body;\n  if (!Number.isSafeInteger(subtotalCents) || subtotalCents <= 0) {\n    return response.status(400).json({ error: \"subtotalCents must be a positive integer\" });\n  }\n  if (!Number.isFinite(discountPercent) || discountPercent < 0 || discountPercent > 20) {\n    return response.status(400).json({ error: \"discountPercent must be between 0 and 20\" });\n  }\n  return response.json({ totalCents: Math.round(subtotalCents * (1 - discountPercent / 100)) });\n});\n\nif (require.main === module) app.listen(3000);\nmodule.exports = app;\n",
  "broken": "const express = require(\"express\");\nconst app = express();\napp.use(express.json({ limit: \"10kb\" }));\n\napp.post(\"/checkout\", (request, response) => {\n  const { subtotalCents, discountPercent = 0 } = request.body;\n  if (!Number.isSafeInteger(subtotalCents) || subtotalCents <= 0) {\n    return response.status(400).json({ error: \"subtotalCents must be a positive integer\" });\n  }\n  if (!Number.isFinite(discountPercent) || discountPercent < 0) {\n    return response.status(400).json({ error: \"discountPercent must be between 0 and 20\" });\n  }\n  return response.json({ totalCents: Math.round(subtotalCents * (1 - discountPercent / 100)) });\n});\n\nif (require.main === module) app.listen(3000);\nmodule.exports = app;\n",
  "test": {
    "filename": "server.test.cjs",
    "source": "const test = require(\"node:test\");\nconst assert = require(\"node:assert/strict\");\nconst request = require(\"supertest\");\nconst app = require(\"./server.cjs\");\n\ntest(\"discount boundary and input types\", async () => {\n  const good = await request(app).post(\"/checkout\").send({subtotalCents: 10000, discountPercent: 20});\n  assert.equal(good.status, 200);\n  assert.equal(good.body.totalCents, 8000);\n  for (const discountPercent of [21, -1, \"20\", null]) {\n    const bad = await request(app).post(\"/checkout\").send({subtotalCents: 10000, discountPercent});\n    assert.equal(bad.status, 400);\n  }\n});\n",
    "command": "node --test server.test.cjs"
  }
}