1+ import { makePOSTWithTokenRequests } from "../../utils/FetchFunctionsTests/postFunctionWithToken.js" ;
2+ import { makeDELETERequestsProducts } from "../../utils/FetchFunctionsTests/deleteFunction.js" ;
3+ import { makePOSTRequests } from "../../utils/FetchFunctionsTests/postFunction.js"
4+ import { PrismaService } from "../../database/prisma/prismaService.js" ;
5+ import { describe , it , before , after } from "node:test" ;
6+ import assert from "node:assert" ;
7+
8+ const prismaService = new PrismaService ( ) ;
9+
10+ describe ( "Product Controller (deleteProduct) Tests" , ( ) => {
11+
12+ before ( async ( ) => {
13+ await prismaService . _prismaService . users . deleteMany ( ) ;
14+ } ) ;
15+
16+ after ( async ( ) => {
17+ await prismaService . _prismaService . users . deleteMany ( ) ;
18+ await prismaService . _prismaService . $disconnect ( ) ;
19+ } ) ;
20+
21+ it ( "Should be able to delete a Product, if the paramethers are ok" , async ( ) => {
22+
23+ const user = {
24+ username : "Arthur Maldonado" ,
25+ email : "ku@ez.no" ,
26+ password : "3898"
27+ }
28+
29+ const endPoint = "createUser" ;
30+ await makePOSTRequests ( endPoint , user ) ;
31+
32+ const endPoint2 = "loginUser" ;
33+ const request = {
34+ email : user . email ,
35+ password : user . password
36+ }
37+
38+ const data2 = await makePOSTRequests ( endPoint2 , request ) ;
39+
40+ const endPoint3 = "createProduct" ;
41+ const request2 = {
42+ product_name : "Smart TV" ,
43+ price : 5200.10 ,
44+ category : "TV" ,
45+ token : data2 . accessToken
46+ }
47+
48+ const data3 = await makePOSTWithTokenRequests ( endPoint3 , request2 ) ;
49+
50+ const endPoint4 = "deleteProduct" ;
51+ const request3 = {
52+ product_id : data3 . product . product_id ,
53+ token : data2 . accessToken
54+ }
55+
56+ const data4 = await makeDELETERequestsProducts ( endPoint4 , request3 ) ;
57+
58+ assert . strictEqual ( data4 . message , "Product deleted with sucess !" ) ;
59+ } ) ;
60+
61+ it ( "should not be able to delete a product, if user dosen't have or dosen't set a valid (token)" , async ( ) => {
62+
63+ const user = {
64+ username : "Sarah Sutton" ,
65+ email : "salsigve@padrot.jm" ,
66+ password : "4565"
67+ }
68+
69+ const endPoint1 = "createUser" ;
70+ await makePOSTRequests ( endPoint1 , user ) ;
71+
72+ const endPoint2 = "loginUser" ;
73+ const request = {
74+ email : user . email ,
75+ password : user . password
76+ }
77+
78+ const data2 = await makePOSTRequests ( endPoint2 , request ) ;
79+
80+ const endPoint3 = "createProduct" ;
81+ const request2 = {
82+ product_name : "Playstation 5" ,
83+ price : 5000.50 ,
84+ category : "Video game" ,
85+ token : data2 . accessToken
86+ }
87+
88+ const data3 = await makePOSTWithTokenRequests ( endPoint3 , request2 ) ;
89+
90+ const endPoint4 = "deleteProduct" ;
91+ const request3 = {
92+ product_id : data3 . product . product_id ,
93+ token : ""
94+ }
95+
96+ const data4 = await makeDELETERequestsProducts ( endPoint4 , request3 ) ;
97+
98+ assert . strictEqual ( data4 . message , "jwt must be provided" ) ;
99+ } ) ;
100+
101+ it ( "should not be able to delete a product, if the (token) is not valid or fake" , async ( ) => {
102+
103+ const user = {
104+ username : "Mabelle Cobb" ,
105+ email : "omuruzic@keficab.sv" ,
106+ password : "4676"
107+ }
108+
109+ const endPoint1 = "createUser" ;
110+ await makePOSTRequests ( endPoint1 , user ) ;
111+
112+ const endPoint2 = "loginUser" ;
113+ const request = {
114+ email : user . email ,
115+ password : user . password
116+ }
117+
118+ const data2 = await makePOSTRequests ( endPoint2 , request ) ;
119+
120+ const endPoint3 = "createProduct" ;
121+ const request2 = {
122+ product_name : "Nootebook" ,
123+ price : 7500.00 ,
124+ category : "Computer" ,
125+ token : data2 . accessToken
126+ }
127+
128+ const data3 = await makePOSTWithTokenRequests ( endPoint3 , request2 ) ;
129+
130+ const endPoint4 = "deleteProduct" ;
131+ const request3 = {
132+ product_id : data3 . product . product_id ,
133+ token : "FAKE_TOKEN"
134+ }
135+
136+ const data4 = await makeDELETERequestsProducts ( endPoint4 , request3 ) ;
137+
138+ assert . rejects ( async ( ) => {
139+ throw new TypeError ( data4 . message ) ;
140+ } , {
141+ message : "jwt malformed"
142+ } ) ;
143+
144+ } ) ;
145+
146+ it ( "should not be able to delete a product, if (token) is not valid" , async ( ) => {
147+
148+ const user = {
149+ username : "Beulah Summers" ,
150+ email : "piz@ga.cl" ,
151+ password : "4787"
152+ }
153+
154+ const endPoint1 = "createUser" ;
155+ await makePOSTRequests ( endPoint1 , user ) ;
156+
157+ const endPoint2 = "loginUser" ;
158+ const request = {
159+ email : user . email ,
160+ password : user . password
161+ }
162+
163+ const data2 = await makePOSTRequests ( endPoint2 , request ) ;
164+
165+ const endPoint3 = "createProduct" ;
166+ const request2 = {
167+ product_name : "DVD" ,
168+ price : 800.10 ,
169+ category : "Dvd" ,
170+ token : data2 . accessToken
171+ }
172+
173+ await makePOSTWithTokenRequests ( endPoint3 , request2 ) ;
174+
175+ const endPoint4 = "deleteProduct" ;
176+ const request3 = {
177+ product_id : "" ,
178+ token : process . env . INVALID_TOKEN
179+ }
180+
181+ const data4 = await makeDELETERequestsProducts ( endPoint4 , request3 ) ;
182+
183+ assert . rejects ( async ( ) => {
184+ throw new TypeError ( data4 . message ) ;
185+ } , {
186+ message : "invalid token"
187+ } ) ;
188+
189+ } ) ;
190+
191+ it ( "should not be able to delete a product, if the (token) signature is not valid" , async ( ) => {
192+
193+ const user = {
194+ username : "Jeff Ryan" ,
195+ email : "upeilpel@newufpok.ly" ,
196+ password : "2398"
197+ }
198+
199+ const endPoint1 = "createUser" ;
200+ await makePOSTRequests ( endPoint1 , user ) ;
201+
202+ const endPoint2 = "loginUser" ;
203+ const request = {
204+ email : user . email ,
205+ password : user . password
206+ }
207+
208+ const data2 = await makePOSTRequests ( endPoint2 , request ) ;
209+
210+ const endPoint3 = "createProduct" ;
211+ const request2 = {
212+ product_name : "Monitor" ,
213+ price : 1000.00 ,
214+ category : "Computer Items" ,
215+ token : data2 . accessToken
216+ }
217+
218+ const data3 = await makePOSTWithTokenRequests ( endPoint3 , request2 ) ;
219+
220+ const endPoint4 = "deleteProduct" ;
221+ const request3 = {
222+ product_id : data3 . product . product_id ,
223+ token : process . env . FAKE_TOKEN
224+ }
225+
226+ const data4 = await makeDELETERequestsProducts ( endPoint4 , request3 ) ;
227+
228+ assert . rejects ( async ( ) => {
229+ throw new TypeError ( data4 . message ) ;
230+ } , {
231+ message : "invalid signature"
232+ } ) ;
233+
234+ } ) ;
235+
236+ it ( "should not be able to delete a product, if user dosen't set a (user_id)" , async ( ) => {
237+
238+ const user = {
239+ username : "Cecilia Lawson" ,
240+ email : "gi@nifofvel.au" ,
241+ password : "3377"
242+ }
243+
244+ const endPoint1 = "createUser" ;
245+ await makePOSTRequests ( endPoint1 , user ) ;
246+
247+ const endPoint2 = "loginUser" ;
248+ const request = {
249+ email : user . email ,
250+ password : user . password
251+ }
252+
253+ const data2 = await makePOSTRequests ( endPoint2 , request ) ;
254+
255+ const endPoint3 = "createProduct" ;
256+ const request2 = {
257+ product_name : "Monitor" ,
258+ price : 1000.00 ,
259+ category : "Computer Items" ,
260+ token : data2 . accessToken
261+ }
262+
263+ await makePOSTWithTokenRequests ( endPoint3 , request2 ) ;
264+
265+ const endPoint4 = "deleteProduct" ;
266+ const request3 = {
267+ product_id : "" ,
268+ token : data2 . accessToken
269+ }
270+
271+ const data4 = await makeDELETERequestsProducts ( endPoint4 , request3 ) ;
272+
273+ assert . rejects ( async ( ) => {
274+ throw new TypeError ( data4 . message ) ;
275+ } , {
276+ message : "Product ID must have a value !"
277+ } ) ;
278+
279+ } ) ;
280+
281+ it ( "should not be able to delete a user, if user (user_id) is not valid/wrong" , async ( ) => {
282+
283+ const user = {
284+ username : "Larry Parker" ,
285+ email : "nucha@joakauk.ml" ,
286+ password : "1234"
287+ }
288+
289+ const endPoint1 = "createUser" ;
290+ await makePOSTRequests ( endPoint1 , user ) ;
291+
292+ const endPoint2 = "loginUser" ;
293+ const request = {
294+ email : user . email ,
295+ password : user . password
296+ }
297+
298+ const data2 = await makePOSTRequests ( endPoint2 , request ) ;
299+
300+ const endPoint3 = "createProduct" ;
301+ const request2 = {
302+ product_name : "Monitor" ,
303+ price : 1000.00 ,
304+ category : "Computer Items" ,
305+ token : data2 . accessToken
306+ }
307+
308+ await makePOSTWithTokenRequests ( endPoint3 , request2 ) ;
309+
310+ const endPoint4 = "deleteProduct" ;
311+ const request3 = {
312+ product_id : process . env . FAKE_USER_ID ,
313+ token : data2 . accessToken
314+ }
315+
316+ const data4 = await makeDELETERequestsProducts ( endPoint4 , request3 ) ;
317+
318+ assert . rejects ( async ( ) => {
319+ throw new TypeError ( data4 . message ) ;
320+ } , {
321+ message : "Product not found !"
322+ } ) ;
323+
324+ } ) ;
325+
326+ } ) ;
0 commit comments