1 /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
3 import * as chai from 'chai'
5 import { MyUser, User, UserRole, Video, VideoAbuseState, VideoAbuseUpdate, VideoPlaylistType } from '../../../../shared/index'
14 getBlacklistedVideosList,
17 getMyUserVideoQuotaUsed,
21 getUsersListPaginationAndSort,
29 registerUserWithChannel,
36 updateCustomSubConfig,
44 } from '../../../../shared/extra-utils'
45 import { follow } from '../../../../shared/extra-utils/server/follows'
46 import { logout, serverLogin, setAccessTokensToServers } from '../../../../shared/extra-utils/users/login'
47 import { getMyVideos } from '../../../../shared/extra-utils/videos/videos'
48 import { UserAdminFlag } from '../../../../shared/models/users/user-flag.model'
49 import { CustomConfig } from '@shared/models/server'
51 const expect = chai.expect
53 describe('Test users', function () {
54 let server: ServerInfo
55 let accessToken: string
56 let accessTokenUser: string
61 password: 'super password'
64 before(async function () {
67 server = await flushAndRunServer(1, {
75 await setAccessTokensToServers([ server ])
77 await installPlugin({ url: server.url, accessToken: server.accessToken, npmName: 'peertube-theme-background-red' })
80 describe('OAuth client', function () {
81 it('Should create a new client')
83 it('Should return the first client')
85 it('Should remove the last client')
87 it('Should not login with an invalid client id', async function () {
88 const client = { id: 'client', secret: server.client.secret }
89 const res = await login(server.url, client, server.user, 400)
91 expect(res.body.error).to.contain('client is invalid')
94 it('Should not login with an invalid client secret', async function () {
95 const client = { id: server.client.id, secret: 'coucou' }
96 const res = await login(server.url, client, server.user, 400)
98 expect(res.body.error).to.contain('client is invalid')
102 describe('Login', function () {
104 it('Should not login with an invalid username', async function () {
105 const user = { username: 'captain crochet', password: server.user.password }
106 const res = await login(server.url, server.client, user, 400)
108 expect(res.body.error).to.contain('credentials are invalid')
111 it('Should not login with an invalid password', async function () {
112 const user = { username: server.user.username, password: 'mew_three' }
113 const res = await login(server.url, server.client, user, 400)
115 expect(res.body.error).to.contain('credentials are invalid')
118 it('Should not be able to upload a video', async function () {
119 accessToken = 'my_super_token'
121 const videoAttributes = {}
122 await uploadVideo(server.url, accessToken, videoAttributes, 401)
125 it('Should not be able to follow', async function () {
126 accessToken = 'my_super_token'
127 await follow(server.url, [ 'http://example.com' ], accessToken, 401)
130 it('Should not be able to unfollow')
132 it('Should be able to login', async function () {
133 const res = await login(server.url, server.client, server.user, 200)
135 accessToken = res.body.access_token
138 it('Should be able to login with an insensitive username', async function () {
139 const user = { username: 'RoOt', password: server.user.password }
140 await login(server.url, server.client, user, 200)
142 const user2 = { username: 'rOoT', password: server.user.password }
143 await login(server.url, server.client, user2, 200)
145 const user3 = { username: 'ROOt', password: server.user.password }
146 await login(server.url, server.client, user3, 200)
150 describe('Upload', function () {
152 it('Should upload the video with the correct token', async function () {
153 const videoAttributes = {}
154 await uploadVideo(server.url, accessToken, videoAttributes)
155 const res = await getVideosList(server.url)
156 const video = res.body.data[0]
158 expect(video.account.name).to.equal('root')
162 it('Should upload the video again with the correct token', async function () {
163 const videoAttributes = {}
164 await uploadVideo(server.url, accessToken, videoAttributes)
168 describe('Ratings', function () {
170 it('Should retrieve a video rating', async function () {
171 await rateVideo(server.url, accessToken, videoId, 'like')
172 const res = await getMyUserVideoRating(server.url, accessToken, videoId)
173 const rating = res.body
175 expect(rating.videoId).to.equal(videoId)
176 expect(rating.rating).to.equal('like')
179 it('Should retrieve ratings list', async function () {
180 await rateVideo(server.url, accessToken, videoId, 'like')
182 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, null, 200)
183 const ratings = res.body
185 expect(ratings.total).to.equal(1)
186 expect(ratings.data[0].video.id).to.equal(videoId)
187 expect(ratings.data[0].rating).to.equal('like')
190 it('Should retrieve ratings list by rating type', async function () {
192 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 'like')
193 const ratings = res.body
194 expect(ratings.data.length).to.equal(1)
198 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 'dislike')
199 const ratings = res.body
200 expect(ratings.data.length).to.equal(0)
205 describe('Remove video', function () {
206 it('Should not be able to remove the video with an incorrect token', async function () {
207 await removeVideo(server.url, 'bad_token', videoId, 401)
210 it('Should not be able to remove the video with the token of another account')
212 it('Should be able to remove the video with the correct token', async function () {
213 await removeVideo(server.url, accessToken, videoId)
217 describe('Logout', function () {
218 it('Should logout (revoke token)', async function () {
219 await logout(server.url, server.accessToken)
222 it('Should not be able to get the user information', async function () {
223 await getMyUserInformation(server.url, server.accessToken, 401)
226 it('Should not be able to upload a video', async function () {
227 await uploadVideo(server.url, server.accessToken, { name: 'video' }, 401)
230 it('Should not be able to rate a video', async function () {
231 const path = '/api/v1/videos/'
238 path: path + videoId,
239 token: 'wrong token',
241 statusCodeExpected: 401
243 await makePutBodyRequest(options)
246 it('Should be able to login again', async function () {
247 server.accessToken = await serverLogin(server)
250 it('Should have an expired access token')
252 it('Should refresh the token')
254 it('Should be able to get my user information again', async function () {
255 await getMyUserInformation(server.url, server.accessToken)
259 describe('Creating a user', function () {
261 it('Should be able to create a new user', async function () {
264 accessToken: accessToken,
265 username: user.username,
266 password: user.password,
267 videoQuota: 2 * 1024 * 1024,
268 adminFlags: UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST
272 it('Should be able to login with this user', async function () {
273 accessTokenUser = await userLogin(server, user)
276 it('Should be able to get user information', async function () {
277 const res1 = await getMyUserInformation(server.url, accessTokenUser)
278 const userMe: MyUser = res1.body
280 const res2 = await getUserInformation(server.url, server.accessToken, userMe.id, true)
281 const userGet: User = res2.body
283 for (const user of [ userMe, userGet ]) {
284 expect(user.username).to.equal('user_1')
285 expect(user.email).to.equal('user_1@example.com')
286 expect(user.nsfwPolicy).to.equal('display')
287 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
288 expect(user.roleLabel).to.equal('User')
289 expect(user.id).to.be.a('number')
290 expect(user.account.displayName).to.equal('user_1')
291 expect(user.account.description).to.be.null
294 expect(userMe.adminFlags).to.be.undefined
295 expect(userGet.adminFlags).to.equal(UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST)
297 expect(userMe.specialPlaylists).to.have.lengthOf(1)
298 expect(userMe.specialPlaylists[0].type).to.equal(VideoPlaylistType.WATCH_LATER)
300 // Check stats are included with withStats
301 expect(userGet.videosCount).to.be.a('number')
302 expect(userGet.videosCount).to.equal(0)
303 expect(userGet.videoCommentsCount).to.be.a('number')
304 expect(userGet.videoCommentsCount).to.equal(0)
305 expect(userGet.videoAbusesCount).to.be.a('number')
306 expect(userGet.videoAbusesCount).to.equal(0)
307 expect(userGet.videoAbusesAcceptedCount).to.be.a('number')
308 expect(userGet.videoAbusesAcceptedCount).to.equal(0)
312 describe('My videos & quotas', function () {
314 it('Should be able to upload a video with this user', async function () {
317 const videoAttributes = {
318 name: 'super user video',
319 fixture: 'video_short.webm'
321 await uploadVideo(server.url, accessTokenUser, videoAttributes)
324 it('Should have video quota updated', async function () {
325 const res = await getMyUserVideoQuotaUsed(server.url, accessTokenUser)
326 const data = res.body
328 expect(data.videoQuotaUsed).to.equal(218910)
330 const resUsers = await getUsersList(server.url, server.accessToken)
332 const users: User[] = resUsers.body.data
333 const tmpUser = users.find(u => u.username === user.username)
334 expect(tmpUser.videoQuotaUsed).to.equal(218910)
337 it('Should be able to list my videos', async function () {
338 const res = await getMyVideos(server.url, accessTokenUser, 0, 5)
339 expect(res.body.total).to.equal(1)
341 const videos = res.body.data
342 expect(videos).to.have.lengthOf(1)
344 const video: Video = videos[0]
345 expect(video.name).to.equal('super user video')
346 expect(video.thumbnailPath).to.not.be.null
347 expect(video.previewPath).to.not.be.null
350 it('Should be able to search in my videos', async function () {
352 const res = await getMyVideos(server.url, accessTokenUser, 0, 5, '-createdAt', 'user video')
353 expect(res.body.total).to.equal(1)
355 const videos = res.body.data
356 expect(videos).to.have.lengthOf(1)
360 const res = await getMyVideos(server.url, accessTokenUser, 0, 5, '-createdAt', 'toto')
361 expect(res.body.total).to.equal(0)
363 const videos = res.body.data
364 expect(videos).to.have.lengthOf(0)
368 it('Should disable webtorrent, enable HLS, and update my quota', async function () {
372 const res = await getCustomConfig(server.url, server.accessToken)
373 const config = res.body as CustomConfig
374 config.transcoding.webtorrent.enabled = false
375 config.transcoding.hls.enabled = true
376 config.transcoding.enabled = true
377 await updateCustomSubConfig(server.url, server.accessToken, config)
381 const videoAttributes = {
382 name: 'super user video 2',
383 fixture: 'video_short.webm'
385 await uploadVideo(server.url, accessTokenUser, videoAttributes)
387 await waitJobs([ server ])
391 const res = await getMyUserVideoQuotaUsed(server.url, accessTokenUser)
392 const data = res.body
394 expect(data.videoQuotaUsed).to.be.greaterThan(220000)
399 describe('Users listing', function () {
401 it('Should list all the users', async function () {
402 const res = await getUsersList(server.url, server.accessToken)
403 const result = res.body
404 const total = result.total
405 const users = result.data
407 expect(total).to.equal(2)
408 expect(users).to.be.an('array')
409 expect(users.length).to.equal(2)
411 const user = users[0]
412 expect(user.username).to.equal('user_1')
413 expect(user.email).to.equal('user_1@example.com')
414 expect(user.nsfwPolicy).to.equal('display')
416 const rootUser = users[1]
417 expect(rootUser.username).to.equal('root')
418 expect(rootUser.email).to.equal('admin' + server.internalServerNumber + '@example.com')
419 expect(user.nsfwPolicy).to.equal('display')
424 it('Should list only the first user by username asc', async function () {
425 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, 'username')
427 const result = res.body
428 const total = result.total
429 const users = result.data
431 expect(total).to.equal(2)
432 expect(users.length).to.equal(1)
434 const user = users[0]
435 expect(user.username).to.equal('root')
436 expect(user.email).to.equal('admin' + server.internalServerNumber + '@example.com')
437 expect(user.roleLabel).to.equal('Administrator')
438 expect(user.nsfwPolicy).to.equal('display')
441 it('Should list only the first user by username desc', async function () {
442 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, '-username')
443 const result = res.body
444 const total = result.total
445 const users = result.data
447 expect(total).to.equal(2)
448 expect(users.length).to.equal(1)
450 const user = users[0]
451 expect(user.username).to.equal('user_1')
452 expect(user.email).to.equal('user_1@example.com')
453 expect(user.nsfwPolicy).to.equal('display')
456 it('Should list only the second user by createdAt desc', async function () {
457 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, '-createdAt')
458 const result = res.body
459 const total = result.total
460 const users = result.data
462 expect(total).to.equal(2)
463 expect(users.length).to.equal(1)
465 const user = users[0]
466 expect(user.username).to.equal('user_1')
467 expect(user.email).to.equal('user_1@example.com')
468 expect(user.nsfwPolicy).to.equal('display')
471 it('Should list all the users by createdAt asc', async function () {
472 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt')
473 const result = res.body
474 const total = result.total
475 const users = result.data
477 expect(total).to.equal(2)
478 expect(users.length).to.equal(2)
480 expect(users[0].username).to.equal('root')
481 expect(users[0].email).to.equal('admin' + server.internalServerNumber + '@example.com')
482 expect(users[0].nsfwPolicy).to.equal('display')
484 expect(users[1].username).to.equal('user_1')
485 expect(users[1].email).to.equal('user_1@example.com')
486 expect(users[1].nsfwPolicy).to.equal('display')
489 it('Should search user by username', async function () {
490 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'oot')
491 const users = res.body.data as User[]
493 expect(res.body.total).to.equal(1)
494 expect(users.length).to.equal(1)
496 expect(users[0].username).to.equal('root')
499 it('Should search user by email', async function () {
501 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'r_1@exam')
502 const users = res.body.data as User[]
504 expect(res.body.total).to.equal(1)
505 expect(users.length).to.equal(1)
507 expect(users[0].username).to.equal('user_1')
508 expect(users[0].email).to.equal('user_1@example.com')
512 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'example')
513 const users = res.body.data as User[]
515 expect(res.body.total).to.equal(2)
516 expect(users.length).to.equal(2)
518 expect(users[0].username).to.equal('root')
519 expect(users[1].username).to.equal('user_1')
524 describe('Update my account', function () {
525 it('Should update my password', async function () {
528 accessToken: accessTokenUser,
529 currentPassword: 'super password',
530 password: 'new password'
532 user.password = 'new password'
534 await userLogin(server, user, 200)
537 it('Should be able to change the NSFW display attribute', async function () {
540 accessToken: accessTokenUser,
541 nsfwPolicy: 'do_not_list'
544 const res = await getMyUserInformation(server.url, accessTokenUser)
545 const user = res.body
547 expect(user.username).to.equal('user_1')
548 expect(user.email).to.equal('user_1@example.com')
549 expect(user.nsfwPolicy).to.equal('do_not_list')
550 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
551 expect(user.id).to.be.a('number')
552 expect(user.account.displayName).to.equal('user_1')
553 expect(user.account.description).to.be.null
556 it('Should be able to change the autoPlayVideo attribute', async function () {
559 accessToken: accessTokenUser,
563 const res = await getMyUserInformation(server.url, accessTokenUser)
564 const user = res.body
566 expect(user.autoPlayVideo).to.be.false
569 it('Should be able to change the autoPlayNextVideo attribute', async function () {
572 accessToken: accessTokenUser,
573 autoPlayNextVideo: true
576 const res = await getMyUserInformation(server.url, accessTokenUser)
577 const user = res.body
579 expect(user.autoPlayNextVideo).to.be.true
582 it('Should be able to change the email attribute', async function () {
585 accessToken: accessTokenUser,
586 currentPassword: 'new password',
587 email: 'updated@example.com'
590 const res = await getMyUserInformation(server.url, accessTokenUser)
591 const user = res.body
593 expect(user.username).to.equal('user_1')
594 expect(user.email).to.equal('updated@example.com')
595 expect(user.nsfwPolicy).to.equal('do_not_list')
596 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
597 expect(user.id).to.be.a('number')
598 expect(user.account.displayName).to.equal('user_1')
599 expect(user.account.description).to.be.null
602 it('Should be able to update my avatar', async function () {
603 const fixture = 'avatar.png'
605 await updateMyAvatar({
607 accessToken: accessTokenUser,
611 const res = await getMyUserInformation(server.url, accessTokenUser)
612 const user = res.body
614 await testImage(server.url, 'avatar-resized', user.account.avatar.path, '.png')
617 it('Should be able to update my display name', async function () {
620 accessToken: accessTokenUser,
621 displayName: 'new display name'
624 const res = await getMyUserInformation(server.url, accessTokenUser)
625 const user = res.body
627 expect(user.username).to.equal('user_1')
628 expect(user.email).to.equal('updated@example.com')
629 expect(user.nsfwPolicy).to.equal('do_not_list')
630 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
631 expect(user.id).to.be.a('number')
632 expect(user.account.displayName).to.equal('new display name')
633 expect(user.account.description).to.be.null
636 it('Should be able to update my description', async function () {
639 accessToken: accessTokenUser,
640 description: 'my super description updated'
643 const res = await getMyUserInformation(server.url, accessTokenUser)
644 const user: User = res.body
646 expect(user.username).to.equal('user_1')
647 expect(user.email).to.equal('updated@example.com')
648 expect(user.nsfwPolicy).to.equal('do_not_list')
649 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
650 expect(user.id).to.be.a('number')
651 expect(user.account.displayName).to.equal('new display name')
652 expect(user.account.description).to.equal('my super description updated')
653 expect(user.noWelcomeModal).to.be.false
654 expect(user.noInstanceConfigWarningModal).to.be.false
657 it('Should be able to update my theme', async function () {
658 for (const theme of [ 'background-red', 'default', 'instance-default' ]) {
661 accessToken: accessTokenUser,
665 const res = await getMyUserInformation(server.url, accessTokenUser)
666 const body: User = res.body
668 expect(body.theme).to.equal(theme)
672 it('Should be able to update my modal preferences', async function () {
675 accessToken: accessTokenUser,
676 noInstanceConfigWarningModal: true,
680 const res = await getMyUserInformation(server.url, accessTokenUser)
681 const user: User = res.body
683 expect(user.noWelcomeModal).to.be.true
684 expect(user.noInstanceConfigWarningModal).to.be.true
688 describe('Updating another user', function () {
689 it('Should be able to update another user', async function () {
694 email: 'updated2@example.com',
697 role: UserRole.MODERATOR,
698 adminFlags: UserAdminFlag.NONE
701 const res = await getUserInformation(server.url, accessToken, userId)
702 const user = res.body
704 expect(user.username).to.equal('user_1')
705 expect(user.email).to.equal('updated2@example.com')
706 expect(user.emailVerified).to.be.true
707 expect(user.nsfwPolicy).to.equal('do_not_list')
708 expect(user.videoQuota).to.equal(42)
709 expect(user.roleLabel).to.equal('Moderator')
710 expect(user.id).to.be.a('number')
711 expect(user.adminFlags).to.equal(UserAdminFlag.NONE)
714 it('Should have removed the user token', async function () {
715 await getMyUserVideoQuotaUsed(server.url, accessTokenUser, 401)
717 accessTokenUser = await userLogin(server, user)
720 it('Should be able to update another user password', async function () {
725 password: 'password updated'
728 await getMyUserVideoQuotaUsed(server.url, accessTokenUser, 401)
730 await userLogin(server, user, 400)
732 user.password = 'password updated'
733 accessTokenUser = await userLogin(server, user)
737 describe('Video blacklists', function () {
738 it('Should be able to list video blacklist by a moderator', async function () {
739 await getBlacklistedVideosList({ url: server.url, token: accessTokenUser })
743 describe('Remove a user', function () {
744 it('Should be able to remove this user', async function () {
745 await removeUser(server.url, userId, accessToken)
748 it('Should not be able to login with this user', async function () {
749 await userLogin(server, user, 400)
752 it('Should not have videos of this user', async function () {
753 const res = await getVideosList(server.url)
755 expect(res.body.total).to.equal(1)
757 const video = res.body.data[0]
758 expect(video.account.name).to.equal('root')
762 describe('Registering a new user', function () {
763 let user15AccessToken
765 it('Should register a new user', async function () {
766 const user = { displayName: 'super user 15', username: 'user_15', password: 'my super password' }
767 const channel = { name: 'my_user_15_channel', displayName: 'my channel rocks' }
769 await registerUserWithChannel({ url: server.url, user, channel })
772 it('Should be able to login with this registered user', async function () {
775 password: 'my super password'
778 user15AccessToken = await userLogin(server, user15)
781 it('Should have the correct display name', async function () {
782 const res = await getMyUserInformation(server.url, user15AccessToken)
783 const user: User = res.body
785 expect(user.account.displayName).to.equal('super user 15')
788 it('Should have the correct video quota', async function () {
789 const res = await getMyUserInformation(server.url, user15AccessToken)
790 const user = res.body
792 expect(user.videoQuota).to.equal(5 * 1024 * 1024)
795 it('Should have created the channel', async function () {
796 const res = await getVideoChannel(server.url, 'my_user_15_channel')
798 expect(res.body.displayName).to.equal('my channel rocks')
801 it('Should remove me', async function () {
803 const res = await getUsersList(server.url, server.accessToken)
804 expect(res.body.data.find(u => u.username === 'user_15')).to.not.be.undefined
807 await deleteMe(server.url, user15AccessToken)
810 const res = await getUsersList(server.url, server.accessToken)
811 expect(res.body.data.find(u => u.username === 'user_15')).to.be.undefined
816 describe('User blocking', function () {
818 let user16AccessToken
820 it('Should block and unblock a user', async function () {
823 password: 'my super password'
825 const resUser = await createUser({
827 accessToken: server.accessToken,
828 username: user16.username,
829 password: user16.password
831 user16Id = resUser.body.user.id
833 user16AccessToken = await userLogin(server, user16)
835 await getMyUserInformation(server.url, user16AccessToken, 200)
836 await blockUser(server.url, user16Id, server.accessToken)
838 await getMyUserInformation(server.url, user16AccessToken, 401)
839 await userLogin(server, user16, 400)
841 await unblockUser(server.url, user16Id, server.accessToken)
842 user16AccessToken = await userLogin(server, user16)
843 await getMyUserInformation(server.url, user16AccessToken, 200)
847 describe('User stats', function () {
849 let user17AccessToken
851 it('Should report correct initial statistics about a user', async function () {
854 password: 'my super password'
856 const resUser = await createUser({
858 accessToken: server.accessToken,
859 username: user17.username,
860 password: user17.password
863 user17Id = resUser.body.user.id
864 user17AccessToken = await userLogin(server, user17)
866 const res = await getUserInformation(server.url, server.accessToken, user17Id, true)
867 const user: User = res.body
869 expect(user.videosCount).to.equal(0)
870 expect(user.videoCommentsCount).to.equal(0)
871 expect(user.videoAbusesCount).to.equal(0)
872 expect(user.videoAbusesCreatedCount).to.equal(0)
873 expect(user.videoAbusesAcceptedCount).to.equal(0)
876 it('Should report correct videos count', async function () {
877 const videoAttributes = {
878 name: 'video to test user stats'
880 await uploadVideo(server.url, user17AccessToken, videoAttributes)
881 const res1 = await getVideosList(server.url)
882 videoId = res1.body.data.find(video => video.name === videoAttributes.name).id
884 const res2 = await getUserInformation(server.url, server.accessToken, user17Id, true)
885 const user: User = res2.body
887 expect(user.videosCount).to.equal(1)
890 it('Should report correct video comments for user', async function () {
891 const text = 'super comment'
892 await addVideoCommentThread(server.url, user17AccessToken, videoId, text)
894 const res = await getUserInformation(server.url, server.accessToken, user17Id, true)
895 const user: User = res.body
897 expect(user.videoCommentsCount).to.equal(1)
900 it('Should report correct video abuses counts', async function () {
901 const reason = 'my super bad reason'
902 await reportVideoAbuse(server.url, user17AccessToken, videoId, reason)
904 const res1 = await getVideoAbusesList({ url: server.url, token: server.accessToken })
905 const abuseId = res1.body.data[0].id
907 const res2 = await getUserInformation(server.url, server.accessToken, user17Id, true)
908 const user2: User = res2.body
910 expect(user2.videoAbusesCount).to.equal(1) // number of incriminations
911 expect(user2.videoAbusesCreatedCount).to.equal(1) // number of reports created
913 const body: VideoAbuseUpdate = { state: VideoAbuseState.ACCEPTED }
914 await updateVideoAbuse(server.url, server.accessToken, videoId, abuseId, body)
916 const res3 = await getUserInformation(server.url, server.accessToken, user17Id, true)
917 const user3: User = res3.body
919 expect(user3.videoAbusesAcceptedCount).to.equal(1) // number of reports created accepted
923 after(async function () {
924 await cleanupTests([ server ])