Skip to content

Commit f53b887

Browse files
authored
Merge pull request #156 from Code-Hammers/CHE-199/subtask/Create-Tests-and-Error-Handling-for-userController-registerUser
[CHE-199] Create Tests and Error Handling for userController registerUser
2 parents 1666003 + 1e7096f commit f53b887

File tree

10 files changed

+312
-209
lines changed

10 files changed

+312
-209
lines changed

__tests__/userController.tests.ts

Lines changed: 0 additions & 142 deletions
This file was deleted.

server/controllers/userController.ts

Lines changed: 1 addition & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,8 @@
11
import User from '../models/userModel';
2-
import Profile from '../models/profileModel';
32
import generateToken from '../utils/generateToken';
43
import { Request, Response, NextFunction } from 'express';
54
import { UserType } from '../types/user';
6-
import GraduateInvitation from '../models/graduateInvitationModel';
75

8-
// ENDPOINT POST api/users/register
9-
// PURPOSE Register a new user
10-
// ACCESS Public
11-
const registerUser = async (req: Request, res: Response, next: NextFunction) => {
12-
const { email, password } = req.body;
13-
const { token } = req.query;
14-
15-
try {
16-
const isValidEmail = email.match(/[\w\d.]+@[a-z]+.[\w]+$/gim);
17-
if (!isValidEmail) {
18-
return res.status(400).json('Invalid Email');
19-
}
20-
21-
const invitation = await GraduateInvitation.findOne({
22-
email,
23-
token,
24-
tokenExpiry: { $gt: new Date() },
25-
isRegistered: false,
26-
});
27-
28-
//TODO Needs better error handling - this can trigger with situaions other than bad or missing token
29-
if (!invitation) {
30-
return res.status(400).json({ message: 'Invalid or expired registration token' });
31-
}
32-
const userExists: UserType | null = await User.findOne({ email });
33-
if (userExists) {
34-
return res.status(400).json({ message: 'User already exists!' });
35-
}
36-
const user: UserType = await User.create({
37-
firstName: invitation.firstName,
38-
lastName: invitation.lastName,
39-
email,
40-
password,
41-
});
42-
43-
if (user) {
44-
invitation.isRegistered = true;
45-
await invitation?.save();
46-
await Profile.create({
47-
user: user._id,
48-
firstName: invitation.firstName,
49-
lastName: invitation.lastName,
50-
cohort: invitation.cohort,
51-
});
52-
res.locals.user = {
53-
_id: user._id,
54-
firstName: user.firstName,
55-
lastName: user.lastName,
56-
email: user.email,
57-
};
58-
59-
res.cookie('token', generateToken(user._id.toString()));
60-
return res.status(201).json(res.locals.user);
61-
}
62-
} catch (error) {
63-
console.error('Error during user signup:', error);
64-
return next({
65-
log: 'Express error in createUser Middleware',
66-
status: 503,
67-
message: { err: 'An error occurred during sign-up' },
68-
});
69-
}
70-
};
716
// ENDPOINT POST api/users/login
727
// PURPOSE Authenticate User and get token
738
// ACCESS Public
@@ -165,4 +100,4 @@ const deleteUserByEmail = async (req: Request, res: Response, next: NextFunction
165100
}
166101
};
167102

168-
export { registerUser, authUser, getUserById, deleteUserByEmail };
103+
export { authUser, getUserById, deleteUserByEmail };
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import registerUser from './registerUser/registerUser';
2+
3+
export { registerUser };

0 commit comments

Comments
 (0)