1 /* eslint-disable no-unused-expressions */
5 const request
= require('supertest')
6 const series
= require('async/series')
8 const loginUtils
= require('../../utils/login')
9 const requestsUtils
= require('../../utils/requests')
10 const serversUtils
= require('../../utils/servers')
11 const usersUtils
= require('../../utils/users')
12 const videosUtils
= require('../../utils/videos')
14 describe('Test users API validators', function () {
15 const path
= '/api/v1/users/'
20 let serverWithRegistrationDisabled
= null
21 let userAccessToken
= null
23 // ---------------------------------------------------------------
25 before(function (done
) {
30 serversUtils
.flushTests(next
)
33 serversUtils
.runServer(1, function (serverCreated
) {
34 server
= serverCreated
40 serversUtils
.runServer(2, function (serverCreated
) {
41 serverWithRegistrationDisabled
= serverCreated
47 loginUtils
.loginAndGetAccessToken(server
, function (err
, token
) {
49 server
.accessToken
= token
55 const username
= 'user1'
56 const password
= 'my super password'
58 usersUtils
.createUser(server
.url
, server
.accessToken
, username
, password
, next
)
61 const videoAttributes
= {}
62 videosUtils
.uploadVideo(server
.url
, server
.accessToken
, videoAttributes
, next
)
65 videosUtils
.getVideosList(server
.url
, function (err
, res
) {
68 const videos
= res
.body
.data
69 videoId
= videos
[0].id
77 password: 'my super password'
80 loginUtils
.getUserAccessToken(server
, user
, function (err
, accessToken
) {
83 userAccessToken
= accessToken
91 describe('When listing users', function () {
92 it('Should fail with a bad start pagination', function (done
) {
95 .query({ start: 'hello' })
96 .set('Accept', 'application/json')
100 it('Should fail with a bad count pagination', function (done
) {
103 .query({ count: 'hello' })
104 .set('Accept', 'application/json')
108 it('Should fail with an incorrect sort', function (done
) {
111 .query({ sort: 'hello' })
112 .set('Accept', 'application/json')
117 describe('When adding a new user', function () {
118 it('Should fail with a too small username', function (done
) {
121 email: 'test@example.com',
122 password: 'mysuperpassword'
125 requestsUtils
.makePostBodyRequest(server
.url
, path
, server
.accessToken
, data
, done
)
128 it('Should fail with a too long username', function (done
) {
130 username: 'mysuperusernamewhichisverylong',
131 email: 'test@example.com',
132 password: 'mysuperpassword'
135 requestsUtils
.makePostBodyRequest(server
.url
, path
, server
.accessToken
, data
, done
)
138 it('Should fail with an incorrect username', function (done
) {
140 username: 'my username',
141 email: 'test@example.com',
142 password: 'mysuperpassword'
145 requestsUtils
.makePostBodyRequest(server
.url
, path
, server
.accessToken
, data
, done
)
148 it('Should fail with a missing email', function (done
) {
151 password: 'mysuperpassword'
154 requestsUtils
.makePostBodyRequest(server
.url
, path
, server
.accessToken
, data
, done
)
157 it('Should fail with an invalid email', function (done
) {
159 username: 'mysuperusernamewhichisverylong',
160 email: 'testexample.com',
161 password: 'mysuperpassword'
164 requestsUtils
.makePostBodyRequest(server
.url
, path
, server
.accessToken
, data
, done
)
167 it('Should fail with a too small password', function (done
) {
169 username: 'myusername',
170 email: 'test@example.com',
174 requestsUtils
.makePostBodyRequest(server
.url
, path
, server
.accessToken
, data
, done
)
177 it('Should fail with a too long password', function (done
) {
179 username: 'myusername',
180 email: 'test@example.com',
181 password: 'my super long password which is very very very very very very very very very very very very very very' +
182 'very very very very very very very very very very very very very very very veryv very very very very' +
183 'very very very very very very very very very very very very very very very very very very very very long'
186 requestsUtils
.makePostBodyRequest(server
.url
, path
, server
.accessToken
, data
, done
)
189 it('Should fail with an non authenticated user', function (done
) {
191 username: 'myusername',
192 email: 'test@example.com',
193 password: 'my super password'
196 requestsUtils
.makePostBodyRequest(server
.url
, path
, 'super token', data
, done
, 401)
199 it('Should fail if we add a user with the same username', function (done
) {
202 email: 'test@example.com',
203 password: 'my super password'
206 requestsUtils
.makePostBodyRequest(server
.url
, path
, server
.accessToken
, data
, done
, 409)
209 it('Should fail if we add a user with the same email', function (done
) {
211 username: 'myusername',
212 email: 'user1@example.com',
213 password: 'my super password'
216 requestsUtils
.makePostBodyRequest(server
.url
, path
, server
.accessToken
, data
, done
, 409)
219 it('Should succeed with the correct params', function (done
) {
222 email: 'test@example.com',
223 password: 'my super password'
226 requestsUtils
.makePostBodyRequest(server
.url
, path
, server
.accessToken
, data
, done
, 204)
229 it('Should fail with a non admin user', function (done
) {
232 email: 'test@example.com',
233 password: 'my super password'
236 loginUtils
.loginAndGetAccessToken(server
, function (err
, accessToken
) {
239 userAccessToken
= accessToken
243 email: 'test@example.com',
244 password: 'my super password'
247 requestsUtils
.makePostBodyRequest(server
.url
, path
, userAccessToken
, data
, done
, 403)
252 describe('When updating a user', function () {
253 before(function (done
) {
254 usersUtils
.getUsersList(server
.url
, function (err
, res
) {
257 userId
= res
.body
.data
[1].id
258 rootId
= res
.body
.data
[2].id
263 it('Should fail with a too small password', function (done
) {
268 requestsUtils
.makePutBodyRequest(server
.url
, path
+ userId
, userAccessToken
, data
, done
)
271 it('Should fail with a too long password', function (done
) {
273 password: 'my super long password which is very very very very very very very very very very very very very very' +
274 'very very very very very very very very very very very very very very very veryv very very very very' +
275 'very very very very very very very very very very very very very very very very very very very very long'
278 requestsUtils
.makePutBodyRequest(server
.url
, path
+ userId
, userAccessToken
, data
, done
)
281 it('Should fail with an invalid display NSFW attribute', function (done
) {
286 requestsUtils
.makePutBodyRequest(server
.url
, path
+ userId
, userAccessToken
, data
, done
)
289 it('Should fail with an non authenticated user', function (done
) {
291 password: 'my super password'
294 requestsUtils
.makePutBodyRequest(server
.url
, path
+ userId
, 'super token', data
, done
, 401)
297 it('Should succeed with the correct params', function (done
) {
299 password: 'my super password',
303 requestsUtils
.makePutBodyRequest(server
.url
, path
+ userId
, userAccessToken
, data
, done
, 204)
307 describe('When getting my information', function () {
308 it('Should fail with a non authenticated user', function (done
) {
311 .set('Authorization', 'Bearer faketoken')
312 .set('Accept', 'application/json')
316 it('Should success with the correct parameters', function (done
) {
319 .set('Authorization', 'Bearer ' + userAccessToken
)
320 .set('Accept', 'application/json')
325 describe('When getting my video rating', function () {
326 it('Should fail with a non authenticated user', function (done
) {
328 .get(path
+ 'me/videos/' + videoId
+ '/rating')
329 .set('Authorization', 'Bearer faketoken')
330 .set('Accept', 'application/json')
334 it('Should fail with an incorrect video uuid', function (done
) {
336 .get(path
+ 'me/videos/blabla/rating')
337 .set('Authorization', 'Bearer ' + userAccessToken
)
338 .set('Accept', 'application/json')
342 it('Should fail with an unknown video', function (done
) {
344 .get(path
+ 'me/videos/4da6fde3-88f7-4d16-b119-108df5630b06/rating')
345 .set('Authorization', 'Bearer ' + userAccessToken
)
346 .set('Accept', 'application/json')
350 it('Should success with the correct parameters', function (done
) {
352 .get(path
+ 'me/videos/' + videoId
+ '/rating')
353 .set('Authorization', 'Bearer ' + userAccessToken
)
354 .set('Accept', 'application/json')
359 describe('When removing an user', function () {
360 it('Should fail with an incorrect id', function (done
) {
362 .delete(path
+ 'bla-bla')
363 .set('Authorization', 'Bearer ' + server
.accessToken
)
367 it('Should fail with the root user', function (done
) {
369 .delete(path
+ rootId
)
370 .set('Authorization', 'Bearer ' + server
.accessToken
)
374 it('Should return 404 with a non existing id', function (done
) {
377 .set('Authorization', 'Bearer ' + server
.accessToken
)
382 describe('When removing an user', function () {
383 it('Should fail with an incorrect id', function (done
) {
385 .delete(path
+ 'bla-bla')
386 .set('Authorization', 'Bearer ' + server
.accessToken
)
390 it('Should fail with the root user', function (done
) {
392 .delete(path
+ rootId
)
393 .set('Authorization', 'Bearer ' + server
.accessToken
)
397 it('Should return 404 with a non existing id', function (done
) {
400 .set('Authorization', 'Bearer ' + server
.accessToken
)
405 describe('When register a new user', function () {
406 const registrationPath
= path
+ '/register'
408 it('Should fail with a too small username', function (done
) {
411 email: 'test@example.com',
412 password: 'mysuperpassword'
415 requestsUtils
.makePostBodyRequest(server
.url
, registrationPath
, server
.accessToken
, data
, done
)
418 it('Should fail with a too long username', function (done
) {
420 username: 'mysuperusernamewhichisverylong',
421 email: 'test@example.com',
422 password: 'mysuperpassword'
425 requestsUtils
.makePostBodyRequest(server
.url
, registrationPath
, server
.accessToken
, data
, done
)
428 it('Should fail with an incorrect username', function (done
) {
430 username: 'my username',
431 email: 'test@example.com',
432 password: 'mysuperpassword'
435 requestsUtils
.makePostBodyRequest(server
.url
, registrationPath
, server
.accessToken
, data
, done
)
438 it('Should fail with a missing email', function (done
) {
441 password: 'mysuperpassword'
444 requestsUtils
.makePostBodyRequest(server
.url
, registrationPath
, server
.accessToken
, data
, done
)
447 it('Should fail with an invalid email', function (done
) {
449 username: 'mysuperusernamewhichisverylong',
450 email: 'testexample.com',
451 password: 'mysuperpassword'
454 requestsUtils
.makePostBodyRequest(server
.url
, registrationPath
, server
.accessToken
, data
, done
)
457 it('Should fail with a too small password', function (done
) {
459 username: 'myusername',
460 email: 'test@example.com',
464 requestsUtils
.makePostBodyRequest(server
.url
, registrationPath
, server
.accessToken
, data
, done
)
467 it('Should fail with a too long password', function (done
) {
469 username: 'myusername',
470 email: 'test@example.com',
471 password: 'my super long password which is very very very very very very very very very very very very very very' +
472 'very very very very very very very very very very very very very very very veryv very very very very' +
473 'very very very very very very very very very very very very very very very very very very very very long'
476 requestsUtils
.makePostBodyRequest(server
.url
, registrationPath
, server
.accessToken
, data
, done
)
479 it('Should fail if we register a user with the same username', function (done
) {
482 email: 'test@example.com',
483 password: 'my super password'
486 requestsUtils
.makePostBodyRequest(server
.url
, registrationPath
, server
.accessToken
, data
, done
, 409)
489 it('Should fail if we register a user with the same email', function (done
) {
491 username: 'myusername',
492 email: 'admin1@example.com',
493 password: 'my super password'
496 requestsUtils
.makePostBodyRequest(server
.url
, registrationPath
, server
.accessToken
, data
, done
, 409)
499 it('Should succeed with the correct params', function (done
) {
502 email: 'test3@example.com',
503 password: 'my super password'
506 requestsUtils
.makePostBodyRequest(server
.url
, registrationPath
, server
.accessToken
, data
, done
, 204)
509 it('Should fail on a server with registration disabled', function (done
) {
512 email: 'test4@example.com',
513 password: 'my super password 4'
516 requestsUtils
.makePostBodyRequest(serverWithRegistrationDisabled
.url
, registrationPath
, serverWithRegistrationDisabled
.accessToken
, data
, done
, 400)
520 after(function (done
) {
521 process
.kill(-server
.app
.pid
)
523 // Keep the logs if the test failed
525 serversUtils
.flushTests(done
)