From c00550d46c1747b7ebdeed1a6bab853fcbd97786 Mon Sep 17 00:00:00 2001 From: IRADUKUNDA SANGWA CEDRIC <110623461+Dawaic6@users.noreply.github.com> Date: Mon, 13 May 2024 13:00:58 +0200 Subject: [PATCH] fix issue mentioned in comment --- src/__test__/userController.test.ts | 25 +++---------------------- src/controller/userController.ts | 19 +++++-------------- src/middlewares/errorHandler.ts | 2 +- src/routes/userRoutes.ts | 5 +++-- 4 files changed, 12 insertions(+), 39 deletions(-) diff --git a/src/__test__/userController.test.ts b/src/__test__/userController.test.ts index 5d7931cf..73a254fd 100644 --- a/src/__test__/userController.test.ts +++ b/src/__test__/userController.test.ts @@ -333,8 +333,7 @@ describe('User Login Tests', () => { firstName: 'NewFirstName', lastName: 'NewLastName', email: 'newemail@example.com', - oldPassword: 'bosco@gmail.com', - newPassword: 'newPassword123', + Password: 'bosco@gmail.com', }; const response = await request(app) @@ -354,32 +353,14 @@ describe('User Login Tests', () => { expect(response.body.error).toBe('User not found'); }); - it('should return 400 when old password is incorrect', async () => { - if(user){ - const newUserData = { - firstName: 'NewFirstName', - lastName: 'NewLastName', - email: 'newemail@example.com', - oldPassword: 'wrongpin123', - newPassword: 'newPassword123', - }; - const response = await request(app) - - .put(`/api/v1/updateProfile/${user.id}`) - .send(newUserData); - expect(response.statusCode).toBe(400); - expect(response.body.error).toBe('Old password is incorrect'); - } - }); - + it('should return 400 when email is already taken', async () => { if(user){ const newUserData = { firstName: 'NewFirstName', lastName: 'NewLastName', email: 'test@gmail.com', - oldPassword: 'bosco@gmail.com', - newPassword: 'newPassword123', + Password: 'bosco@gmail.com', }; const response = await request(app) .put(`/api/v1/updateProfile/${user.id}`) diff --git a/src/controller/userController.ts b/src/controller/userController.ts index 903aab75..632e7a90 100644 --- a/src/controller/userController.ts +++ b/src/controller/userController.ts @@ -232,7 +232,7 @@ export const Login = async (req: Request, res: Response) => { export const updateProfile = async (req: Request, res: Response) => { const userId: number = parseInt(req.params.id); - const { firstName, lastName, email, oldPassword, newPassword } = req.body as UpdateRrofileRequestBody; + const { firstName, lastName, email } = req.body as UpdateRrofileRequestBody; try { @@ -241,12 +241,7 @@ try { if (!user) { return res.status(404).json({ error: 'User not found' }); } - const passwordMatch = await bcrypt.compare(oldPassword, user.password); - - if (!passwordMatch) { - return res.status(400).json({ error: 'Old password is incorrect' }); - } - user.firstName = firstName || user.firstName; + user.firstName = firstName || user.firstName; user.lastName = lastName || user.lastName; if (email && email !== user.email) { const emailExists = await userRepository.findOne({ where: { email } }); @@ -257,10 +252,6 @@ try { user.email = email; } -if (newPassword) { - const hashedPassword = await bcrypt.hash(newPassword, 10); - user.password = hashedPassword; -} const errors = await validate(user); @@ -271,7 +262,7 @@ await userRepository.save(user); return res.status(201).json({ message: 'User updated successfully' }); } catch (error) { -return res.status(500).json({ error: 'Internal server error'}); + res.status(500).send(error); } }; export const verify2FA = async (req: Request, res: Response): Promise => { @@ -279,7 +270,7 @@ export const verify2FA = async (req: Request, res: Response): Promise => { const { code } = req.body; const { userId } = req.params; - // Use the repository to find the user by their id + const user = await userRepository.findOne({ where: { id: Number(userId) } }); if (!user) { @@ -298,6 +289,6 @@ export const verify2FA = async (req: Request, res: Response): Promise => { res.status(200).json({ token }); } catch (error) { - res.status(500).json({ error: (error as Error).message }); + res.status(500).send(error); } }; \ No newline at end of file diff --git a/src/middlewares/errorHandler.ts b/src/middlewares/errorHandler.ts index 9837635f..576d70ce 100644 --- a/src/middlewares/errorHandler.ts +++ b/src/middlewares/errorHandler.ts @@ -6,7 +6,7 @@ function errorHandler(func: MiddlewareFunction) { return async (req: Request, res: Response, next: NextFunction) => { try { await func(req, res, next); - } catch (error) { // Removed the type annotation from the catch clause variable because it caused liting errors + } catch (error:any) { // Removed the type annotation from the catch clause variable because it caused liting errors const message = error.detail || 'Internal Server Error'; res.status(500).send(message); } diff --git a/src/routes/userRoutes.ts b/src/routes/userRoutes.ts index a718f882..353bf33b 100644 --- a/src/routes/userRoutes.ts +++ b/src/routes/userRoutes.ts @@ -1,4 +1,5 @@ import { Router } from 'express'; +import errorHandler from'../middlewares/errorHandler' import { registerUser, confirmEmail, @@ -18,8 +19,8 @@ route.delete('/delete/:id', deleteUser); route.delete('/deleteAllUsers', deleteAllUsers); route.post('/login',Login) route.get('/all-users', getAllUsers); -route.post('/verify2FA/:userId', verify2FA); +route.post('/verify2FA/:userId',errorHandler ,verify2FA); -route.put('/updateProfile/:id',updateProfile); +route.put('/updateProfile/:id',errorHandler,updateProfile); export default route;