]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/tests/api/users/users.ts
Tests for totalRepliesFromVideoAuthor
[github/Chocobozzz/PeerTube.git] / server / tests / api / users / users.ts
1 /* tslint:disable:no-unused-expression */
2
3 import * as chai from 'chai'
4 import 'mocha'
5 import { User, UserRole, Video, MyUser, VideoPlaylistType } from '../../../../shared/index'
6 import {
7 blockUser,
8 cleanupTests,
9 createUser,
10 deleteMe,
11 flushAndRunServer,
12 getAccountRatings,
13 getBlacklistedVideosList,
14 getMyUserInformation,
15 getMyUserVideoQuotaUsed,
16 getMyUserVideoRating,
17 getUserInformation,
18 getUsersList,
19 getUsersListPaginationAndSort,
20 getVideoChannel,
21 getVideosList, installPlugin,
22 login,
23 makePutBodyRequest,
24 rateVideo,
25 registerUserWithChannel,
26 removeUser,
27 removeVideo,
28 ServerInfo,
29 testImage,
30 unblockUser,
31 updateMyAvatar,
32 updateMyUser,
33 updateUser,
34 uploadVideo,
35 userLogin
36 } from '../../../../shared/extra-utils'
37 import { follow } from '../../../../shared/extra-utils/server/follows'
38 import { setAccessTokensToServers } from '../../../../shared/extra-utils/users/login'
39 import { getMyVideos } from '../../../../shared/extra-utils/videos/videos'
40 import { UserAdminFlag } from '../../../../shared/models/users/user-flag.model'
41
42 const expect = chai.expect
43
44 describe('Test users', function () {
45 let server: ServerInfo
46 let accessToken: string
47 let accessTokenUser: string
48 let videoId: number
49 let userId: number
50 const user = {
51 username: 'user_1',
52 password: 'super password'
53 }
54
55 before(async function () {
56 this.timeout(30000)
57 server = await flushAndRunServer(1)
58
59 await setAccessTokensToServers([ server ])
60
61 await installPlugin({ url: server.url, accessToken: server.accessToken, npmName: 'peertube-theme-background-red' })
62 })
63
64 describe('OAuth client', function () {
65 it('Should create a new client')
66
67 it('Should return the first client')
68
69 it('Should remove the last client')
70
71 it('Should not login with an invalid client id', async function () {
72 const client = { id: 'client', secret: server.client.secret }
73 const res = await login(server.url, client, server.user, 400)
74
75 expect(res.body.error).to.contain('client is invalid')
76 })
77
78 it('Should not login with an invalid client secret', async function () {
79 const client = { id: server.client.id, secret: 'coucou' }
80 const res = await login(server.url, client, server.user, 400)
81
82 expect(res.body.error).to.contain('client is invalid')
83 })
84 })
85
86 describe('Login', function () {
87
88 it('Should not login with an invalid username', async function () {
89 const user = { username: 'captain crochet', password: server.user.password }
90 const res = await login(server.url, server.client, user, 400)
91
92 expect(res.body.error).to.contain('credentials are invalid')
93 })
94
95 it('Should not login with an invalid password', async function () {
96 const user = { username: server.user.username, password: 'mew_three' }
97 const res = await login(server.url, server.client, user, 400)
98
99 expect(res.body.error).to.contain('credentials are invalid')
100 })
101
102 it('Should not be able to upload a video', async function () {
103 accessToken = 'my_super_token'
104
105 const videoAttributes = {}
106 await uploadVideo(server.url, accessToken, videoAttributes, 401)
107 })
108
109 it('Should not be able to follow', async function () {
110 accessToken = 'my_super_token'
111 await follow(server.url, [ 'http://example.com' ], accessToken, 401)
112 })
113
114 it('Should not be able to unfollow')
115
116 it('Should be able to login', async function () {
117 const res = await login(server.url, server.client, server.user, 200)
118
119 accessToken = res.body.access_token
120 })
121
122 it('Should be able to login with an insensitive username', async function () {
123 const user = { username: 'RoOt', password: server.user.password }
124 const res = await login(server.url, server.client, user, 200)
125
126 const user2 = { username: 'rOoT', password: server.user.password }
127 const res2 = await login(server.url, server.client, user2, 200)
128
129 const user3 = { username: 'ROOt', password: server.user.password }
130 const res3 = await login(server.url, server.client, user3, 200)
131 })
132 })
133
134 describe('Upload', function () {
135
136 it('Should upload the video with the correct token', async function () {
137 const videoAttributes = {}
138 await uploadVideo(server.url, accessToken, videoAttributes)
139 const res = await getVideosList(server.url)
140 const video = res.body.data[ 0 ]
141
142 expect(video.account.name).to.equal('root')
143 videoId = video.id
144 })
145
146 it('Should upload the video again with the correct token', async function () {
147 const videoAttributes = {}
148 await uploadVideo(server.url, accessToken, videoAttributes)
149 })
150 })
151
152 describe('Ratings', function () {
153
154 it('Should retrieve a video rating', async function () {
155 await rateVideo(server.url, accessToken, videoId, 'like')
156 const res = await getMyUserVideoRating(server.url, accessToken, videoId)
157 const rating = res.body
158
159 expect(rating.videoId).to.equal(videoId)
160 expect(rating.rating).to.equal('like')
161 })
162
163 it('Should retrieve ratings list', async function () {
164 await rateVideo(server.url, accessToken, videoId, 'like')
165
166 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, null, 200)
167 const ratings = res.body
168
169 expect(ratings.total).to.equal(1)
170 expect(ratings.data[ 0 ].video.id).to.equal(videoId)
171 expect(ratings.data[ 0 ].rating).to.equal('like')
172 })
173
174 it('Should retrieve ratings list by rating type', async function () {
175 {
176 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 'like')
177 const ratings = res.body
178 expect(ratings.data.length).to.equal(1)
179 }
180
181 {
182 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 'dislike')
183 const ratings = res.body
184 expect(ratings.data.length).to.equal(0)
185 }
186 })
187 })
188
189 describe('Remove video', function () {
190 it('Should not be able to remove the video with an incorrect token', async function () {
191 await removeVideo(server.url, 'bad_token', videoId, 401)
192 })
193
194 it('Should not be able to remove the video with the token of another account')
195
196 it('Should be able to remove the video with the correct token', async function () {
197 await removeVideo(server.url, accessToken, videoId)
198 })
199 })
200
201 describe('Logout', function () {
202 it('Should logout (revoke token)')
203
204 it('Should not be able to get the user information')
205
206 it('Should not be able to upload a video')
207
208 it('Should not be able to remove a video')
209
210 it('Should not be able to rate a video', async function () {
211 const path = '/api/v1/videos/'
212 const data = {
213 rating: 'likes'
214 }
215
216 const options = {
217 url: server.url,
218 path: path + videoId,
219 token: 'wrong token',
220 fields: data,
221 statusCodeExpected: 401
222 }
223 await makePutBodyRequest(options)
224 })
225
226 it('Should be able to login again')
227
228 it('Should have an expired access token')
229
230 it('Should refresh the token')
231
232 it('Should be able to upload a video again')
233 })
234
235 describe('Creating a user', function () {
236
237 it('Should be able to create a new user', async function () {
238 await createUser({
239 url: server.url,
240 accessToken: accessToken,
241 username: user.username,
242 password: user.password,
243 videoQuota: 2 * 1024 * 1024,
244 adminFlags: UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST
245 })
246 })
247
248 it('Should be able to login with this user', async function () {
249 accessTokenUser = await userLogin(server, user)
250 })
251
252 it('Should be able to get user information', async function () {
253 const res1 = await getMyUserInformation(server.url, accessTokenUser)
254 const userMe: MyUser = res1.body
255
256 const res2 = await getUserInformation(server.url, server.accessToken, userMe.id)
257 const userGet: User = res2.body
258
259 for (const user of [ userMe, userGet ]) {
260 expect(user.username).to.equal('user_1')
261 expect(user.email).to.equal('user_1@example.com')
262 expect(user.nsfwPolicy).to.equal('display')
263 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
264 expect(user.roleLabel).to.equal('User')
265 expect(user.id).to.be.a('number')
266 expect(user.account.displayName).to.equal('user_1')
267 expect(user.account.description).to.be.null
268 }
269
270 expect(userMe.adminFlags).to.be.undefined
271 expect(userGet.adminFlags).to.equal(UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST)
272
273 expect(userMe.specialPlaylists).to.have.lengthOf(1)
274 expect(userMe.specialPlaylists[0].type).to.equal(VideoPlaylistType.WATCH_LATER)
275 })
276 })
277
278 describe('My videos & quotas', function () {
279
280 it('Should be able to upload a video with this user', async function () {
281 this.timeout(5000)
282
283 const videoAttributes = {
284 name: 'super user video',
285 fixture: 'video_short.webm'
286 }
287 await uploadVideo(server.url, accessTokenUser, videoAttributes)
288 })
289
290 it('Should have video quota updated', async function () {
291 const res = await getMyUserVideoQuotaUsed(server.url, accessTokenUser)
292 const data = res.body
293
294 expect(data.videoQuotaUsed).to.equal(218910)
295
296 const resUsers = await getUsersList(server.url, server.accessToken)
297
298 const users: User[] = resUsers.body.data
299 const tmpUser = users.find(u => u.username === user.username)
300 expect(tmpUser.videoQuotaUsed).to.equal(218910)
301 })
302
303 it('Should be able to list my videos', async function () {
304 const res = await getMyVideos(server.url, accessTokenUser, 0, 5)
305 expect(res.body.total).to.equal(1)
306
307 const videos = res.body.data
308 expect(videos).to.have.lengthOf(1)
309
310 const video: Video = videos[ 0 ]
311 expect(video.name).to.equal('super user video')
312 expect(video.thumbnailPath).to.not.be.null
313 expect(video.previewPath).to.not.be.null
314 })
315
316 it('Should be able to search in my videos', async function () {
317 {
318 const res = await getMyVideos(server.url, accessTokenUser, 0, 5, '-createdAt', 'user video')
319 expect(res.body.total).to.equal(1)
320
321 const videos = res.body.data
322 expect(videos).to.have.lengthOf(1)
323 }
324
325 {
326 const res = await getMyVideos(server.url, accessTokenUser, 0, 5, '-createdAt', 'toto')
327 expect(res.body.total).to.equal(0)
328
329 const videos = res.body.data
330 expect(videos).to.have.lengthOf(0)
331 }
332 })
333 })
334
335 describe('Users listing', function () {
336
337 it('Should list all the users', async function () {
338 const res = await getUsersList(server.url, server.accessToken)
339 const result = res.body
340 const total = result.total
341 const users = result.data
342
343 expect(total).to.equal(2)
344 expect(users).to.be.an('array')
345 expect(users.length).to.equal(2)
346
347 const user = users[ 0 ]
348 expect(user.username).to.equal('user_1')
349 expect(user.email).to.equal('user_1@example.com')
350 expect(user.nsfwPolicy).to.equal('display')
351
352 const rootUser = users[ 1 ]
353 expect(rootUser.username).to.equal('root')
354 expect(rootUser.email).to.equal('admin' + server.internalServerNumber + '@example.com')
355 expect(user.nsfwPolicy).to.equal('display')
356
357 userId = user.id
358 })
359
360 it('Should list only the first user by username asc', async function () {
361 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, 'username')
362
363 const result = res.body
364 const total = result.total
365 const users = result.data
366
367 expect(total).to.equal(2)
368 expect(users.length).to.equal(1)
369
370 const user = users[ 0 ]
371 expect(user.username).to.equal('root')
372 expect(user.email).to.equal('admin' + server.internalServerNumber + '@example.com')
373 expect(user.roleLabel).to.equal('Administrator')
374 expect(user.nsfwPolicy).to.equal('display')
375 })
376
377 it('Should list only the first user by username desc', async function () {
378 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, '-username')
379 const result = res.body
380 const total = result.total
381 const users = result.data
382
383 expect(total).to.equal(2)
384 expect(users.length).to.equal(1)
385
386 const user = users[ 0 ]
387 expect(user.username).to.equal('user_1')
388 expect(user.email).to.equal('user_1@example.com')
389 expect(user.nsfwPolicy).to.equal('display')
390 })
391
392 it('Should list only the second user by createdAt desc', async function () {
393 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, '-createdAt')
394 const result = res.body
395 const total = result.total
396 const users = result.data
397
398 expect(total).to.equal(2)
399 expect(users.length).to.equal(1)
400
401 const user = users[ 0 ]
402 expect(user.username).to.equal('user_1')
403 expect(user.email).to.equal('user_1@example.com')
404 expect(user.nsfwPolicy).to.equal('display')
405 })
406
407 it('Should list all the users by createdAt asc', async function () {
408 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt')
409 const result = res.body
410 const total = result.total
411 const users = result.data
412
413 expect(total).to.equal(2)
414 expect(users.length).to.equal(2)
415
416 expect(users[ 0 ].username).to.equal('root')
417 expect(users[ 0 ].email).to.equal('admin' + server.internalServerNumber + '@example.com')
418 expect(users[ 0 ].nsfwPolicy).to.equal('display')
419
420 expect(users[ 1 ].username).to.equal('user_1')
421 expect(users[ 1 ].email).to.equal('user_1@example.com')
422 expect(users[ 1 ].nsfwPolicy).to.equal('display')
423 })
424
425 it('Should search user by username', async function () {
426 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'oot')
427 const users = res.body.data as User[]
428
429 expect(res.body.total).to.equal(1)
430 expect(users.length).to.equal(1)
431
432 expect(users[ 0 ].username).to.equal('root')
433 })
434
435 it('Should search user by email', async function () {
436 {
437 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'r_1@exam')
438 const users = res.body.data as User[]
439
440 expect(res.body.total).to.equal(1)
441 expect(users.length).to.equal(1)
442
443 expect(users[ 0 ].username).to.equal('user_1')
444 expect(users[ 0 ].email).to.equal('user_1@example.com')
445 }
446
447 {
448 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'example')
449 const users = res.body.data as User[]
450
451 expect(res.body.total).to.equal(2)
452 expect(users.length).to.equal(2)
453
454 expect(users[ 0 ].username).to.equal('root')
455 expect(users[ 1 ].username).to.equal('user_1')
456 }
457 })
458 })
459
460 describe('Update my account', function () {
461 it('Should update my password', async function () {
462 await updateMyUser({
463 url: server.url,
464 accessToken: accessTokenUser,
465 currentPassword: 'super password',
466 password: 'new password'
467 })
468 user.password = 'new password'
469
470 await userLogin(server, user, 200)
471 })
472
473 it('Should be able to change the NSFW display attribute', async function () {
474 await updateMyUser({
475 url: server.url,
476 accessToken: accessTokenUser,
477 nsfwPolicy: 'do_not_list'
478 })
479
480 const res = await getMyUserInformation(server.url, accessTokenUser)
481 const user = res.body
482
483 expect(user.username).to.equal('user_1')
484 expect(user.email).to.equal('user_1@example.com')
485 expect(user.nsfwPolicy).to.equal('do_not_list')
486 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
487 expect(user.id).to.be.a('number')
488 expect(user.account.displayName).to.equal('user_1')
489 expect(user.account.description).to.be.null
490 })
491
492 it('Should be able to change the autoPlayVideo attribute', async function () {
493 await updateMyUser({
494 url: server.url,
495 accessToken: accessTokenUser,
496 autoPlayVideo: false
497 })
498
499 const res = await getMyUserInformation(server.url, accessTokenUser)
500 const user = res.body
501
502 expect(user.autoPlayVideo).to.be.false
503 })
504
505 it('Should be able to change the autoPlayNextVideo attribute', async function () {
506 await updateMyUser({
507 url: server.url,
508 accessToken: accessTokenUser,
509 autoPlayNextVideo: true
510 })
511
512 const res = await getMyUserInformation(server.url, accessTokenUser)
513 const user = res.body
514
515 expect(user.autoPlayNextVideo).to.be.true
516 })
517
518 it('Should be able to change the email attribute', async function () {
519 await updateMyUser({
520 url: server.url,
521 accessToken: accessTokenUser,
522 currentPassword: 'new password',
523 email: 'updated@example.com'
524 })
525
526 const res = await getMyUserInformation(server.url, accessTokenUser)
527 const user = res.body
528
529 expect(user.username).to.equal('user_1')
530 expect(user.email).to.equal('updated@example.com')
531 expect(user.nsfwPolicy).to.equal('do_not_list')
532 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
533 expect(user.id).to.be.a('number')
534 expect(user.account.displayName).to.equal('user_1')
535 expect(user.account.description).to.be.null
536 })
537
538 it('Should be able to update my avatar', async function () {
539 const fixture = 'avatar.png'
540
541 await updateMyAvatar({
542 url: server.url,
543 accessToken: accessTokenUser,
544 fixture
545 })
546
547 const res = await getMyUserInformation(server.url, accessTokenUser)
548 const user = res.body
549
550 await testImage(server.url, 'avatar-resized', user.account.avatar.path, '.png')
551 })
552
553 it('Should be able to update my display name', async function () {
554 await updateMyUser({
555 url: server.url,
556 accessToken: accessTokenUser,
557 displayName: 'new display name'
558 })
559
560 const res = await getMyUserInformation(server.url, accessTokenUser)
561 const user = res.body
562
563 expect(user.username).to.equal('user_1')
564 expect(user.email).to.equal('updated@example.com')
565 expect(user.nsfwPolicy).to.equal('do_not_list')
566 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
567 expect(user.id).to.be.a('number')
568 expect(user.account.displayName).to.equal('new display name')
569 expect(user.account.description).to.be.null
570 })
571
572 it('Should be able to update my description', async function () {
573 await updateMyUser({
574 url: server.url,
575 accessToken: accessTokenUser,
576 description: 'my super description updated'
577 })
578
579 const res = await getMyUserInformation(server.url, accessTokenUser)
580 const user: User = res.body
581
582 expect(user.username).to.equal('user_1')
583 expect(user.email).to.equal('updated@example.com')
584 expect(user.nsfwPolicy).to.equal('do_not_list')
585 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
586 expect(user.id).to.be.a('number')
587 expect(user.account.displayName).to.equal('new display name')
588 expect(user.account.description).to.equal('my super description updated')
589 expect(user.noWelcomeModal).to.be.false
590 expect(user.noInstanceConfigWarningModal).to.be.false
591 })
592
593 it('Should be able to update my theme', async function () {
594 for (const theme of [ 'background-red', 'default', 'instance-default' ]) {
595 await updateMyUser({
596 url: server.url,
597 accessToken: accessTokenUser,
598 theme
599 })
600
601 const res = await getMyUserInformation(server.url, accessTokenUser)
602 const body: User = res.body
603
604 expect(body.theme).to.equal(theme)
605 }
606 })
607
608 it('Should be able to update my modal preferences', async function () {
609 await updateMyUser({
610 url: server.url,
611 accessToken: accessTokenUser,
612 noInstanceConfigWarningModal: true,
613 noWelcomeModal: true
614 })
615
616 const res = await getMyUserInformation(server.url, accessTokenUser)
617 const user: User = res.body
618
619 expect(user.noWelcomeModal).to.be.true
620 expect(user.noInstanceConfigWarningModal).to.be.true
621 })
622 })
623
624 describe('Updating another user', function () {
625
626 it('Should be able to update another user', async function () {
627 await updateUser({
628 url: server.url,
629 userId,
630 accessToken,
631 email: 'updated2@example.com',
632 emailVerified: true,
633 videoQuota: 42,
634 role: UserRole.MODERATOR,
635 adminFlags: UserAdminFlag.NONE
636 })
637
638 const res = await getUserInformation(server.url, accessToken, userId)
639 const user = res.body
640
641 expect(user.username).to.equal('user_1')
642 expect(user.email).to.equal('updated2@example.com')
643 expect(user.emailVerified).to.be.true
644 expect(user.nsfwPolicy).to.equal('do_not_list')
645 expect(user.videoQuota).to.equal(42)
646 expect(user.roleLabel).to.equal('Moderator')
647 expect(user.id).to.be.a('number')
648 expect(user.adminFlags).to.equal(UserAdminFlag.NONE)
649 })
650
651 it('Should have removed the user token', async function () {
652 await getMyUserVideoQuotaUsed(server.url, accessTokenUser, 401)
653
654 accessTokenUser = await userLogin(server, user)
655 })
656
657 it('Should be able to update another user password', async function () {
658 await updateUser({
659 url: server.url,
660 userId,
661 accessToken,
662 password: 'password updated'
663 })
664
665 await getMyUserVideoQuotaUsed(server.url, accessTokenUser, 401)
666
667 await userLogin(server, user, 400)
668
669 user.password = 'password updated'
670 accessTokenUser = await userLogin(server, user)
671 })
672 })
673
674 describe('Video blacklists', function () {
675 it('Should be able to list video blacklist by a moderator', async function () {
676 await getBlacklistedVideosList({ url: server.url, token: accessTokenUser })
677 })
678 })
679
680 describe('Remove a user', function () {
681 it('Should be able to remove this user', async function () {
682 await removeUser(server.url, userId, accessToken)
683 })
684
685 it('Should not be able to login with this user', async function () {
686 await userLogin(server, user, 400)
687 })
688
689 it('Should not have videos of this user', async function () {
690 const res = await getVideosList(server.url)
691
692 expect(res.body.total).to.equal(1)
693
694 const video = res.body.data[ 0 ]
695 expect(video.account.name).to.equal('root')
696 })
697 })
698
699 describe('Registering a new user', function () {
700 it('Should register a new user', async function () {
701 const user = { displayName: 'super user 15', username: 'user_15', password: 'my super password' }
702 const channel = { name: 'my_user_15_channel', displayName: 'my channel rocks' }
703
704 await registerUserWithChannel({ url: server.url, user, channel })
705 })
706
707 it('Should be able to login with this registered user', async function () {
708 const user15 = {
709 username: 'user_15',
710 password: 'my super password'
711 }
712
713 accessToken = await userLogin(server, user15)
714 })
715
716 it('Should have the correct display name', async function () {
717 const res = await getMyUserInformation(server.url, accessToken)
718 const user: User = res.body
719
720 expect(user.account.displayName).to.equal('super user 15')
721 })
722
723 it('Should have the correct video quota', async function () {
724 const res = await getMyUserInformation(server.url, accessToken)
725 const user = res.body
726
727 expect(user.videoQuota).to.equal(5 * 1024 * 1024)
728 })
729
730 it('Should have created the channel', async function () {
731 const res = await getVideoChannel(server.url, 'my_user_15_channel')
732
733 expect(res.body.displayName).to.equal('my channel rocks')
734 })
735
736 it('Should remove me', async function () {
737 {
738 const res = await getUsersList(server.url, server.accessToken)
739 expect(res.body.data.find(u => u.username === 'user_15')).to.not.be.undefined
740 }
741
742 await deleteMe(server.url, accessToken)
743
744 {
745 const res = await getUsersList(server.url, server.accessToken)
746 expect(res.body.data.find(u => u.username === 'user_15')).to.be.undefined
747 }
748 })
749 })
750
751 describe('User blocking', function () {
752 it('Should block and unblock a user', async function () {
753 const user16 = {
754 username: 'user_16',
755 password: 'my super password'
756 }
757 const resUser = await createUser({
758 url: server.url,
759 accessToken: server.accessToken,
760 username: user16.username,
761 password: user16.password
762 })
763 const user16Id = resUser.body.user.id
764
765 accessToken = await userLogin(server, user16)
766
767 await getMyUserInformation(server.url, accessToken, 200)
768 await blockUser(server.url, user16Id, server.accessToken)
769
770 await getMyUserInformation(server.url, accessToken, 401)
771 await userLogin(server, user16, 400)
772
773 await unblockUser(server.url, user16Id, server.accessToken)
774 accessToken = await userLogin(server, user16)
775 await getMyUserInformation(server.url, accessToken, 200)
776 })
777 })
778
779 after(async function () {
780 await cleanupTests([ server ])
781 })
782 })