diff --git a/test/api/unit/libs/payments/google.test.js b/test/api/unit/libs/payments/google.test.js index 266abf04b3..33aabc8cfa 100644 --- a/test/api/unit/libs/payments/google.test.js +++ b/test/api/unit/libs/payments/google.test.js @@ -256,7 +256,7 @@ describe('Google Payments', () => { expirationDate, }); iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData') - .returns([{ expirationDate: expirationDate.toDate() }]); + .returns([{ expirationDate: expirationDate.toDate(), autoRenewig: false }]); iapIsValidatedStub = sinon.stub(iap, 'isValidated') .returns(true); @@ -325,5 +325,25 @@ describe('Google Payments', () => { headers, }); }); + + it('should not cancel a user subscription with autorenew', async () => { + iapGetPurchaseDataStub = sinon.stub(iap, 'getPurchaseData') + .returns([{ autoRenewig: true }]); + await googlePayments.cancelSubscribe(user, headers); + + expect(iapSetupStub).to.be.calledOnce; + expect(iapValidateStub).to.be.calledOnce; + expect(iapValidateStub).to.be.calledWith(iap.GOOGLE, { + data: receipt, + signature, + }); + expect(iapIsValidatedStub).to.be.calledOnce; + expect(iapIsValidatedStub).to.be.calledWith({ + expirationDate, + }); + expect(iapGetPurchaseDataStub).to.be.calledOnce; + + expect(paymentCancelSubscriptionSpy).to.not.be.called; + }); }); }); diff --git a/website/server/libs/payments/google.js b/website/server/libs/payments/google.js index b6c734cf55..95057dad41 100644 --- a/website/server/libs/payments/google.js +++ b/website/server/libs/payments/google.js @@ -246,7 +246,7 @@ api.cancelSubscribe = async function cancelSubscribe (user, headers) { if (purchases.length === 0) throw new NotAuthorized(this.constants.RESPONSE_INVALID_RECEIPT); const subscriptionData = purchases[0]; // Check to make sure the sub isn't active anymore. - if (subscriptionData.autoRenews) return; + if (subscriptionData.autoRenewing === false) return; dateTerminated = new Date(Number(subscriptionData.expirationDate)); } catch (err) {