Merge pull request #2761 from overleaf/jpa-user-controller-bail-out-next

[UserController] updateUserSettings: bail out after calling next(err)

GitOrigin-RevId: f1905c0c54f3feb98836443cbf8e080888d4901c
This commit is contained in:
Eric Mc Sween 2020-04-23 07:52:36 -04:00 committed by Copybot
parent bf952e134f
commit d8615ddba3
2 changed files with 20 additions and 1 deletions

View file

@ -248,7 +248,7 @@ const UserController = {
errorData.info.public.message = req.i18n.translate(
'problem_changing_email_address'
)
next(
return next(
new HttpErrors.InternalServerError(errorData).withCause(err)
)
}

View file

@ -405,6 +405,25 @@ describe('UserController', function() {
this.UserController.updateUserSettings(this.req, this.res)
})
describe('when changeEmailAddress yields an error', function() {
it('should pass on an error and not send a success status', function(done) {
this.req.body.email = this.newEmail.toUpperCase()
this.UserUpdater.changeEmailAddress.callsArgWith(2, new Error())
const next = err => {
expect(err).to.exist
process.nextTick(() => {
// logic in User.findById
expect(this.res.send.called).to.equal(false)
expect(this.res.sendStatus.called).to.equal(false)
// logic after error handling
expect(this.User.findById.callCount).to.equal(1)
done()
})
}
this.UserController.updateUserSettings(this.req, this.res, next)
})
})
describe('when using an external auth source', function() {
beforeEach(function() {
this.UserUpdater.changeEmailAddress.callsArgWith(2)