]>
Commit | Line | Data |
---|---|---|
72329aaa C |
1 | /* eslint-disable no-unused-expressions */ |
2 | ||
efe923bc C |
3 | 'use strict' |
4 | ||
5 | const request = require('supertest') | |
6 | const series = require('async/series') | |
7 | ||
8 | const loginUtils = require('../../utils/login') | |
9 | const requestsUtils = require('../../utils/requests') | |
10 | const serversUtils = require('../../utils/servers') | |
11 | const usersUtils = require('../../utils/users') | |
d38b8281 | 12 | const videosUtils = require('../../utils/videos') |
efe923bc C |
13 | |
14 | describe('Test users API validators', function () { | |
15 | const path = '/api/v1/users/' | |
16 | let userId = null | |
17 | let rootId = null | |
d38b8281 | 18 | let videoId = null |
efe923bc C |
19 | let server = null |
20 | let userAccessToken = null | |
21 | ||
22 | // --------------------------------------------------------------- | |
23 | ||
24 | before(function (done) { | |
25 | this.timeout(20000) | |
26 | ||
27 | series([ | |
28 | function (next) { | |
29 | serversUtils.flushTests(next) | |
30 | }, | |
31 | function (next) { | |
32 | serversUtils.runServer(1, function (server1) { | |
33 | server = server1 | |
34 | ||
35 | next() | |
36 | }) | |
37 | }, | |
38 | function (next) { | |
39 | loginUtils.loginAndGetAccessToken(server, function (err, token) { | |
40 | if (err) throw err | |
41 | server.accessToken = token | |
42 | ||
43 | next() | |
44 | }) | |
45 | }, | |
46 | function (next) { | |
47 | const username = 'user1' | |
48 | const password = 'my super password' | |
49 | ||
50 | usersUtils.createUser(server.url, server.accessToken, username, password, next) | |
51 | }, | |
d38b8281 C |
52 | function (next) { |
53 | const name = 'my super name for pod' | |
6e07c3de | 54 | const category = 5 |
d38b8281 C |
55 | const description = 'my super description for pod' |
56 | const tags = [ 'tag' ] | |
57 | const file = 'video_short2.webm' | |
6e07c3de | 58 | videosUtils.uploadVideo(server.url, server.accessToken, name, category, description, tags, file, next) |
d38b8281 C |
59 | }, |
60 | function (next) { | |
61 | videosUtils.getVideosList(server.url, function (err, res) { | |
62 | if (err) throw err | |
63 | ||
64 | const videos = res.body.data | |
65 | videoId = videos[0].id | |
66 | ||
67 | next() | |
68 | }) | |
69 | }, | |
efe923bc C |
70 | function (next) { |
71 | const user = { | |
72 | username: 'user1', | |
73 | password: 'my super password' | |
74 | } | |
75 | ||
76 | loginUtils.getUserAccessToken(server, user, function (err, accessToken) { | |
77 | if (err) throw err | |
78 | ||
79 | userAccessToken = accessToken | |
80 | ||
81 | next() | |
82 | }) | |
83 | } | |
84 | ], done) | |
85 | }) | |
86 | ||
87 | describe('When listing users', function () { | |
88 | it('Should fail with a bad start pagination', function (done) { | |
89 | request(server.url) | |
90 | .get(path) | |
91 | .query({ start: 'hello' }) | |
92 | .set('Accept', 'application/json') | |
93 | .expect(400, done) | |
94 | }) | |
95 | ||
96 | it('Should fail with a bad count pagination', function (done) { | |
97 | request(server.url) | |
98 | .get(path) | |
99 | .query({ count: 'hello' }) | |
100 | .set('Accept', 'application/json') | |
101 | .expect(400, done) | |
102 | }) | |
103 | ||
104 | it('Should fail with an incorrect sort', function (done) { | |
105 | request(server.url) | |
106 | .get(path) | |
107 | .query({ sort: 'hello' }) | |
108 | .set('Accept', 'application/json') | |
109 | .expect(400, done) | |
110 | }) | |
111 | }) | |
112 | ||
113 | describe('When adding a new user', function () { | |
114 | it('Should fail with a too small username', function (done) { | |
115 | const data = { | |
116 | username: 'ji', | |
ad4a8a1c | 117 | email: 'test@example.com', |
efe923bc C |
118 | password: 'mysuperpassword' |
119 | } | |
120 | ||
121 | requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done) | |
122 | }) | |
123 | ||
124 | it('Should fail with a too long username', function (done) { | |
125 | const data = { | |
126 | username: 'mysuperusernamewhichisverylong', | |
ad4a8a1c | 127 | email: 'test@example.com', |
efe923bc C |
128 | password: 'mysuperpassword' |
129 | } | |
130 | ||
131 | requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done) | |
132 | }) | |
133 | ||
134 | it('Should fail with an incorrect username', function (done) { | |
135 | const data = { | |
136 | username: 'my username', | |
ad4a8a1c C |
137 | email: 'test@example.com', |
138 | password: 'mysuperpassword' | |
139 | } | |
140 | ||
141 | requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done) | |
142 | }) | |
143 | ||
144 | it('Should fail with a missing email', function (done) { | |
145 | const data = { | |
146 | username: 'ji', | |
147 | password: 'mysuperpassword' | |
148 | } | |
149 | ||
150 | requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done) | |
151 | }) | |
152 | ||
153 | it('Should fail with an invalid email', function (done) { | |
154 | const data = { | |
155 | username: 'mysuperusernamewhichisverylong', | |
156 | email: 'testexample.com', | |
efe923bc C |
157 | password: 'mysuperpassword' |
158 | } | |
159 | ||
160 | requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done) | |
161 | }) | |
162 | ||
163 | it('Should fail with a too small password', function (done) { | |
164 | const data = { | |
165 | username: 'myusername', | |
ad4a8a1c | 166 | email: 'test@example.com', |
efe923bc C |
167 | password: 'bla' |
168 | } | |
169 | ||
170 | requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done) | |
171 | }) | |
172 | ||
173 | it('Should fail with a too long password', function (done) { | |
174 | const data = { | |
175 | username: 'myusername', | |
ad4a8a1c | 176 | email: 'test@example.com', |
efe923bc C |
177 | password: 'my super long password which is very very very very very very very very very very very very very very' + |
178 | 'very very very very very very very very very very very very very very very veryv very very very very' + | |
179 | 'very very very very very very very very very very very very very very very very very very very very long' | |
180 | } | |
181 | ||
182 | requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done) | |
183 | }) | |
184 | ||
185 | it('Should fail with an non authenticated user', function (done) { | |
186 | const data = { | |
187 | username: 'myusername', | |
ad4a8a1c | 188 | email: 'test@example.com', |
efe923bc C |
189 | password: 'my super password' |
190 | } | |
191 | ||
192 | requestsUtils.makePostBodyRequest(server.url, path, 'super token', data, done, 401) | |
193 | }) | |
194 | ||
195 | it('Should fail if we add a user with the same username', function (done) { | |
196 | const data = { | |
197 | username: 'user1', | |
ad4a8a1c C |
198 | email: 'test@example.com', |
199 | password: 'my super password' | |
200 | } | |
201 | ||
202 | requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done, 409) | |
203 | }) | |
204 | ||
205 | it('Should fail if we add a user with the same email', function (done) { | |
206 | const data = { | |
207 | username: 'myusername', | |
208 | email: 'user1@example.com', | |
efe923bc C |
209 | password: 'my super password' |
210 | } | |
211 | ||
212 | requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done, 409) | |
213 | }) | |
214 | ||
215 | it('Should succeed with the correct params', function (done) { | |
216 | const data = { | |
217 | username: 'user2', | |
ad4a8a1c | 218 | email: 'test@example.com', |
efe923bc C |
219 | password: 'my super password' |
220 | } | |
221 | ||
222 | requestsUtils.makePostBodyRequest(server.url, path, server.accessToken, data, done, 204) | |
223 | }) | |
224 | ||
225 | it('Should fail with a non admin user', function (done) { | |
226 | server.user = { | |
227 | username: 'user1', | |
ad4a8a1c | 228 | email: 'test@example.com', |
efe923bc C |
229 | password: 'my super password' |
230 | } | |
231 | ||
232 | loginUtils.loginAndGetAccessToken(server, function (err, accessToken) { | |
233 | if (err) throw err | |
234 | ||
235 | userAccessToken = accessToken | |
236 | ||
237 | const data = { | |
238 | username: 'user3', | |
ad4a8a1c | 239 | email: 'test@example.com', |
efe923bc C |
240 | password: 'my super password' |
241 | } | |
242 | ||
243 | requestsUtils.makePostBodyRequest(server.url, path, userAccessToken, data, done, 403) | |
244 | }) | |
245 | }) | |
246 | }) | |
247 | ||
248 | describe('When updating a user', function () { | |
249 | before(function (done) { | |
250 | usersUtils.getUsersList(server.url, function (err, res) { | |
251 | if (err) throw err | |
252 | ||
253 | userId = res.body.data[1].id | |
254 | rootId = res.body.data[2].id | |
255 | done() | |
256 | }) | |
257 | }) | |
258 | ||
259 | it('Should fail with a too small password', function (done) { | |
260 | const data = { | |
261 | password: 'bla' | |
262 | } | |
263 | ||
264 | requestsUtils.makePutBodyRequest(server.url, path + userId, userAccessToken, data, done) | |
265 | }) | |
266 | ||
267 | it('Should fail with a too long password', function (done) { | |
268 | const data = { | |
269 | password: 'my super long password which is very very very very very very very very very very very very very very' + | |
270 | 'very very very very very very very very very very very very very very very veryv very very very very' + | |
271 | 'very very very very very very very very very very very very very very very very very very very very long' | |
272 | } | |
273 | ||
274 | requestsUtils.makePutBodyRequest(server.url, path + userId, userAccessToken, data, done) | |
275 | }) | |
276 | ||
277 | it('Should fail with an non authenticated user', function (done) { | |
278 | const data = { | |
279 | password: 'my super password' | |
280 | } | |
281 | ||
282 | requestsUtils.makePutBodyRequest(server.url, path + userId, 'super token', data, done, 401) | |
283 | }) | |
284 | ||
285 | it('Should succeed with the correct params', function (done) { | |
286 | const data = { | |
287 | password: 'my super password' | |
288 | } | |
289 | ||
290 | requestsUtils.makePutBodyRequest(server.url, path + userId, userAccessToken, data, done, 204) | |
291 | }) | |
292 | }) | |
293 | ||
294 | describe('When getting my information', function () { | |
295 | it('Should fail with a non authenticated user', function (done) { | |
296 | request(server.url) | |
297 | .get(path + 'me') | |
298 | .set('Authorization', 'Bearer faketoken') | |
299 | .set('Accept', 'application/json') | |
300 | .expect(401, done) | |
301 | }) | |
302 | ||
303 | it('Should success with the correct parameters', function (done) { | |
304 | request(server.url) | |
305 | .get(path + 'me') | |
306 | .set('Authorization', 'Bearer ' + userAccessToken) | |
307 | .set('Accept', 'application/json') | |
308 | .expect(200, done) | |
309 | }) | |
310 | }) | |
311 | ||
d38b8281 C |
312 | describe('When getting my video rating', function () { |
313 | it('Should fail with a non authenticated user', function (done) { | |
314 | request(server.url) | |
315 | .get(path + 'me/videos/' + videoId + '/rating') | |
316 | .set('Authorization', 'Bearer faketoken') | |
317 | .set('Accept', 'application/json') | |
318 | .expect(401, done) | |
319 | }) | |
320 | ||
321 | it('Should fail with an incorrect video uuid', function (done) { | |
322 | request(server.url) | |
323 | .get(path + 'me/videos/blabla/rating') | |
324 | .set('Authorization', 'Bearer ' + userAccessToken) | |
325 | .set('Accept', 'application/json') | |
326 | .expect(400, done) | |
327 | }) | |
328 | ||
329 | it('Should fail with an unknown video', function (done) { | |
330 | request(server.url) | |
331 | .get(path + 'me/videos/4da6fde3-88f7-4d16-b119-108df5630b06/rating') | |
332 | .set('Authorization', 'Bearer ' + userAccessToken) | |
333 | .set('Accept', 'application/json') | |
334 | .expect(404, done) | |
335 | }) | |
336 | ||
337 | it('Should success with the correct parameters', function (done) { | |
338 | request(server.url) | |
339 | .get(path + 'me/videos/' + videoId + '/rating') | |
340 | .set('Authorization', 'Bearer ' + userAccessToken) | |
341 | .set('Accept', 'application/json') | |
342 | .expect(200, done) | |
343 | }) | |
344 | }) | |
345 | ||
346 | describe('When removing an user', function () { | |
347 | it('Should fail with an incorrect id', function (done) { | |
348 | request(server.url) | |
349 | .delete(path + 'bla-bla') | |
350 | .set('Authorization', 'Bearer ' + server.accessToken) | |
351 | .expect(400, done) | |
352 | }) | |
353 | ||
354 | it('Should fail with the root user', function (done) { | |
355 | request(server.url) | |
356 | .delete(path + rootId) | |
357 | .set('Authorization', 'Bearer ' + server.accessToken) | |
358 | .expect(400, done) | |
359 | }) | |
360 | ||
361 | it('Should return 404 with a non existing id', function (done) { | |
362 | request(server.url) | |
363 | .delete(path + '45') | |
364 | .set('Authorization', 'Bearer ' + server.accessToken) | |
365 | .expect(404, done) | |
366 | }) | |
367 | }) | |
368 | ||
efe923bc C |
369 | describe('When removing an user', function () { |
370 | it('Should fail with an incorrect id', function (done) { | |
371 | request(server.url) | |
372 | .delete(path + 'bla-bla') | |
373 | .set('Authorization', 'Bearer ' + server.accessToken) | |
374 | .expect(400, done) | |
375 | }) | |
376 | ||
377 | it('Should fail with the root user', function (done) { | |
378 | request(server.url) | |
379 | .delete(path + rootId) | |
380 | .set('Authorization', 'Bearer ' + server.accessToken) | |
381 | .expect(400, done) | |
382 | }) | |
383 | ||
384 | it('Should return 404 with a non existing id', function (done) { | |
385 | request(server.url) | |
386 | .delete(path + '45') | |
387 | .set('Authorization', 'Bearer ' + server.accessToken) | |
388 | .expect(404, done) | |
389 | }) | |
390 | }) | |
391 | ||
392 | after(function (done) { | |
393 | process.kill(-server.app.pid) | |
394 | ||
395 | // Keep the logs if the test failed | |
396 | if (this.ok) { | |
397 | serversUtils.flushTests(done) | |
398 | } else { | |
399 | done() | |
400 | } | |
401 | }) | |
402 | }) |