]>
Commit | Line | Data |
---|---|---|
57f6896f C |
1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ |
2 | ||
3 | import 'mocha' | |
4 | import { AbuseCreate, AbuseState } from '@shared/models' | |
5 | import { | |
6 | cleanupTests, | |
7 | createUser, | |
8 | deleteAbuse, | |
9 | flushAndRunServer, | |
10 | makeGetRequest, | |
11 | makePostBodyRequest, | |
12 | ServerInfo, | |
13 | setAccessTokensToServers, | |
14 | updateAbuse, | |
15 | uploadVideo, | |
edbc9325 C |
16 | userLogin, |
17 | generateUserAccessToken, | |
18 | addAbuseMessage, | |
19 | listAbuseMessages, | |
20 | deleteAbuseMessage | |
57f6896f C |
21 | } from '../../../../shared/extra-utils' |
22 | import { | |
23 | checkBadCountPagination, | |
24 | checkBadSortPagination, | |
25 | checkBadStartPagination | |
26 | } from '../../../../shared/extra-utils/requests/check-api-params' | |
27 | ||
310b5219 | 28 | describe('Test abuses API validators', function () { |
57f6896f C |
29 | const basePath = '/api/v1/abuses/' |
30 | ||
31 | let server: ServerInfo | |
32 | let userAccessToken = '' | |
edbc9325 | 33 | let userAccessToken2 = '' |
57f6896f | 34 | let abuseId: number |
edbc9325 | 35 | let messageId: number |
57f6896f C |
36 | |
37 | // --------------------------------------------------------------- | |
38 | ||
39 | before(async function () { | |
40 | this.timeout(30000) | |
41 | ||
42 | server = await flushAndRunServer(1) | |
43 | ||
44 | await setAccessTokensToServers([ server ]) | |
45 | ||
46 | const username = 'user1' | |
47 | const password = 'my super password' | |
48 | await createUser({ url: server.url, accessToken: server.accessToken, username: username, password: password }) | |
49 | userAccessToken = await userLogin(server, { username, password }) | |
50 | ||
edbc9325 C |
51 | { |
52 | userAccessToken2 = await generateUserAccessToken(server, 'user_2') | |
53 | } | |
54 | ||
57f6896f C |
55 | const res = await uploadVideo(server.url, server.accessToken, {}) |
56 | server.video = res.body.video | |
57 | }) | |
58 | ||
edbc9325 | 59 | describe('When listing abuses for admins', function () { |
57f6896f C |
60 | const path = basePath |
61 | ||
62 | it('Should fail with a bad start pagination', async function () { | |
63 | await checkBadStartPagination(server.url, path, server.accessToken) | |
64 | }) | |
65 | ||
66 | it('Should fail with a bad count pagination', async function () { | |
67 | await checkBadCountPagination(server.url, path, server.accessToken) | |
68 | }) | |
69 | ||
70 | it('Should fail with an incorrect sort', async function () { | |
71 | await checkBadSortPagination(server.url, path, server.accessToken) | |
72 | }) | |
73 | ||
74 | it('Should fail with a non authenticated user', async function () { | |
75 | await makeGetRequest({ | |
76 | url: server.url, | |
77 | path, | |
78 | statusCodeExpected: 401 | |
79 | }) | |
80 | }) | |
81 | ||
82 | it('Should fail with a non admin user', async function () { | |
83 | await makeGetRequest({ | |
84 | url: server.url, | |
85 | path, | |
86 | token: userAccessToken, | |
87 | statusCodeExpected: 403 | |
88 | }) | |
89 | }) | |
90 | ||
91 | it('Should fail with a bad id filter', async function () { | |
92 | await makeGetRequest({ url: server.url, path, token: server.accessToken, query: { id: 'toto' } }) | |
93 | }) | |
94 | ||
95 | it('Should fail with a bad filter', async function () { | |
96 | await makeGetRequest({ url: server.url, path, token: server.accessToken, query: { filter: 'toto' } }) | |
97 | await makeGetRequest({ url: server.url, path, token: server.accessToken, query: { filter: 'videos' } }) | |
98 | }) | |
99 | ||
100 | it('Should fail with bad predefined reason', async function () { | |
101 | await makeGetRequest({ url: server.url, path, token: server.accessToken, query: { predefinedReason: 'violentOrRepulsives' } }) | |
102 | }) | |
103 | ||
104 | it('Should fail with a bad state filter', async function () { | |
105 | await makeGetRequest({ url: server.url, path, token: server.accessToken, query: { state: 'toto' } }) | |
106 | await makeGetRequest({ url: server.url, path, token: server.accessToken, query: { state: 0 } }) | |
107 | }) | |
108 | ||
109 | it('Should fail with a bad videoIs filter', async function () { | |
110 | await makeGetRequest({ url: server.url, path, token: server.accessToken, query: { videoIs: 'toto' } }) | |
111 | }) | |
112 | ||
113 | it('Should succeed with the correct params', async function () { | |
114 | const query = { | |
115 | id: 13, | |
116 | predefinedReason: 'violentOrRepulsive', | |
117 | filter: 'comment', | |
118 | state: 2, | |
119 | videoIs: 'deleted' | |
120 | } | |
121 | ||
122 | await makeGetRequest({ url: server.url, path, token: server.accessToken, query, statusCodeExpected: 200 }) | |
123 | }) | |
124 | }) | |
125 | ||
edbc9325 C |
126 | describe('When listing abuses for users', function () { |
127 | const path = '/api/v1/users/me/abuses' | |
128 | ||
129 | it('Should fail with a bad start pagination', async function () { | |
130 | await checkBadStartPagination(server.url, path, userAccessToken) | |
131 | }) | |
132 | ||
133 | it('Should fail with a bad count pagination', async function () { | |
134 | await checkBadCountPagination(server.url, path, userAccessToken) | |
135 | }) | |
136 | ||
137 | it('Should fail with an incorrect sort', async function () { | |
138 | await checkBadSortPagination(server.url, path, userAccessToken) | |
139 | }) | |
140 | ||
141 | it('Should fail with a non authenticated user', async function () { | |
142 | await makeGetRequest({ | |
143 | url: server.url, | |
144 | path, | |
145 | statusCodeExpected: 401 | |
146 | }) | |
147 | }) | |
148 | ||
149 | it('Should fail with a bad id filter', async function () { | |
150 | await makeGetRequest({ url: server.url, path, token: userAccessToken, query: { id: 'toto' } }) | |
151 | }) | |
152 | ||
153 | it('Should fail with a bad state filter', async function () { | |
154 | await makeGetRequest({ url: server.url, path, token: userAccessToken, query: { state: 'toto' } }) | |
155 | await makeGetRequest({ url: server.url, path, token: userAccessToken, query: { state: 0 } }) | |
156 | }) | |
157 | ||
158 | it('Should succeed with the correct params', async function () { | |
159 | const query = { | |
160 | id: 13, | |
161 | state: 2 | |
162 | } | |
163 | ||
164 | await makeGetRequest({ url: server.url, path, token: userAccessToken, query, statusCodeExpected: 200 }) | |
165 | }) | |
166 | }) | |
167 | ||
57f6896f C |
168 | describe('When reporting an abuse', function () { |
169 | const path = basePath | |
170 | ||
171 | it('Should fail with nothing', async function () { | |
172 | const fields = {} | |
edbc9325 | 173 | await makePostBodyRequest({ url: server.url, path, token: userAccessToken, fields }) |
57f6896f C |
174 | }) |
175 | ||
176 | it('Should fail with a wrong video', async function () { | |
177 | const fields = { video: { id: 'blabla' }, reason: 'my super reason' } | |
edbc9325 | 178 | await makePostBodyRequest({ url: server.url, path: path, token: userAccessToken, fields }) |
57f6896f C |
179 | }) |
180 | ||
181 | it('Should fail with an unknown video', async function () { | |
182 | const fields = { video: { id: 42 }, reason: 'my super reason' } | |
edbc9325 | 183 | await makePostBodyRequest({ url: server.url, path: path, token: userAccessToken, fields, statusCodeExpected: 404 }) |
57f6896f C |
184 | }) |
185 | ||
186 | it('Should fail with a wrong comment', async function () { | |
187 | const fields = { comment: { id: 'blabla' }, reason: 'my super reason' } | |
edbc9325 | 188 | await makePostBodyRequest({ url: server.url, path: path, token: userAccessToken, fields }) |
57f6896f C |
189 | }) |
190 | ||
191 | it('Should fail with an unknown comment', async function () { | |
192 | const fields = { comment: { id: 42 }, reason: 'my super reason' } | |
edbc9325 | 193 | await makePostBodyRequest({ url: server.url, path: path, token: userAccessToken, fields, statusCodeExpected: 404 }) |
57f6896f C |
194 | }) |
195 | ||
196 | it('Should fail with a wrong account', async function () { | |
197 | const fields = { account: { id: 'blabla' }, reason: 'my super reason' } | |
edbc9325 | 198 | await makePostBodyRequest({ url: server.url, path: path, token: userAccessToken, fields }) |
57f6896f C |
199 | }) |
200 | ||
201 | it('Should fail with an unknown account', async function () { | |
202 | const fields = { account: { id: 42 }, reason: 'my super reason' } | |
edbc9325 | 203 | await makePostBodyRequest({ url: server.url, path: path, token: userAccessToken, fields, statusCodeExpected: 404 }) |
57f6896f C |
204 | }) |
205 | ||
206 | it('Should fail with not account, comment or video', async function () { | |
207 | const fields = { reason: 'my super reason' } | |
edbc9325 | 208 | await makePostBodyRequest({ url: server.url, path: path, token: userAccessToken, fields, statusCodeExpected: 400 }) |
57f6896f C |
209 | }) |
210 | ||
211 | it('Should fail with a non authenticated user', async function () { | |
212 | const fields = { video: { id: server.video.id }, reason: 'my super reason' } | |
213 | ||
214 | await makePostBodyRequest({ url: server.url, path, token: 'hello', fields, statusCodeExpected: 401 }) | |
215 | }) | |
216 | ||
217 | it('Should fail with a reason too short', async function () { | |
218 | const fields = { video: { id: server.video.id }, reason: 'h' } | |
219 | ||
edbc9325 | 220 | await makePostBodyRequest({ url: server.url, path, token: userAccessToken, fields }) |
57f6896f C |
221 | }) |
222 | ||
223 | it('Should fail with a too big reason', async function () { | |
224 | const fields = { video: { id: server.video.id }, reason: 'super'.repeat(605) } | |
225 | ||
edbc9325 | 226 | await makePostBodyRequest({ url: server.url, path, token: userAccessToken, fields }) |
57f6896f C |
227 | }) |
228 | ||
229 | it('Should succeed with the correct parameters (basic)', async function () { | |
230 | const fields: AbuseCreate = { video: { id: server.video.id }, reason: 'my super reason' } | |
231 | ||
edbc9325 | 232 | const res = await makePostBodyRequest({ url: server.url, path, token: userAccessToken, fields, statusCodeExpected: 200 }) |
57f6896f C |
233 | abuseId = res.body.abuse.id |
234 | }) | |
235 | ||
236 | it('Should fail with a wrong predefined reason', async function () { | |
237 | const fields = { video: { id: server.video.id }, reason: 'my super reason', predefinedReasons: [ 'wrongPredefinedReason' ] } | |
238 | ||
edbc9325 | 239 | await makePostBodyRequest({ url: server.url, path, token: userAccessToken, fields }) |
57f6896f C |
240 | }) |
241 | ||
242 | it('Should fail with negative timestamps', async function () { | |
243 | const fields = { video: { id: server.video.id, startAt: -1 }, reason: 'my super reason' } | |
244 | ||
edbc9325 | 245 | await makePostBodyRequest({ url: server.url, path, token: userAccessToken, fields }) |
57f6896f C |
246 | }) |
247 | ||
248 | it('Should fail mith misordered startAt/endAt', async function () { | |
249 | const fields = { video: { id: server.video.id, startAt: 5, endAt: 1 }, reason: 'my super reason' } | |
250 | ||
edbc9325 | 251 | await makePostBodyRequest({ url: server.url, path, token: userAccessToken, fields }) |
57f6896f C |
252 | }) |
253 | ||
254 | it('Should succeed with the corret parameters (advanced)', async function () { | |
255 | const fields: AbuseCreate = { | |
256 | video: { | |
257 | id: server.video.id, | |
258 | startAt: 1, | |
259 | endAt: 5 | |
260 | }, | |
261 | reason: 'my super reason', | |
262 | predefinedReasons: [ 'serverRules' ] | |
263 | } | |
264 | ||
edbc9325 | 265 | await makePostBodyRequest({ url: server.url, path, token: userAccessToken, fields, statusCodeExpected: 200 }) |
57f6896f C |
266 | }) |
267 | }) | |
268 | ||
269 | describe('When updating an abuse', function () { | |
270 | ||
271 | it('Should fail with a non authenticated user', async function () { | |
272 | await updateAbuse(server.url, 'blabla', abuseId, {}, 401) | |
273 | }) | |
274 | ||
275 | it('Should fail with a non admin user', async function () { | |
276 | await updateAbuse(server.url, userAccessToken, abuseId, {}, 403) | |
277 | }) | |
278 | ||
279 | it('Should fail with a bad abuse id', async function () { | |
280 | await updateAbuse(server.url, server.accessToken, 45, {}, 404) | |
281 | }) | |
282 | ||
283 | it('Should fail with a bad state', async function () { | |
284 | const body = { state: 5 } | |
285 | await updateAbuse(server.url, server.accessToken, abuseId, body, 400) | |
286 | }) | |
287 | ||
288 | it('Should fail with a bad moderation comment', async function () { | |
289 | const body = { moderationComment: 'b'.repeat(3001) } | |
290 | await updateAbuse(server.url, server.accessToken, abuseId, body, 400) | |
291 | }) | |
292 | ||
293 | it('Should succeed with the correct params', async function () { | |
294 | const body = { state: AbuseState.ACCEPTED } | |
295 | await updateAbuse(server.url, server.accessToken, abuseId, body) | |
296 | }) | |
297 | }) | |
298 | ||
edbc9325 C |
299 | describe('When creating an abuse message', function () { |
300 | const message = 'my super message' | |
301 | ||
302 | it('Should fail with an invalid abuse id', async function () { | |
303 | await addAbuseMessage(server.url, userAccessToken2, 888, message, 404) | |
304 | }) | |
305 | ||
306 | it('Should fail with a non authenticated user', async function () { | |
307 | await addAbuseMessage(server.url, 'fake_token', abuseId, message, 401) | |
308 | }) | |
309 | ||
310 | it('Should fail with an invalid logged in user', async function () { | |
311 | await addAbuseMessage(server.url, userAccessToken2, abuseId, message, 403) | |
312 | }) | |
313 | ||
314 | it('Should fail with an invalid message', async function () { | |
315 | await addAbuseMessage(server.url, userAccessToken, abuseId, 'a'.repeat(5000), 400) | |
316 | }) | |
317 | ||
318 | it('Should suceed with the correct params', async function () { | |
319 | const res = await addAbuseMessage(server.url, userAccessToken, abuseId, message) | |
320 | messageId = res.body.abuseMessage.id | |
321 | }) | |
322 | }) | |
323 | ||
324 | describe('When listing abuse message', function () { | |
325 | ||
326 | it('Should fail with an invalid abuse id', async function () { | |
327 | await listAbuseMessages(server.url, userAccessToken, 888, 404) | |
328 | }) | |
329 | ||
330 | it('Should fail with a non authenticated user', async function () { | |
331 | await listAbuseMessages(server.url, 'fake_token', abuseId, 401) | |
332 | }) | |
333 | ||
334 | it('Should fail with an invalid logged in user', async function () { | |
335 | await listAbuseMessages(server.url, userAccessToken2, abuseId, 403) | |
336 | }) | |
337 | ||
338 | it('Should succeed with the correct params', async function () { | |
339 | await listAbuseMessages(server.url, userAccessToken, abuseId) | |
340 | }) | |
341 | }) | |
342 | ||
343 | describe('When deleting an abuse message', function () { | |
344 | ||
345 | it('Should fail with an invalid abuse id', async function () { | |
346 | await deleteAbuseMessage(server.url, userAccessToken, 888, messageId, 404) | |
347 | }) | |
348 | ||
349 | it('Should fail with an invalid message id', async function () { | |
350 | await deleteAbuseMessage(server.url, userAccessToken, abuseId, 888, 404) | |
351 | }) | |
352 | ||
353 | it('Should fail with a non authenticated user', async function () { | |
354 | await deleteAbuseMessage(server.url, 'fake_token', abuseId, messageId, 401) | |
355 | }) | |
356 | ||
357 | it('Should fail with an invalid logged in user', async function () { | |
358 | await deleteAbuseMessage(server.url, userAccessToken2, abuseId, messageId, 403) | |
359 | }) | |
360 | ||
361 | it('Should succeed with the correct params', async function () { | |
362 | await deleteAbuseMessage(server.url, userAccessToken, abuseId, messageId) | |
363 | }) | |
364 | }) | |
365 | ||
57f6896f C |
366 | describe('When deleting a video abuse', function () { |
367 | ||
368 | it('Should fail with a non authenticated user', async function () { | |
369 | await deleteAbuse(server.url, 'blabla', abuseId, 401) | |
370 | }) | |
371 | ||
372 | it('Should fail with a non admin user', async function () { | |
373 | await deleteAbuse(server.url, userAccessToken, abuseId, 403) | |
374 | }) | |
375 | ||
376 | it('Should fail with a bad abuse id', async function () { | |
377 | await deleteAbuse(server.url, server.accessToken, 45, 404) | |
378 | }) | |
379 | ||
380 | it('Should succeed with the correct params', async function () { | |
381 | await deleteAbuse(server.url, server.accessToken, abuseId) | |
382 | }) | |
383 | }) | |
384 | ||
385 | after(async function () { | |
386 | await cleanupTests([ server ]) | |
387 | }) | |
388 | }) |