Skip to content

Commit 91efa33

Browse files
authored
Feat: userController deleteUser tests and refacts (#15)
1 parent fe1175c commit 91efa33

5 files changed

Lines changed: 287 additions & 10 deletions

File tree

src/models/userModel.js

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,15 @@ export class UserModelRepository {
1616
}
1717

1818
async createUserToken(user_id) {
19-
await this._database._prismaService.userTokens.create({
20-
data: {
21-
user_id: user_id
22-
}
23-
});
19+
20+
try {
21+
await this._database._prismaService.userTokens.create({
22+
data: {
23+
user_id: user_id
24+
}
25+
});
26+
}catch(error) {}
27+
2428
}
2529

2630
async updateUser(user_id, username) {

src/services/userService.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,16 @@ export class UserService {
2828
return createuser;
2929
}
3030

31-
async loginUser(datas) {
31+
async loginUser(user) {
3232

33-
const acessToken = sign({ datas }, process.env.SECRET, {
34-
subject: datas.user_id,
33+
const acessToken = sign({ user }, process.env.SECRET, {
34+
subject: user.user_id,
3535
audience: "users",
3636
issuer: "ADMIN",
3737
expiresIn: process.env.EXPIRES_IN
3838
});
3939

40-
await this._userRepository.createUserToken(datas.user_id);
40+
await this._userRepository.createUserToken(user.user_id);
4141

4242
return acessToken;
4343
}
Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
import { makeDELETERequests } from "../../utils/FetchFunctionsTests/deleteFunction.js";
2+
import { makePOSTRequests } from "../../utils/FetchFunctionsTests/postFunction.js";
3+
import { PrismaService } from "../../database/prisma/prismaService.js";
4+
import { describe, it, before, after } from "node:test";
5+
import assert from "node:assert";
6+
7+
const prismaService = new PrismaService();
8+
9+
describe("UserController (deleteUser) Tests", () => {
10+
11+
before(async () => {
12+
await prismaService._prismaService.users.deleteMany();
13+
});
14+
15+
after(async () => {
16+
await prismaService._prismaService.users.deleteMany();
17+
await prismaService._prismaService.$disconnect();
18+
});
19+
20+
it("should be able to delete a user, if the paramethers are ok", async () => {
21+
22+
const user = {
23+
username: "Luella Reese",
24+
email: "op@ba.ao@pisseb.hk",
25+
password: "4499"
26+
}
27+
28+
const endPoint1 = "createUser";
29+
await makePOSTRequests(endPoint1, user);
30+
31+
const endPoint2 = "loginUser";
32+
const request = {
33+
email: user.email,
34+
password: user.password
35+
}
36+
37+
const data2 = await makePOSTRequests(endPoint2, request);
38+
39+
const endPoint3 = "deleteUser";
40+
const request2 = {
41+
user_id: data2.user.user_id,
42+
token: data2.accessToken
43+
}
44+
45+
const data3 = await makeDELETERequests(endPoint3, request2);
46+
47+
assert.strictEqual(data3.message, "User deleted with sucess !");
48+
});
49+
50+
it("should not be able to Delete a user, if user dosen't have or dosen't set a valid (token)", async () => {
51+
52+
const user = {
53+
username: "Melvin Logan",
54+
email: "faozeto@su.so",
55+
password: "5577"
56+
}
57+
58+
const endPoint1 = "createUser";
59+
await makePOSTRequests(endPoint1, user);
60+
61+
const endPoint2 = "loginUser";
62+
const request = {
63+
email: user.email,
64+
password: user.password
65+
}
66+
67+
const data2 = await makePOSTRequests(endPoint2, request);
68+
69+
const endPoint3 = "deleteUser";
70+
const request2 = {
71+
user_id: data2.user.user_id,
72+
token: ""
73+
}
74+
75+
const data3 = await makeDELETERequests(endPoint3, request2);
76+
77+
assert.strictEqual(data3.message, "jwt must be provided");
78+
});
79+
80+
it("should not be able to Delete a user, if the (token) is not valid or fake", async () => {
81+
82+
const user = {
83+
username: "Samuel Gomez",
84+
email: "fowzepe@li.km",
85+
password: "6688"
86+
}
87+
88+
const endPoint1 = "createUser";
89+
await makePOSTRequests(endPoint1, user);
90+
91+
const endPoint2 = "loginUser";
92+
const request = {
93+
email: user.email,
94+
password: user.password
95+
}
96+
97+
const data2 = await makePOSTRequests(endPoint2, request);
98+
99+
const endPoint3 = "deleteUser";
100+
const request2 = {
101+
user_id: data2.user.user_id,
102+
token: "FAKE_TOKEN"
103+
}
104+
105+
const data3 = await makeDELETERequests(endPoint3, request2);
106+
107+
assert.rejects(async () => {
108+
throw new TypeError(data3.message);
109+
}, {
110+
message: "jwt malformed"
111+
});
112+
113+
});
114+
115+
it("should not be able to Delete a user, if (token) is not valid", async () => {
116+
117+
const user = {
118+
username: "Mollie Miller",
119+
email: "menfa@hiubo.cm",
120+
password: "7733"
121+
}
122+
123+
const endPoint1 = "createUser";
124+
await makePOSTRequests(endPoint1, user);
125+
126+
const endPoint2 = "loginUser";
127+
const request = {
128+
email: user.email,
129+
password: user.password
130+
}
131+
132+
const data2 = await makePOSTRequests(endPoint2, request);
133+
134+
const endPoint3 = "deleteUser";
135+
const request2 = {
136+
user_id: data2.user.user_id,
137+
token: process.env.INVALID_TOKEN
138+
}
139+
140+
const data3 = await makeDELETERequests(endPoint3, request2);
141+
142+
assert.rejects(async () => {
143+
throw new TypeError(data3.message);
144+
}, {
145+
message: "invalid token"
146+
});
147+
148+
});
149+
150+
it("should not be able to DeletUser a user, if the (token) signature is not valid", async () => {
151+
152+
const user = {
153+
username: "Abbie Bailey",
154+
email: "ojogu@joutowuh.dj",
155+
password: "2277"
156+
}
157+
158+
const endPoint1 = "createUser";
159+
await makePOSTRequests(endPoint1, user);
160+
161+
const endPoint2 = "loginUser";
162+
const request = {
163+
email: user.email,
164+
password: user.password
165+
}
166+
167+
const data2 = await makePOSTRequests(endPoint2, request);
168+
169+
const endPoint3 = "deleteUser";
170+
const request2 = {
171+
user_id: data2.user.user_id,
172+
token: process.env.FAKE_TOKEN
173+
}
174+
175+
const data3 = await makeDELETERequests(endPoint3, request2);
176+
177+
assert.rejects(async () => {
178+
throw new TypeError(data3.message);
179+
}, {
180+
message: "invalid signature"
181+
});
182+
183+
});
184+
185+
it("should not be able to Update a user, if user dosen't set a (user_id)", async () => {
186+
187+
const user = {
188+
username: "Lewis Gibson",
189+
email: "to@za.mu",
190+
password: "4554"
191+
}
192+
193+
const endPoint1 = "createUser";
194+
await makePOSTRequests(endPoint1, user);
195+
196+
const endPoint2 = "loginUser";
197+
const request = {
198+
email: user.email,
199+
password: user.password
200+
}
201+
202+
const data2 = await makePOSTRequests(endPoint2, request);
203+
204+
const endPoint3 = "deleteUser";
205+
const request2 = {
206+
user_id: "",
207+
token: data2.accessToken
208+
}
209+
210+
const data3 = await makeDELETERequests(endPoint3, request2);
211+
212+
assert.rejects(async () => {
213+
throw new TypeError(data3.message);
214+
}, {
215+
message: "User id must have a value !"
216+
});
217+
218+
});
219+
220+
it("should not be able to DeleteUser a user, if (user_id) is not valid/wrong", async () => {
221+
222+
const user = {
223+
username: "Lois Carlson",
224+
email: "po@bod.tv",
225+
password: "9988"
226+
}
227+
228+
const endPoint1 = "createUser";
229+
await makePOSTRequests(endPoint1, user);
230+
231+
const endPoint2 = "loginUser";
232+
const request = {
233+
email: user.email,
234+
password: user.password
235+
}
236+
237+
const data2 = await makePOSTRequests(endPoint2, request);
238+
239+
const endPoint3 = "deleteUser";
240+
const request2 = {
241+
user_id: process.env.FAKE_USER_ID,
242+
token: data2.accessToken
243+
}
244+
245+
const data3 = await makeDELETERequests(endPoint3, request2);
246+
247+
assert.rejects(async () => {
248+
throw new TypeError(data3.message);
249+
}, {
250+
message: "User not found !"
251+
});
252+
253+
});
254+
255+
});

src/tests/users/userControllerListUser.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ describe("UserController (listUser) Tests", () => {
4444

4545
const data3 = await makeGETRequests(endPoint3, request2);
4646

47-
assert.ok(data2.user.hasOwnProperty("user_id"));
47+
assert.ok(data3.user.hasOwnProperty("user_id"));
4848
assert.equal(data3.user.username, user.username);
4949
assert.equal(data3.user.email, user.email);
5050
assert.ok(data3.user.hasOwnProperty("createdAt"));
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
const host = process.env.HOST;
2+
const port = process.env.PORT;
3+
4+
export async function makeDELETERequests(endPoint, data) {
5+
6+
const request = await fetch(`http://${host}:${port}/${endPoint}/${data.user_id}`, {
7+
method: "DELETE",
8+
headers: {
9+
Authorization: `Bearer ${data.token}`
10+
}
11+
12+
}).then(async (response) => {
13+
const resp = await new Promise(resolve => resolve(response.json()));
14+
return resp;
15+
});
16+
17+
return request;
18+
}

0 commit comments

Comments
 (0)