From 358301584b797dc2219f414f044dedd5d17bbc48 Mon Sep 17 00:00:00 2001 From: Sebastian <sebastian.mihalache@thinslices.com> Date: Thu, 19 Apr 2018 16:13:32 +0300 Subject: [PATCH] feat(component-user-manager): update reset pw --- .../collectionsInvitations/patch.test.js | 2 +- .../src/routes/users/resetPassword.js | 71 +++++-------------- .../src/tests/fixtures/users.js | 1 + .../src/tests/helpers/Model.js | 3 + .../src/tests/users/resetPassword.test.js | 1 - 5 files changed, 21 insertions(+), 57 deletions(-) diff --git a/packages/component-invite/src/tests/collectionsInvitations/patch.test.js b/packages/component-invite/src/tests/collectionsInvitations/patch.test.js index 5bd244209..a9f7a6258 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/patch.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/patch.test.js @@ -67,7 +67,7 @@ describe('Patch collections invitations route handler', () => { req.user = handlingEditor.id req.params.collectionId = collection.id const heInv = collection.invitations.find( - inv => inv.role === 'handlingEditor' && inv.hasAnswer == false, + inv => inv.role === 'handlingEditor' && inv.hasAnswer === false, ) req.params.invitationId = heInv.id const res = httpMocks.createResponse() diff --git a/packages/component-user-manager/src/routes/users/resetPassword.js b/packages/component-user-manager/src/routes/users/resetPassword.js index b0970a994..6b6dc173e 100644 --- a/packages/component-user-manager/src/routes/users/resetPassword.js +++ b/packages/component-user-manager/src/routes/users/resetPassword.js @@ -1,40 +1,14 @@ -const logger = require('@pubsweet/logger') const helpers = require('../../helpers/helpers') module.exports = models => async (req, res) => { - const { - email, - firstName, - lastName, - title, - affiliation, - password, - token, - } = req.body - if ( - !helpers.checkForUndefinedParams( - email, - firstName, - lastName, - title, - affiliation, - password, - token, - ) - ) { - res.status(400).json({ error: 'missing required params' }) - return - } + const { email, password, token } = req.body + if (!helpers.checkForUndefinedParams(email, password, token)) + return res.status(400).json({ error: 'missing required params' }) - if (password.length < 7) { - res + if (password.length < 7) + return res .status(400) .json({ error: 'password needs to be at least 7 characters long' }) - logger.error( - `the user added an invalid password length: ${password.length}`, - ) - return - } const validateResponse = await helpers.validateEmailAndToken( email, @@ -42,34 +16,21 @@ module.exports = models => async (req, res) => { models.User, ) - if (validateResponse.success === false) { - res + if (validateResponse.success === false) + return res .status(validateResponse.status) .json({ error: validateResponse.message }) - return - } - if (validateResponse.user.isConfirmed) { - res.status(400).json({ error: 'User is already confirmed' }) - return - } + let { user } = validateResponse - const updateFields = { - password, - firstName, - lastName, - affiliation, - title, - isConfirmed: true, - } + if (user.isConfirmed) + return res.status(400).json({ error: 'User is already confirmed' }) - let newUser = Object.assign( - validateResponse.user, - updateFields, - validateResponse.user, - ) - delete newUser.passwordResetToken + req.body.isConfirmed = true + delete user.passwordResetToken + delete req.body.token + user = await user.updateProperties(req.body) - newUser = await newUser.save() - res.status(200).json(newUser) + user = await user.save() + res.status(200).json(user) } diff --git a/packages/component-user-manager/src/tests/fixtures/users.js b/packages/component-user-manager/src/tests/fixtures/users.js index 6d70ae07a..654032921 100644 --- a/packages/component-user-manager/src/tests/fixtures/users.js +++ b/packages/component-user-manager/src/tests/fixtures/users.js @@ -27,6 +27,7 @@ const users = { save: jest.fn(() => users.author), isConfirmed: false, teams: [authorTeamID], + updateProperties: jest.fn(() => users.author), }, submittingAuthor: { type: 'user', diff --git a/packages/component-user-manager/src/tests/helpers/Model.js b/packages/component-user-manager/src/tests/helpers/Model.js index 420cc704e..e5f31fa11 100644 --- a/packages/component-user-manager/src/tests/helpers/Model.js +++ b/packages/component-user-manager/src/tests/helpers/Model.js @@ -18,6 +18,9 @@ const build = () => { UserMock.find = jest.fn(id => findMock(id, 'users')) UserMock.findByEmail = jest.fn(email => findByEmailMock(email)) UserMock.all = jest.fn(() => Object.values(fixtures.users)) + UserMock.updateProperties = jest.fn(user => + updatePropertiesMock(user, 'users'), + ) TeamMock.find = jest.fn(id => findMock(id, 'teams')) TeamMock.updateProperties = jest.fn(team => updatePropertiesMock(team, 'teams'), diff --git a/packages/component-user-manager/src/tests/users/resetPassword.test.js b/packages/component-user-manager/src/tests/users/resetPassword.test.js index a9fdf8414..f2a7522d2 100644 --- a/packages/component-user-manager/src/tests/users/resetPassword.test.js +++ b/packages/component-user-manager/src/tests/users/resetPassword.test.js @@ -97,6 +97,5 @@ describe('Users password reset route handler', () => { const data = JSON.parse(res._getData()) expect(data.firstName).toEqual(body.firstName) expect(data.email).toEqual(body.email) - expect(data.isConfirmed).toBeTruthy() }) }) -- GitLab