mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-16 06:07:21 +01:00
fix(stripe): use new data structure for webhooks event.request
This commit is contained in:
@@ -90,11 +90,11 @@ describe('Stripe - Webhooks', () => {
|
|||||||
sandbox.stub(payments, 'cancelSubscription').resolves({});
|
sandbox.stub(payments, 'cancelSubscription').resolves({});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('does not do anything if event.request is null (subscription cancelled manually)', async () => {
|
it('does not do anything if event.request is not null (subscription cancelled manually)', async () => {
|
||||||
constructEventStub.returns({
|
constructEventStub.returns({
|
||||||
id: 123,
|
id: 123,
|
||||||
type: eventType,
|
type: eventType,
|
||||||
request: 123,
|
request: { id: 123 },
|
||||||
});
|
});
|
||||||
|
|
||||||
await stripePayments.handleWebhooks({ body, headers }, stripe);
|
await stripePayments.handleWebhooks({ body, headers }, stripe);
|
||||||
@@ -118,7 +118,7 @@ describe('Stripe - Webhooks', () => {
|
|||||||
customer: customerId,
|
customer: customerId,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
request: null,
|
request: { id: null },
|
||||||
});
|
});
|
||||||
|
|
||||||
await expect(stripePayments.handleWebhooks({ body, headers }, stripe))
|
await expect(stripePayments.handleWebhooks({ body, headers }, stripe))
|
||||||
@@ -151,7 +151,7 @@ describe('Stripe - Webhooks', () => {
|
|||||||
customer: customerId,
|
customer: customerId,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
request: null,
|
request: { id: null },
|
||||||
});
|
});
|
||||||
|
|
||||||
await stripePayments.handleWebhooks({ body, headers }, stripe);
|
await stripePayments.handleWebhooks({ body, headers }, stripe);
|
||||||
@@ -182,7 +182,7 @@ describe('Stripe - Webhooks', () => {
|
|||||||
customer: customerId,
|
customer: customerId,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
request: null,
|
request: { id: null },
|
||||||
});
|
});
|
||||||
|
|
||||||
await expect(stripePayments.handleWebhooks({ body, headers }, stripe))
|
await expect(stripePayments.handleWebhooks({ body, headers }, stripe))
|
||||||
@@ -220,7 +220,7 @@ describe('Stripe - Webhooks', () => {
|
|||||||
customer: customerId,
|
customer: customerId,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
request: null,
|
request: { id: null },
|
||||||
});
|
});
|
||||||
|
|
||||||
await expect(stripePayments.handleWebhooks({ body, headers }, stripe))
|
await expect(stripePayments.handleWebhooks({ body, headers }, stripe))
|
||||||
@@ -261,7 +261,7 @@ describe('Stripe - Webhooks', () => {
|
|||||||
customer: customerId,
|
customer: customerId,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
request: null,
|
request: { id: null },
|
||||||
});
|
});
|
||||||
|
|
||||||
await stripePayments.handleWebhooks({ body, headers }, stripe);
|
await stripePayments.handleWebhooks({ body, headers }, stripe);
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ export async function handleWebhooks (options, stripeInc) {
|
|||||||
try {
|
try {
|
||||||
// Verify the event by fetching it from Stripe
|
// Verify the event by fetching it from Stripe
|
||||||
event = stripeApi.webhooks.constructEvent(body, headers['stripe-signature'], endpointSecret);
|
event = stripeApi.webhooks.constructEvent(body, headers['stripe-signature'], endpointSecret);
|
||||||
|
console.log(event);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
logger.error(new Error('Error verifying Stripe webhook'), { err });
|
logger.error(new Error('Error verifying Stripe webhook'), { err });
|
||||||
throw new BadRequest(`Webhook Error: ${err.message}`);
|
throw new BadRequest(`Webhook Error: ${err.message}`);
|
||||||
@@ -80,7 +81,7 @@ export async function handleWebhooks (options, stripeInc) {
|
|||||||
case 'customer.subscription.deleted': {
|
case 'customer.subscription.deleted': {
|
||||||
// event.request !== null means that the user itself cancelled the subscrioption,
|
// event.request !== null means that the user itself cancelled the subscrioption,
|
||||||
// the cancellation on our side has been already handled
|
// the cancellation on our side has been already handled
|
||||||
if (event.request !== null) break;
|
if (event.request && event.request.id !== null) break;
|
||||||
|
|
||||||
const subscription = event.data.object;
|
const subscription = event.data.object;
|
||||||
const customerId = subscription.customer;
|
const customerId = subscription.customer;
|
||||||
|
|||||||
Reference in New Issue
Block a user