Skip to content

Commit 103bbc1

Browse files
authored
Feat: Tests userController updateUser (#13)
1 parent 708de24 commit 103bbc1

3 files changed

Lines changed: 320 additions & 1 deletion

File tree

.env.example

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ DATABASE_URL_TESTS="postgresql://POSTGRES_USER_DOCKER2:POSTGRES_PASSWORD_DOCKER2
44

55
#Setup Databases Containers for Prisma Containers inside docker
66
DATABASE_URL_DOCKER="postgresql://POSTGRES_USER_DOCKER:POSTGRES_PASSWORD_DOCKER@POSTGRES_HOST_DOCKER:5432/POSTGRES_DATABASE_DOCKER?schema=public"
7-
DATABASE_URL_DOCKER2="postgresql://POSTGRES_USER_DOCKER2:prisPOSTGRES_PASSWORD_DOCKER2ma2@POSTGRES_HOST_DOCKER:5432/POSTGRES_DATABASE_DOCKER2?schema=public"
7+
DATABASE_URL_DOCKER2="postgresql://POSTGRES_USER_DOCKER2:POSTGRES_PASSWORD_DOCKER2@POSTGRES_HOST_DOCKER2:5432/POSTGRES_DATABASE_DOCKER2?schema=public"
88

99
POSTGRES_USER_DOCKER=
1010
POSTGRES_PASSWORD_DOCKER=
Lines changed: 300 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,300 @@
1+
import { makePOSTRequests } from "../../utils/FetchFunctionsTests/postFunction.js";
2+
import { makePATCHRequests } from "../../utils/FetchFunctionsTests/patchFunction.js";
3+
import { PrismaServiceTests } from "../in-memory-app/database/prismaServiceTests.js"
4+
import { describe, it, before, after } from "node:test";
5+
import assert from "node:assert";
6+
7+
const prismaService = new PrismaServiceTests();
8+
9+
describe("UserController (updateUser) Tests", () => {
10+
11+
before(async () => {
12+
await prismaService._prismaServiceTests.users_Tests.deleteMany();
13+
});
14+
15+
after(async () => {
16+
await prismaService._prismaServiceTests.users_Tests.deleteMany();
17+
});
18+
19+
it("should be able to update a user, if the paramethers are ok", async () => {
20+
21+
const user = {
22+
username: "Herman Tyler",
23+
email: "neragawi@pisseb.hk",
24+
password: "7733"
25+
}
26+
27+
const endPoint1 = "createUser";
28+
await makePOSTRequests(endPoint1, user);
29+
30+
const endPoint2 = "loginUser";
31+
const request = {
32+
email: user.email,
33+
password: user.password
34+
}
35+
36+
const data2 = await makePOSTRequests(endPoint2, request);
37+
38+
const endPoint3 = "updateUser";
39+
const request2 = {
40+
user_id: data2.user.user_id,
41+
username: "Herman Tylerr",
42+
token: data2.accessToken
43+
}
44+
45+
const data3 = await makePATCHRequests(endPoint3, request2);
46+
47+
assert.ok("user_id" in data3.user);
48+
assert.strictEqual(data3.user.username, "Herman Tylerr");
49+
assert.equal(data3.user.email, user.email);
50+
assert.ok(data3.user.hasOwnProperty("createdAt"));
51+
});
52+
53+
it("should not be able to Update a user, if user dosen't have or dosen't set a valid (token)", async () => {
54+
55+
const user = {
56+
username: "Lloyd Robinson",
57+
email: "jeclezan@vu.fk",
58+
password: "5577"
59+
}
60+
61+
const endPoint1 = "createUser";
62+
await makePOSTRequests(endPoint1, user);
63+
64+
const endPoint2 = "loginUser";
65+
const request = {
66+
email: user.email,
67+
password: user.password
68+
}
69+
70+
const data2 = await makePOSTRequests(endPoint2, request);
71+
72+
const endPoint3 = "updateUser";
73+
const request2 = {
74+
user_id: data2.user.user_id,
75+
username: "Lloyd Robinsonnme",
76+
token: ""
77+
}
78+
79+
const data3 = await makePATCHRequests(endPoint3, request2);
80+
81+
assert.strictEqual(data3.message, "jwt must be provided");
82+
});
83+
84+
it("should not be able to Update a user, if the (token) is not valid or fake", async () => {
85+
86+
const user = {
87+
username: "Terry Fisher",
88+
email: "hif@gij.tw",
89+
password: "6688"
90+
}
91+
92+
const endPoint1 = "createUser";
93+
await makePOSTRequests(endPoint1, user);
94+
95+
const endPoint2 = "loginUser";
96+
const request = {
97+
email: user.email,
98+
password: user.password
99+
}
100+
101+
const data2 = await makePOSTRequests(endPoint2, request);
102+
103+
const endPoint3 = "updateUser";
104+
const request2 = {
105+
user_id: data2.user.user_id,
106+
username: "Terry Fishner",
107+
token: "FAKE_TOKEN"
108+
}
109+
110+
const data3 = await makePATCHRequests(endPoint3, request2);
111+
112+
assert.rejects(async () => {
113+
throw new TypeError(data3.message);
114+
}, {
115+
message: "jwt malformed"
116+
});
117+
118+
});
119+
120+
it("should not be able to Update a user, if (token) is not valid", async () => {
121+
122+
const user = {
123+
username: "Noah Williamson",
124+
email: "suit@zizeaka.fr",
125+
password: "8811"
126+
}
127+
128+
const endPoint1 = "createUser";
129+
await makePOSTRequests(endPoint1, user);
130+
131+
const endPoint2 = "loginUser";
132+
const request = {
133+
email: user.email,
134+
password: user.password
135+
}
136+
137+
const data2 = await makePOSTRequests(endPoint2, request);
138+
139+
const endPoint3 = "updateUser";
140+
const request2 = {
141+
user_id: data2.user.user_id,
142+
username: "Noah Fisher",
143+
token: process.env.INVALID_TOKEN
144+
}
145+
146+
const data3 = await makePATCHRequests(endPoint3, request2);
147+
148+
assert.rejects(async () => {
149+
throw new TypeError(data3.message);
150+
}, {
151+
message: "invalid token"
152+
});
153+
154+
});
155+
156+
it("should not be able to Update a user, if the (token) signature is not valid", async () => {
157+
158+
const user = {
159+
username: "Brandon Howell",
160+
email: "ec@zojki.tg",
161+
password: "4477"
162+
}
163+
164+
const endPoint1 = "createUser";
165+
await makePOSTRequests(endPoint1, user);
166+
167+
const endPoint2 = "loginUser";
168+
const request = {
169+
email: user.email,
170+
password: user.password
171+
}
172+
173+
const data2 = await makePOSTRequests(endPoint2, request);
174+
175+
const endPoint3 = "updateUser";
176+
const request2 = {
177+
user_id: data2.user.user_id,
178+
username: "Brandon",
179+
token: process.env.FAKE_TOKEN
180+
}
181+
182+
const data3 = await makePATCHRequests(endPoint3, request2);
183+
184+
assert.rejects(async () => {
185+
throw new TypeError(data3.message);
186+
}, {
187+
message: "invalid signature"
188+
});
189+
190+
});
191+
192+
it("should not be able to Update a user, if user dosen't set a (user_id)", async () => {
193+
194+
const user = {
195+
username: "Don Saunders",
196+
email: "pe@okezafko.gb",
197+
password: "3377"
198+
}
199+
200+
const endPoint1 = "createUser";
201+
await makePOSTRequests(endPoint1, user);
202+
203+
const endPoint2 = "loginUser";
204+
const request = {
205+
email: user.email,
206+
password: user.password
207+
}
208+
209+
const data2 = await makePOSTRequests(endPoint2, request);
210+
211+
const endPoint3 = "updateUser";
212+
const request2 = {
213+
user_id: "",
214+
username: "Don Cornelius",
215+
token: data2.accessToken
216+
}
217+
218+
const data3 = await makePATCHRequests(endPoint3, request2);
219+
220+
assert.rejects(async () => {
221+
throw new TypeError(data3.message);
222+
}, {
223+
message: "All data must have a value !"
224+
});
225+
226+
});
227+
228+
it("should not be able to Update a user, if user dosen't set a (username)", async () => {
229+
230+
const user = {
231+
username: "Sam Jimenez",
232+
email: "hezes@gomu.af",
233+
password: "4466"
234+
}
235+
236+
const endPoint1 = "createUser";
237+
await makePOSTRequests(endPoint1, user);
238+
239+
const endPoint2 = "loginUser";
240+
const request = {
241+
email: user.email,
242+
password: user.password
243+
}
244+
245+
const data2 = await makePOSTRequests(endPoint2, request);
246+
247+
const endPoint3 = "updateUser";
248+
const request2 = {
249+
user_id: data2.user.user_id,
250+
username: "",
251+
token: data2.accessToken
252+
}
253+
254+
const data3 = await makePATCHRequests(endPoint3, request2);
255+
256+
assert.rejects(async () => {
257+
throw new TypeError(data3.message);
258+
}, {
259+
message: "All data must have a value !"
260+
});
261+
262+
});
263+
264+
it("should not be able to Update a user, if (user_id) is not valid/wrong", async () => {
265+
266+
const user = {
267+
username: "Martha Hubbard",
268+
email: "fe@maf.ck",
269+
password: "9988"
270+
}
271+
272+
const endPoint1 = "createUser";
273+
await makePOSTRequests(endPoint1, user);
274+
275+
const endPoint2 = "loginUser";
276+
const request = {
277+
email: user.email,
278+
password: user.password
279+
}
280+
281+
const data2 = await makePOSTRequests(endPoint2, request);
282+
283+
const endPoint3 = "updateUser";
284+
const request2 = {
285+
user_id: process.env.FAKE_USER_ID,
286+
username: "Martha",
287+
token: data2.accessToken
288+
}
289+
290+
const data3 = await makePATCHRequests(endPoint3, request2);
291+
292+
assert.rejects(async () => {
293+
throw new TypeError(data3.message);
294+
}, {
295+
message: "User not found !"
296+
});
297+
298+
});
299+
300+
});
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const host = process.env.HOST;
2+
const port = process.env.TESTS_PORT;
3+
4+
export async function makePATCHRequests(endPoint, data) {
5+
6+
const request = await fetch(`http://${host}:${port}/${endPoint}/${data.user_id}`, {
7+
method: "PATCH",
8+
body: JSON.stringify({ username: data.username }),
9+
headers: {
10+
Authorization: `Bearer ${data.token}`
11+
},
12+
13+
}).then(async (response) => {
14+
const resp = await new Promise(resolve => resolve(response.json()));
15+
return resp;
16+
});
17+
18+
return request;
19+
};

0 commit comments

Comments
 (0)