diff --git a/services/web/app/coffee/Features/User/UserDeleter.coffee b/services/web/app/coffee/Features/User/UserDeleter.coffee index 1dd309eac7..8dcf77b31a 100644 --- a/services/web/app/coffee/Features/User/UserDeleter.coffee +++ b/services/web/app/coffee/Features/User/UserDeleter.coffee @@ -55,7 +55,9 @@ module.exports = UserDeleter = return callback(new Error("no user supplied")) unless user? async.series([ (cb)-> - NewsletterManager.unsubscribe user, cb + NewsletterManager.unsubscribe user, (err) -> + logger.err("Failed to unsubscribe user from newsletter", user_id: user._id, error: err) + cb() (cb)-> SubscriptionHandler.cancelSubscription user, cb (cb)-> diff --git a/services/web/test/unit/coffee/User/UserDeleterTests.coffee b/services/web/test/unit/coffee/User/UserDeleterTests.coffee index 3ce09cc67b..be43d48323 100644 --- a/services/web/test/unit/coffee/User/UserDeleterTests.coffee +++ b/services/web/test/unit/coffee/User/UserDeleterTests.coffee @@ -50,7 +50,7 @@ describe "UserDeleter", -> "../Institutions/InstitutionsAPI": deleteAffiliations: @deleteAffiliations "../../infrastructure/mongojs": @mongojs - "logger-sharelatex": @logger = { log: sinon.stub() } + "logger-sharelatex": @logger = { log: sinon.stub(), err: sinon.stub() } describe "softDeleteUserForMigration", -> @@ -132,3 +132,24 @@ describe "UserDeleter", -> @UserDeleter.deleteUser @user._id, (err)=> @UserMembershipsHandler.removeUserFromAllEntities.calledWith(@user._id).should.equal true done() + + describe "when unsubscribing from mailchimp fails", -> + beforeEach -> + @NewsletterManager.unsubscribe = sinon.stub().callsArgWith(1, new Error("something went wrong")) + + it "should not return an error", (done) -> + @UserDeleter.deleteUser @user._id, (err)=> + @NewsletterManager.unsubscribe.calledWith(@user).should.equal true + should.not.exist(err) + done() + + it "should delete the user", (done) -> + @UserDeleter.deleteUser @user._id, (err)=> + @NewsletterManager.unsubscribe.calledWith(@user).should.equal true + @user.remove.called.should.equal true + done() + + it "should log an error", (done) -> + @UserDeleter.deleteUser @user._id, (err)=> + sinon.assert.called(@logger.err) + done()