diff --git a/apps/api/src/services/paymentService.js b/apps/api/src/services/paymentService.js index 956a70dc78..d1c1fcdec4 100644 --- a/apps/api/src/services/paymentService.js +++ b/apps/api/src/services/paymentService.js @@ -4,6 +4,7 @@ export async function createPaymentIntent(payload) { paymentId: `pay_${Date.now()}`, amount: payload.amount, currency: payload.currency ?? "usd", - provider: "stripe" + provider: "stripe", + createdAt: new Date().toISOString() }; } diff --git a/apps/api/src/tests/paymentService.test.js b/apps/api/src/tests/paymentService.test.js new file mode 100644 index 0000000000..3d96636b16 --- /dev/null +++ b/apps/api/src/tests/paymentService.test.js @@ -0,0 +1,22 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { createPaymentIntent } from "../services/paymentService.js"; + +test("createPaymentIntent adds a server-owned createdAt timestamp", async () => { + const beforeCreate = Date.now(); + const intent = await createPaymentIntent({ + amount: 125, + currency: "usd", + jobId: "job_created_at", + createdAt: "2000-01-01T00:00:00.000Z" + }); + const afterCreate = Date.now(); + + assert.equal(typeof intent.createdAt, "string"); + + const createdAtTime = Date.parse(intent.createdAt); + assert.ok(Number.isFinite(createdAtTime)); + assert.ok(createdAtTime >= beforeCreate); + assert.ok(createdAtTime <= afterCreate); + assert.notEqual(intent.createdAt, "2000-01-01T00:00:00.000Z"); +});