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+ } ) ;
0 commit comments