From cff54d73253a4c2d16a174a28f0f5d31c94bcebd Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Fri, 5 May 2023 16:54:38 +0200 Subject: [PATCH] fix(medusa-payment-stripe): Catch on idempotency key retrieve if not found (#4025) **What** In case the idempotency key is not found, an error will be thrown. We actually want to catch this error and create the key if it does not exists --- .changeset/sour-feet-sniff.md | 6 ++++++ .../src/api/utils/__fixtures__/container.ts | 4 ++-- packages/medusa-payment-stripe/src/api/utils/utils.ts | 10 ++++++---- 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 .changeset/sour-feet-sniff.md diff --git a/.changeset/sour-feet-sniff.md b/.changeset/sour-feet-sniff.md new file mode 100644 index 0000000000..52074e43a6 --- /dev/null +++ b/.changeset/sour-feet-sniff.md @@ -0,0 +1,6 @@ +--- +"medusa-payment-stripe": patch +"@medusajs/medusa": patch +--- + +fix(medusa-payment-stripe): Catch on idempotency key retrieve if not found diff --git a/packages/medusa-payment-stripe/src/api/utils/__fixtures__/container.ts b/packages/medusa-payment-stripe/src/api/utils/__fixtures__/container.ts index 9a995d81a5..4cab93dc1c 100644 --- a/packages/medusa-payment-stripe/src/api/utils/__fixtures__/container.ts +++ b/packages/medusa-payment-stripe/src/api/utils/__fixtures__/container.ts @@ -35,8 +35,8 @@ container.register( withTransaction: function () { return this }, - retrieve: jest.fn().mockReturnValue(undefined), - create: jest.fn().mockReturnValue({}), + retrieve: jest.fn().mockImplementation(async () => undefined), + create: jest.fn().mockImplementation(async () => ({})), }) ) diff --git a/packages/medusa-payment-stripe/src/api/utils/utils.ts b/packages/medusa-payment-stripe/src/api/utils/utils.ts index 7c040033af..d0340dfe4a 100644 --- a/packages/medusa-payment-stripe/src/api/utils/utils.ts +++ b/packages/medusa-payment-stripe/src/api/utils/utils.ts @@ -226,10 +226,12 @@ async function completeCartIfNecessary({ const idempotencyKeyServiceTx = idempotencyKeyService.withTransaction(transactionManager) - let idempotencyKey = await idempotencyKeyServiceTx.retrieve({ - request_path: "/stripe/hooks", - idempotency_key: eventId, - }) + let idempotencyKey = await idempotencyKeyServiceTx + .retrieve({ + request_path: "/stripe/hooks", + idempotency_key: eventId, + }) + .catch(() => undefined) if (!idempotencyKey) { idempotencyKey = await idempotencyKeyService