aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/tests/api/users
diff options
context:
space:
mode:
Diffstat (limited to 'server/tests/api/users')
-rw-r--r--server/tests/api/users/blocklist.ts6
-rw-r--r--server/tests/api/users/user-subscriptions.ts2
-rw-r--r--server/tests/api/users/users-multiple-servers.ts7
-rw-r--r--server/tests/api/users/users.ts892
4 files changed, 486 insertions, 421 deletions
diff --git a/server/tests/api/users/blocklist.ts b/server/tests/api/users/blocklist.ts
index 4bca27a94..638a443ba 100644
--- a/server/tests/api/users/blocklist.ts
+++ b/server/tests/api/users/blocklist.ts
@@ -86,7 +86,7 @@ describe('Test blocklist', function () {
86 86
87 { 87 {
88 const user = { username: 'user1', password: 'password' } 88 const user = { username: 'user1', password: 'password' }
89 await createUser(servers[0].url, servers[0].accessToken, user.username, user.password) 89 await createUser({ url: servers[ 0 ].url, accessToken: servers[ 0 ].accessToken, username: user.username, password: user.password })
90 90
91 userToken1 = await userLogin(servers[0], user) 91 userToken1 = await userLogin(servers[0], user)
92 await uploadVideo(servers[0].url, userToken1, { name: 'video user 1' }) 92 await uploadVideo(servers[0].url, userToken1, { name: 'video user 1' })
@@ -94,14 +94,14 @@ describe('Test blocklist', function () {
94 94
95 { 95 {
96 const user = { username: 'moderator', password: 'password' } 96 const user = { username: 'moderator', password: 'password' }
97 await createUser(servers[0].url, servers[0].accessToken, user.username, user.password) 97 await createUser({ url: servers[ 0 ].url, accessToken: servers[ 0 ].accessToken, username: user.username, password: user.password })
98 98
99 userModeratorToken = await userLogin(servers[0], user) 99 userModeratorToken = await userLogin(servers[0], user)
100 } 100 }
101 101
102 { 102 {
103 const user = { username: 'user2', password: 'password' } 103 const user = { username: 'user2', password: 'password' }
104 await createUser(servers[1].url, servers[1].accessToken, user.username, user.password) 104 await createUser({ url: servers[ 1 ].url, accessToken: servers[ 1 ].accessToken, username: user.username, password: user.password })
105 105
106 userToken2 = await userLogin(servers[1], user) 106 userToken2 = await userLogin(servers[1], user)
107 await uploadVideo(servers[1].url, userToken2, { name: 'video user 2' }) 107 await uploadVideo(servers[1].url, userToken2, { name: 'video user 2' })
diff --git a/server/tests/api/users/user-subscriptions.ts b/server/tests/api/users/user-subscriptions.ts
index 88a7187d6..037a79a76 100644
--- a/server/tests/api/users/user-subscriptions.ts
+++ b/server/tests/api/users/user-subscriptions.ts
@@ -45,7 +45,7 @@ describe('Test users subscriptions', function () {
45 { 45 {
46 for (const server of servers) { 46 for (const server of servers) {
47 const user = { username: 'user' + server.serverNumber, password: 'password' } 47 const user = { username: 'user' + server.serverNumber, password: 'password' }
48 await createUser(server.url, server.accessToken, user.username, user.password) 48 await createUser({ url: server.url, accessToken: server.accessToken, username: user.username, password: user.password })
49 49
50 const accessToken = await userLogin(server, user) 50 const accessToken = await userLogin(server, user)
51 users.push({ accessToken }) 51 users.push({ accessToken })
diff --git a/server/tests/api/users/users-multiple-servers.ts b/server/tests/api/users/users-multiple-servers.ts
index c46c2b7d7..0510b2de9 100644
--- a/server/tests/api/users/users-multiple-servers.ts
+++ b/server/tests/api/users/users-multiple-servers.ts
@@ -57,7 +57,12 @@ describe('Test users with multiple servers', function () {
57 username: 'user1', 57 username: 'user1',
58 password: 'password' 58 password: 'password'
59 } 59 }
60 const res = await createUser(servers[ 0 ].url, servers[ 0 ].accessToken, user.username, user.password) 60 const res = await createUser({
61 url: servers[ 0 ].url,
62 accessToken: servers[ 0 ].accessToken,
63 username: user.username,
64 password: user.password
65 })
61 userId = res.body.user.id 66 userId = res.body.user.id
62 userAccessToken = await userLogin(servers[ 0 ], user) 67 userAccessToken = await userLogin(servers[ 0 ], user)
63 } 68 }
diff --git a/server/tests/api/users/users.ts b/server/tests/api/users/users.ts
index 6e7de9c38..13511e070 100644
--- a/server/tests/api/users/users.ts
+++ b/server/tests/api/users/users.ts
@@ -37,6 +37,7 @@ import {
37import { follow } from '../../../../shared/utils/server/follows' 37import { follow } from '../../../../shared/utils/server/follows'
38import { setAccessTokensToServers } from '../../../../shared/utils/users/login' 38import { setAccessTokensToServers } from '../../../../shared/utils/users/login'
39import { getMyVideos } from '../../../../shared/utils/videos/videos' 39import { getMyVideos } from '../../../../shared/utils/videos/videos'
40import { UserAdminFlag } from '../../../../shared/models/users/user-flag.model'
40 41
41const expect = chai.expect 42const expect = chai.expect
42 43
@@ -60,563 +61,622 @@ describe('Test users', function () {
60 await setAccessTokensToServers([ server ]) 61 await setAccessTokensToServers([ server ])
61 }) 62 })
62 63
63 it('Should create a new client') 64 describe('OAuth client', function () {
65 it('Should create a new client')
64 66
65 it('Should return the first client') 67 it('Should return the first client')
66 68
67 it('Should remove the last client') 69 it('Should remove the last client')
68 70
69 it('Should not login with an invalid client id', async function () { 71 it('Should not login with an invalid client id', async function () {
70 const client = { id: 'client', secret: server.client.secret } 72 const client = { id: 'client', secret: server.client.secret }
71 const res = await login(server.url, client, server.user, 400) 73 const res = await login(server.url, client, server.user, 400)
72 74
73 expect(res.body.error).to.contain('client is invalid') 75 expect(res.body.error).to.contain('client is invalid')
74 }) 76 })
75 77
76 it('Should not login with an invalid client secret', async function () { 78 it('Should not login with an invalid client secret', async function () {
77 const client = { id: server.client.id, secret: 'coucou' } 79 const client = { id: server.client.id, secret: 'coucou' }
78 const res = await login(server.url, client, server.user, 400) 80 const res = await login(server.url, client, server.user, 400)
79 81
80 expect(res.body.error).to.contain('client is invalid') 82 expect(res.body.error).to.contain('client is invalid')
83 })
81 }) 84 })
82 85
83 it('Should not login with an invalid username', async function () { 86 describe('Login', function () {
84 const user = { username: 'captain crochet', password: server.user.password }
85 const res = await login(server.url, server.client, user, 400)
86
87 expect(res.body.error).to.contain('credentials are invalid')
88 })
89 87
90 it('Should not login with an invalid password', async function () { 88 it('Should not login with an invalid username', async function () {
91 const user = { username: server.user.username, password: 'mew_three' } 89 const user = { username: 'captain crochet', password: server.user.password }
92 const res = await login(server.url, server.client, user, 400) 90 const res = await login(server.url, server.client, user, 400)
93 91
94 expect(res.body.error).to.contain('credentials are invalid') 92 expect(res.body.error).to.contain('credentials are invalid')
95 }) 93 })
96 94
97 it('Should not be able to upload a video', async function () { 95 it('Should not login with an invalid password', async function () {
98 accessToken = 'my_super_token' 96 const user = { username: server.user.username, password: 'mew_three' }
97 const res = await login(server.url, server.client, user, 400)
99 98
100 const videoAttributes = {} 99 expect(res.body.error).to.contain('credentials are invalid')
101 await uploadVideo(server.url, accessToken, videoAttributes, 401) 100 })
102 })
103 101
104 it('Should not be able to follow', async function () { 102 it('Should not be able to upload a video', async function () {
105 accessToken = 'my_super_token' 103 accessToken = 'my_super_token'
106 await follow(server.url, [ 'http://example.com' ], accessToken, 401)
107 })
108 104
109 it('Should not be able to unfollow') 105 const videoAttributes = {}
106 await uploadVideo(server.url, accessToken, videoAttributes, 401)
107 })
110 108
111 it('Should be able to login', async function () { 109 it('Should not be able to follow', async function () {
112 const res = await login(server.url, server.client, server.user, 200) 110 accessToken = 'my_super_token'
111 await follow(server.url, [ 'http://example.com' ], accessToken, 401)
112 })
113 113
114 accessToken = res.body.access_token 114 it('Should not be able to unfollow')
115 })
116 115
117 it('Should upload the video with the correct token', async function () { 116 it('Should be able to login', async function () {
118 const videoAttributes = {} 117 const res = await login(server.url, server.client, server.user, 200)
119 await uploadVideo(server.url, accessToken, videoAttributes)
120 const res = await getVideosList(server.url)
121 const video = res.body.data[ 0 ]
122 118
123 expect(video.account.name).to.equal('root') 119 accessToken = res.body.access_token
124 videoId = video.id 120 })
125 }) 121 })
126 122
127 it('Should upload the video again with the correct token', async function () { 123 describe('Upload', function () {
128 const videoAttributes = {}
129 await uploadVideo(server.url, accessToken, videoAttributes)
130 })
131 124
132 it('Should retrieve a video rating', async function () { 125 it('Should upload the video with the correct token', async function () {
133 await rateVideo(server.url, accessToken, videoId, 'like') 126 const videoAttributes = {}
134 const res = await getMyUserVideoRating(server.url, accessToken, videoId) 127 await uploadVideo(server.url, accessToken, videoAttributes)
135 const rating = res.body 128 const res = await getVideosList(server.url)
129 const video = res.body.data[ 0 ]
136 130
137 expect(rating.videoId).to.equal(videoId) 131 expect(video.account.name).to.equal('root')
138 expect(rating.rating).to.equal('like') 132 videoId = video.id
133 })
134
135 it('Should upload the video again with the correct token', async function () {
136 const videoAttributes = {}
137 await uploadVideo(server.url, accessToken, videoAttributes)
138 })
139 }) 139 })
140 140
141 it('Should retrieve ratings list', async function () { 141 describe('Ratings', function () {
142 await rateVideo(server.url, accessToken, videoId, 'like')
143 142
144 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, null, 200) 143 it('Should retrieve a video rating', async function () {
145 const ratings = res.body 144 await rateVideo(server.url, accessToken, videoId, 'like')
145 const res = await getMyUserVideoRating(server.url, accessToken, videoId)
146 const rating = res.body
146 147
147 expect(ratings.total).to.equal(1) 148 expect(rating.videoId).to.equal(videoId)
148 expect(ratings.data[0].video.id).to.equal(videoId) 149 expect(rating.rating).to.equal('like')
149 expect(ratings.data[0].rating).to.equal('like') 150 })
150 })
151 151
152 it('Should retrieve ratings list by rating type', async function () { 152 it('Should retrieve ratings list', async function () {
153 { 153 await rateVideo(server.url, accessToken, videoId, 'like')
154 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 'like')
155 const ratings = res.body
156 expect(ratings.data.length).to.equal(1)
157 }
158 154
159 { 155 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, null, 200)
160 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 'dislike')
161 const ratings = res.body 156 const ratings = res.body
162 expect(ratings.data.length).to.equal(0)
163 }
164 })
165
166 it('Should not be able to remove the video with an incorrect token', async function () {
167 await removeVideo(server.url, 'bad_token', videoId, 401)
168 })
169 157
170 it('Should not be able to remove the video with the token of another account') 158 expect(ratings.total).to.equal(1)
159 expect(ratings.data[ 0 ].video.id).to.equal(videoId)
160 expect(ratings.data[ 0 ].rating).to.equal('like')
161 })
171 162
172 it('Should be able to remove the video with the correct token', async function () { 163 it('Should retrieve ratings list by rating type', async function () {
173 await removeVideo(server.url, accessToken, videoId) 164 {
165 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 'like')
166 const ratings = res.body
167 expect(ratings.data.length).to.equal(1)
168 }
169
170 {
171 const res = await getAccountRatings(server.url, server.user.username, server.accessToken, 'dislike')
172 const ratings = res.body
173 expect(ratings.data.length).to.equal(0)
174 }
175 })
174 }) 176 })
175 177
176 it('Should logout (revoke token)') 178 describe('Remove video', function () {
177 179 it('Should not be able to remove the video with an incorrect token', async function () {
178 it('Should not be able to get the user information') 180 await removeVideo(server.url, 'bad_token', videoId, 401)
179 181 })
180 it('Should not be able to upload a video')
181
182 it('Should not be able to remove a video')
183 182
184 it('Should not be able to rate a video', async function () { 183 it('Should not be able to remove the video with the token of another account')
185 const path = '/api/v1/videos/'
186 const data = {
187 rating: 'likes'
188 }
189 184
190 const options = { 185 it('Should be able to remove the video with the correct token', async function () {
191 url: server.url, 186 await removeVideo(server.url, accessToken, videoId)
192 path: path + videoId, 187 })
193 token: 'wrong token',
194 fields: data,
195 statusCodeExpected: 401
196 }
197 await makePutBodyRequest(options)
198 }) 188 })
199 189
200 it('Should be able to login again') 190 describe('Logout', function () {
191 it('Should logout (revoke token)')
201 192
202 it('Should have an expired access token') 193 it('Should not be able to get the user information')
203 194
204 it('Should refresh the token') 195 it('Should not be able to upload a video')
205 196
206 it('Should be able to upload a video again') 197 it('Should not be able to remove a video')
207 198
208 it('Should be able to create a new user', async function () { 199 it('Should not be able to rate a video', async function () {
209 await createUser(server.url, accessToken, user.username, user.password, 2 * 1024 * 1024) 200 const path = '/api/v1/videos/'
210 }) 201 const data = {
202 rating: 'likes'
203 }
211 204
212 it('Should be able to login with this user', async function () { 205 const options = {
213 accessTokenUser = await userLogin(server, user) 206 url: server.url,
214 }) 207 path: path + videoId,
208 token: 'wrong token',
209 fields: data,
210 statusCodeExpected: 401
211 }
212 await makePutBodyRequest(options)
213 })
215 214
216 it('Should be able to get the user information', async function () { 215 it('Should be able to login again')
217 const res = await getMyUserInformation(server.url, accessTokenUser)
218 const user = res.body
219
220 expect(user.username).to.equal('user_1')
221 expect(user.email).to.equal('user_1@example.com')
222 expect(user.nsfwPolicy).to.equal('display')
223 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
224 expect(user.roleLabel).to.equal('User')
225 expect(user.id).to.be.a('number')
226 expect(user.account.displayName).to.equal('user_1')
227 expect(user.account.description).to.be.null
228 })
229 216
230 it('Should be able to upload a video with this user', async function () { 217 it('Should have an expired access token')
231 this.timeout(5000)
232 218
233 const videoAttributes = { 219 it('Should refresh the token')
234 name: 'super user video', 220
235 fixture: 'video_short.webm' 221 it('Should be able to upload a video again')
236 }
237 await uploadVideo(server.url, accessTokenUser, videoAttributes)
238 }) 222 })
239 223
240 it('Should have video quota updated', async function () { 224 describe('Creating a user', function () {
241 const res = await getMyUserVideoQuotaUsed(server.url, accessTokenUser)
242 const data = res.body
243 225
244 expect(data.videoQuotaUsed).to.equal(218910) 226 it('Should be able to create a new user', async function () {
227 await createUser({
228 url: server.url,
229 accessToken: accessToken,
230 username: user.username,
231 password: user.password,
232 videoQuota: 2 * 1024 * 1024,
233 adminFlags: UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST
234 })
235 })
245 236
246 const resUsers = await getUsersList(server.url, server.accessToken) 237 it('Should be able to login with this user', async function () {
238 accessTokenUser = await userLogin(server, user)
239 })
247 240
248 const users: User[] = resUsers.body.data 241 it('Should be able to get user information', async function () {
249 const tmpUser = users.find(u => u.username === user.username) 242 const res1 = await getMyUserInformation(server.url, accessTokenUser)
250 expect(tmpUser.videoQuotaUsed).to.equal(218910) 243 const userMe: User = res1.body
244
245 const res2 = await getUserInformation(server.url, server.accessToken, userMe.id)
246 const userGet: User = res2.body
247
248 for (const user of [ userMe, userGet ]) {
249 expect(user.username).to.equal('user_1')
250 expect(user.email).to.equal('user_1@example.com')
251 expect(user.nsfwPolicy).to.equal('display')
252 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
253 expect(user.roleLabel).to.equal('User')
254 expect(user.id).to.be.a('number')
255 expect(user.account.displayName).to.equal('user_1')
256 expect(user.account.description).to.be.null
257 }
258
259 expect(userMe.adminFlags).to.be.undefined
260 expect(userGet.adminFlags).to.equal(UserAdminFlag.BY_PASS_VIDEO_AUTO_BLACKLIST)
261 })
251 }) 262 })
252 263
253 it('Should be able to list my videos', async function () { 264 describe('My videos & quotas', function () {
254 const res = await getMyVideos(server.url, accessTokenUser, 0, 5)
255 expect(res.body.total).to.equal(1)
256
257 const videos = res.body.data
258 expect(videos).to.have.lengthOf(1)
259 265
260 expect(videos[ 0 ].name).to.equal('super user video') 266 it('Should be able to upload a video with this user', async function () {
261 }) 267 this.timeout(5000)
262
263 it('Should list all the users', async function () {
264 const res = await getUsersList(server.url, server.accessToken)
265 const result = res.body
266 const total = result.total
267 const users = result.data
268 268
269 expect(total).to.equal(2) 269 const videoAttributes = {
270 expect(users).to.be.an('array') 270 name: 'super user video',
271 expect(users.length).to.equal(2) 271 fixture: 'video_short.webm'
272 }
273 await uploadVideo(server.url, accessTokenUser, videoAttributes)
274 })
272 275
273 const user = users[ 0 ] 276 it('Should have video quota updated', async function () {
274 expect(user.username).to.equal('user_1') 277 const res = await getMyUserVideoQuotaUsed(server.url, accessTokenUser)
275 expect(user.email).to.equal('user_1@example.com') 278 const data = res.body
276 expect(user.nsfwPolicy).to.equal('display')
277 279
278 const rootUser = users[ 1 ] 280 expect(data.videoQuotaUsed).to.equal(218910)
279 expect(rootUser.username).to.equal('root')
280 expect(rootUser.email).to.equal('admin1@example.com')
281 expect(user.nsfwPolicy).to.equal('display')
282 281
283 userId = user.id 282 const resUsers = await getUsersList(server.url, server.accessToken)
284 })
285 283
286 it('Should list only the first user by username asc', async function () { 284 const users: User[] = resUsers.body.data
287 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, 'username') 285 const tmpUser = users.find(u => u.username === user.username)
286 expect(tmpUser.videoQuotaUsed).to.equal(218910)
287 })
288 288
289 const result = res.body 289 it('Should be able to list my videos', async function () {
290 const total = result.total 290 const res = await getMyVideos(server.url, accessTokenUser, 0, 5)
291 const users = result.data 291 expect(res.body.total).to.equal(1)
292 292
293 expect(total).to.equal(2) 293 const videos = res.body.data
294 expect(users.length).to.equal(1) 294 expect(videos).to.have.lengthOf(1)
295 295
296 const user = users[ 0 ] 296 expect(videos[ 0 ].name).to.equal('super user video')
297 expect(user.username).to.equal('root') 297 })
298 expect(user.email).to.equal('admin1@example.com')
299 expect(user.roleLabel).to.equal('Administrator')
300 expect(user.nsfwPolicy).to.equal('display')
301 }) 298 })
302 299
303 it('Should list only the first user by username desc', async function () { 300 describe('Users listing', function () {
304 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, '-username')
305 const result = res.body
306 const total = result.total
307 const users = result.data
308 301
309 expect(total).to.equal(2) 302 it('Should list all the users', async function () {
310 expect(users.length).to.equal(1) 303 const res = await getUsersList(server.url, server.accessToken)
304 const result = res.body
305 const total = result.total
306 const users = result.data
311 307
312 const user = users[ 0 ] 308 expect(total).to.equal(2)
313 expect(user.username).to.equal('user_1') 309 expect(users).to.be.an('array')
314 expect(user.email).to.equal('user_1@example.com') 310 expect(users.length).to.equal(2)
315 expect(user.nsfwPolicy).to.equal('display')
316 })
317 311
318 it('Should list only the second user by createdAt desc', async function () { 312 const user = users[ 0 ]
319 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, '-createdAt') 313 expect(user.username).to.equal('user_1')
320 const result = res.body 314 expect(user.email).to.equal('user_1@example.com')
321 const total = result.total 315 expect(user.nsfwPolicy).to.equal('display')
322 const users = result.data
323 316
324 expect(total).to.equal(2) 317 const rootUser = users[ 1 ]
325 expect(users.length).to.equal(1) 318 expect(rootUser.username).to.equal('root')
319 expect(rootUser.email).to.equal('admin1@example.com')
320 expect(user.nsfwPolicy).to.equal('display')
326 321
327 const user = users[ 0 ] 322 userId = user.id
328 expect(user.username).to.equal('user_1') 323 })
329 expect(user.email).to.equal('user_1@example.com')
330 expect(user.nsfwPolicy).to.equal('display')
331 })
332 324
333 it('Should list all the users by createdAt asc', async function () { 325 it('Should list only the first user by username asc', async function () {
334 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt') 326 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, 'username')
335 const result = res.body
336 const total = result.total
337 const users = result.data
338 327
339 expect(total).to.equal(2) 328 const result = res.body
340 expect(users.length).to.equal(2) 329 const total = result.total
330 const users = result.data
341 331
342 expect(users[ 0 ].username).to.equal('root') 332 expect(total).to.equal(2)
343 expect(users[ 0 ].email).to.equal('admin1@example.com') 333 expect(users.length).to.equal(1)
344 expect(users[ 0 ].nsfwPolicy).to.equal('display')
345 334
346 expect(users[ 1 ].username).to.equal('user_1') 335 const user = users[ 0 ]
347 expect(users[ 1 ].email).to.equal('user_1@example.com') 336 expect(user.username).to.equal('root')
348 expect(users[ 1 ].nsfwPolicy).to.equal('display') 337 expect(user.email).to.equal('admin1@example.com')
349 }) 338 expect(user.roleLabel).to.equal('Administrator')
339 expect(user.nsfwPolicy).to.equal('display')
340 })
350 341
351 it('Should search user by username', async function () { 342 it('Should list only the first user by username desc', async function () {
352 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'oot') 343 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, '-username')
353 const users = res.body.data as User[] 344 const result = res.body
345 const total = result.total
346 const users = result.data
354 347
355 expect(res.body.total).to.equal(1) 348 expect(total).to.equal(2)
356 expect(users.length).to.equal(1) 349 expect(users.length).to.equal(1)
357 350
358 expect(users[ 0 ].username).to.equal('root') 351 const user = users[ 0 ]
359 }) 352 expect(user.username).to.equal('user_1')
353 expect(user.email).to.equal('user_1@example.com')
354 expect(user.nsfwPolicy).to.equal('display')
355 })
360 356
361 it('Should search user by email', async function () { 357 it('Should list only the second user by createdAt desc', async function () {
362 { 358 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 1, '-createdAt')
363 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'r_1@exam') 359 const result = res.body
364 const users = res.body.data as User[] 360 const total = result.total
361 const users = result.data
365 362
366 expect(res.body.total).to.equal(1) 363 expect(total).to.equal(2)
367 expect(users.length).to.equal(1) 364 expect(users.length).to.equal(1)
368 365
369 expect(users[ 0 ].username).to.equal('user_1') 366 const user = users[ 0 ]
370 expect(users[ 0 ].email).to.equal('user_1@example.com') 367 expect(user.username).to.equal('user_1')
371 } 368 expect(user.email).to.equal('user_1@example.com')
369 expect(user.nsfwPolicy).to.equal('display')
370 })
372 371
373 { 372 it('Should list all the users by createdAt asc', async function () {
374 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'example') 373 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt')
375 const users = res.body.data as User[] 374 const result = res.body
375 const total = result.total
376 const users = result.data
376 377
377 expect(res.body.total).to.equal(2) 378 expect(total).to.equal(2)
378 expect(users.length).to.equal(2) 379 expect(users.length).to.equal(2)
379 380
380 expect(users[ 0 ].username).to.equal('root') 381 expect(users[ 0 ].username).to.equal('root')
381 expect(users[ 1 ].username).to.equal('user_1') 382 expect(users[ 0 ].email).to.equal('admin1@example.com')
382 } 383 expect(users[ 0 ].nsfwPolicy).to.equal('display')
383 })
384 384
385 it('Should update my password', async function () { 385 expect(users[ 1 ].username).to.equal('user_1')
386 await updateMyUser({ 386 expect(users[ 1 ].email).to.equal('user_1@example.com')
387 url: server.url, 387 expect(users[ 1 ].nsfwPolicy).to.equal('display')
388 accessToken: accessTokenUser,
389 currentPassword: 'super password',
390 newPassword: 'new password'
391 }) 388 })
392 user.password = 'new password'
393 389
394 await userLogin(server, user, 200) 390 it('Should search user by username', async function () {
395 }) 391 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'oot')
392 const users = res.body.data as User[]
393
394 expect(res.body.total).to.equal(1)
395 expect(users.length).to.equal(1)
396 396
397 it('Should be able to change the NSFW display attribute', async function () { 397 expect(users[ 0 ].username).to.equal('root')
398 await updateMyUser({
399 url: server.url,
400 accessToken: accessTokenUser,
401 nsfwPolicy: 'do_not_list'
402 }) 398 })
403 399
404 const res = await getMyUserInformation(server.url, accessTokenUser) 400 it('Should search user by email', async function () {
405 const user = res.body 401 {
402 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'r_1@exam')
403 const users = res.body.data as User[]
406 404
407 expect(user.username).to.equal('user_1') 405 expect(res.body.total).to.equal(1)
408 expect(user.email).to.equal('user_1@example.com') 406 expect(users.length).to.equal(1)
409 expect(user.nsfwPolicy).to.equal('do_not_list')
410 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
411 expect(user.id).to.be.a('number')
412 expect(user.account.displayName).to.equal('user_1')
413 expect(user.account.description).to.be.null
414 })
415 407
416 it('Should be able to change the autoPlayVideo attribute', async function () { 408 expect(users[ 0 ].username).to.equal('user_1')
417 await updateMyUser({ 409 expect(users[ 0 ].email).to.equal('user_1@example.com')
418 url: server.url, 410 }
419 accessToken: accessTokenUser,
420 autoPlayVideo: false
421 })
422 411
423 const res = await getMyUserInformation(server.url, accessTokenUser) 412 {
424 const user = res.body 413 const res = await getUsersListPaginationAndSort(server.url, server.accessToken, 0, 2, 'createdAt', 'example')
414 const users = res.body.data as User[]
425 415
426 expect(user.autoPlayVideo).to.be.false 416 expect(res.body.total).to.equal(2)
427 }) 417 expect(users.length).to.equal(2)
428 418
429 it('Should be able to change the email display attribute', async function () { 419 expect(users[ 0 ].username).to.equal('root')
430 await updateMyUser({ 420 expect(users[ 1 ].username).to.equal('user_1')
431 url: server.url, 421 }
432 accessToken: accessTokenUser,
433 email: 'updated@example.com'
434 }) 422 })
435
436 const res = await getMyUserInformation(server.url, accessTokenUser)
437 const user = res.body
438
439 expect(user.username).to.equal('user_1')
440 expect(user.email).to.equal('updated@example.com')
441 expect(user.nsfwPolicy).to.equal('do_not_list')
442 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
443 expect(user.id).to.be.a('number')
444 expect(user.account.displayName).to.equal('user_1')
445 expect(user.account.description).to.be.null
446 }) 423 })
447 424
448 it('Should be able to update my avatar', async function () { 425 describe('Update my account', function () {
449 const fixture = 'avatar.png' 426 it('Should update my password', async function () {
427 await updateMyUser({
428 url: server.url,
429 accessToken: accessTokenUser,
430 currentPassword: 'super password',
431 newPassword: 'new password'
432 })
433 user.password = 'new password'
450 434
451 await updateMyAvatar({ 435 await userLogin(server, user, 200)
452 url: server.url,
453 accessToken: accessTokenUser,
454 fixture
455 }) 436 })
456 437
457 const res = await getMyUserInformation(server.url, accessTokenUser) 438 it('Should be able to change the NSFW display attribute', async function () {
458 const user = res.body 439 await updateMyUser({
440 url: server.url,
441 accessToken: accessTokenUser,
442 nsfwPolicy: 'do_not_list'
443 })
444
445 const res = await getMyUserInformation(server.url, accessTokenUser)
446 const user = res.body
447
448 expect(user.username).to.equal('user_1')
449 expect(user.email).to.equal('user_1@example.com')
450 expect(user.nsfwPolicy).to.equal('do_not_list')
451 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
452 expect(user.id).to.be.a('number')
453 expect(user.account.displayName).to.equal('user_1')
454 expect(user.account.description).to.be.null
455 })
459 456
460 await testImage(server.url, 'avatar-resized', user.account.avatar.path, '.png') 457 it('Should be able to change the autoPlayVideo attribute', async function () {
461 }) 458 await updateMyUser({
459 url: server.url,
460 accessToken: accessTokenUser,
461 autoPlayVideo: false
462 })
462 463
463 it('Should be able to update my display name', async function () { 464 const res = await getMyUserInformation(server.url, accessTokenUser)
464 await updateMyUser({ 465 const user = res.body
465 url: server.url, 466
466 accessToken: accessTokenUser, 467 expect(user.autoPlayVideo).to.be.false
467 displayName: 'new display name'
468 }) 468 })
469 469
470 const res = await getMyUserInformation(server.url, accessTokenUser) 470 it('Should be able to change the email display attribute', async function () {
471 const user = res.body 471 await updateMyUser({
472 url: server.url,
473 accessToken: accessTokenUser,
474 email: 'updated@example.com'
475 })
476
477 const res = await getMyUserInformation(server.url, accessTokenUser)
478 const user = res.body
479
480 expect(user.username).to.equal('user_1')
481 expect(user.email).to.equal('updated@example.com')
482 expect(user.nsfwPolicy).to.equal('do_not_list')
483 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
484 expect(user.id).to.be.a('number')
485 expect(user.account.displayName).to.equal('user_1')
486 expect(user.account.description).to.be.null
487 })
472 488
473 expect(user.username).to.equal('user_1') 489 it('Should be able to update my avatar', async function () {
474 expect(user.email).to.equal('updated@example.com') 490 const fixture = 'avatar.png'
475 expect(user.nsfwPolicy).to.equal('do_not_list')
476 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
477 expect(user.id).to.be.a('number')
478 expect(user.account.displayName).to.equal('new display name')
479 expect(user.account.description).to.be.null
480 })
481 491
482 it('Should be able to update my description', async function () { 492 await updateMyAvatar({
483 await updateMyUser({ 493 url: server.url,
484 url: server.url, 494 accessToken: accessTokenUser,
485 accessToken: accessTokenUser, 495 fixture
486 description: 'my super description updated' 496 })
487 })
488 497
489 const res = await getMyUserInformation(server.url, accessTokenUser) 498 const res = await getMyUserInformation(server.url, accessTokenUser)
490 const user = res.body 499 const user = res.body
491 500
492 expect(user.username).to.equal('user_1') 501 await testImage(server.url, 'avatar-resized', user.account.avatar.path, '.png')
493 expect(user.email).to.equal('updated@example.com') 502 })
494 expect(user.nsfwPolicy).to.equal('do_not_list') 503
495 expect(user.videoQuota).to.equal(2 * 1024 * 1024) 504 it('Should be able to update my display name', async function () {
496 expect(user.id).to.be.a('number') 505 await updateMyUser({
497 expect(user.account.displayName).to.equal('new display name') 506 url: server.url,
498 expect(user.account.description).to.equal('my super description updated') 507 accessToken: accessTokenUser,
499 }) 508 displayName: 'new display name'
509 })
510
511 const res = await getMyUserInformation(server.url, accessTokenUser)
512 const user = res.body
513
514 expect(user.username).to.equal('user_1')
515 expect(user.email).to.equal('updated@example.com')
516 expect(user.nsfwPolicy).to.equal('do_not_list')
517 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
518 expect(user.id).to.be.a('number')
519 expect(user.account.displayName).to.equal('new display name')
520 expect(user.account.description).to.be.null
521 })
500 522
501 it('Should be able to update another user', async function () { 523 it('Should be able to update my description', async function () {
502 await updateUser({ 524 await updateMyUser({
503 url: server.url, 525 url: server.url,
504 userId, 526 accessToken: accessTokenUser,
505 accessToken, 527 description: 'my super description updated'
506 email: 'updated2@example.com', 528 })
507 emailVerified: true, 529
508 videoQuota: 42, 530 const res = await getMyUserInformation(server.url, accessTokenUser)
509 role: UserRole.MODERATOR 531 const user = res.body
510 }) 532
511 533 expect(user.username).to.equal('user_1')
512 const res = await getUserInformation(server.url, accessToken, userId) 534 expect(user.email).to.equal('updated@example.com')
513 const user = res.body 535 expect(user.nsfwPolicy).to.equal('do_not_list')
514 536 expect(user.videoQuota).to.equal(2 * 1024 * 1024)
515 expect(user.username).to.equal('user_1') 537 expect(user.id).to.be.a('number')
516 expect(user.email).to.equal('updated2@example.com') 538 expect(user.account.displayName).to.equal('new display name')
517 expect(user.emailVerified).to.be.true 539 expect(user.account.description).to.equal('my super description updated')
518 expect(user.nsfwPolicy).to.equal('do_not_list') 540 })
519 expect(user.videoQuota).to.equal(42)
520 expect(user.roleLabel).to.equal('Moderator')
521 expect(user.id).to.be.a('number')
522 }) 541 })
523 542
524 it('Should have removed the user token', async function () { 543 describe('Updating another user', function () {
525 await getMyUserVideoQuotaUsed(server.url, accessTokenUser, 401) 544
545 it('Should be able to update another user', async function () {
546 await updateUser({
547 url: server.url,
548 userId,
549 accessToken,
550 email: 'updated2@example.com',
551 emailVerified: true,
552 videoQuota: 42,
553 role: UserRole.MODERATOR,
554 adminFlags: UserAdminFlag.NONE
555 })
556
557 const res = await getUserInformation(server.url, accessToken, userId)
558 const user = res.body
559
560 expect(user.username).to.equal('user_1')
561 expect(user.email).to.equal('updated2@example.com')
562 expect(user.emailVerified).to.be.true
563 expect(user.nsfwPolicy).to.equal('do_not_list')
564 expect(user.videoQuota).to.equal(42)
565 expect(user.roleLabel).to.equal('Moderator')
566 expect(user.id).to.be.a('number')
567 expect(user.adminFlags).to.equal(UserAdminFlag.NONE)
568 })
526 569
527 accessTokenUser = await userLogin(server, user) 570 it('Should have removed the user token', async function () {
528 }) 571 await getMyUserVideoQuotaUsed(server.url, accessTokenUser, 401)
529 572
530 it('Should be able to update another user password', async function () { 573 accessTokenUser = await userLogin(server, user)
531 await updateUser({
532 url: server.url,
533 userId,
534 accessToken,
535 password: 'password updated'
536 }) 574 })
537 575
538 await getMyUserVideoQuotaUsed(server.url, accessTokenUser, 401) 576 it('Should be able to update another user password', async function () {
577 await updateUser({
578 url: server.url,
579 userId,
580 accessToken,
581 password: 'password updated'
582 })
539 583
540 await userLogin(server, user, 400) 584 await getMyUserVideoQuotaUsed(server.url, accessTokenUser, 401)
541 585
542 user.password = 'password updated' 586 await userLogin(server, user, 400)
543 accessTokenUser = await userLogin(server, user)
544 })
545 587
546 it('Should be able to list video blacklist by a moderator', async function () { 588 user.password = 'password updated'
547 await getBlacklistedVideosList(server.url, accessTokenUser) 589 accessTokenUser = await userLogin(server, user)
590 })
548 }) 591 })
549 592
550 it('Should be able to remove this user', async function () { 593 describe('Video blacklists', function () {
551 await removeUser(server.url, userId, accessToken) 594 it('Should be able to list video blacklist by a moderator', async function () {
595 await getBlacklistedVideosList({ url: server.url, token: accessTokenUser })
596 })
552 }) 597 })
553 598
554 it('Should not be able to login with this user', async function () { 599 describe('Remove a user', function () {
555 await userLogin(server, user, 400) 600 it('Should be able to remove this user', async function () {
556 }) 601 await removeUser(server.url, userId, accessToken)
602 })
557 603
558 it('Should not have videos of this user', async function () { 604 it('Should not be able to login with this user', async function () {
559 const res = await getVideosList(server.url) 605 await userLogin(server, user, 400)
606 })
560 607
561 expect(res.body.total).to.equal(1) 608 it('Should not have videos of this user', async function () {
609 const res = await getVideosList(server.url)
562 610
563 const video = res.body.data[ 0 ] 611 expect(res.body.total).to.equal(1)
564 expect(video.account.name).to.equal('root')
565 })
566 612
567 it('Should register a new user', async function () { 613 const video = res.body.data[ 0 ]
568 await registerUser(server.url, 'user_15', 'my super password') 614 expect(video.account.name).to.equal('root')
615 })
569 }) 616 })
570 617
571 it('Should be able to login with this registered user', async function () { 618 describe('Registering a new user', function () {
572 const user15 = { 619 it('Should register a new user', async function () {
573 username: 'user_15', 620 await registerUser(server.url, 'user_15', 'my super password')
574 password: 'my super password' 621 })
575 }
576 622
577 accessToken = await userLogin(server, user15) 623 it('Should be able to login with this registered user', async function () {
578 }) 624 const user15 = {
625 username: 'user_15',
626 password: 'my super password'
627 }
579 628
580 it('Should have the correct video quota', async function () { 629 accessToken = await userLogin(server, user15)
581 const res = await getMyUserInformation(server.url, accessToken) 630 })
582 const user = res.body
583 631
584 expect(user.videoQuota).to.equal(5 * 1024 * 1024) 632 it('Should have the correct video quota', async function () {
585 }) 633 const res = await getMyUserInformation(server.url, accessToken)
634 const user = res.body
586 635
587 it('Should remove me', async function () { 636 expect(user.videoQuota).to.equal(5 * 1024 * 1024)
588 { 637 })
589 const res = await getUsersList(server.url, server.accessToken)
590 expect(res.body.data.find(u => u.username === 'user_15')).to.not.be.undefined
591 }
592 638
593 await deleteMe(server.url, accessToken) 639 it('Should remove me', async function () {
640 {
641 const res = await getUsersList(server.url, server.accessToken)
642 expect(res.body.data.find(u => u.username === 'user_15')).to.not.be.undefined
643 }
594 644
595 { 645 await deleteMe(server.url, accessToken)
596 const res = await getUsersList(server.url, server.accessToken) 646
597 expect(res.body.data.find(u => u.username === 'user_15')).to.be.undefined 647 {
598 } 648 const res = await getUsersList(server.url, server.accessToken)
649 expect(res.body.data.find(u => u.username === 'user_15')).to.be.undefined
650 }
651 })
599 }) 652 })
600 653
601 it('Should block and unblock a user', async function () { 654 describe('User blocking', function () {
602 const user16 = { 655 it('Should block and unblock a user', async function () {
603 username: 'user_16', 656 const user16 = {
604 password: 'my super password' 657 username: 'user_16',
605 } 658 password: 'my super password'
606 const resUser = await createUser(server.url, server.accessToken, user16.username, user16.password) 659 }
607 const user16Id = resUser.body.user.id 660 const resUser = await createUser({
661 url: server.url,
662 accessToken: server.accessToken,
663 username: user16.username,
664 password: user16.password
665 })
666 const user16Id = resUser.body.user.id
608 667
609 accessToken = await userLogin(server, user16) 668 accessToken = await userLogin(server, user16)
610 669
611 await getMyUserInformation(server.url, accessToken, 200) 670 await getMyUserInformation(server.url, accessToken, 200)
612 await blockUser(server.url, user16Id, server.accessToken) 671 await blockUser(server.url, user16Id, server.accessToken)
613 672
614 await getMyUserInformation(server.url, accessToken, 401) 673 await getMyUserInformation(server.url, accessToken, 401)
615 await userLogin(server, user16, 400) 674 await userLogin(server, user16, 400)
616 675
617 await unblockUser(server.url, user16Id, server.accessToken) 676 await unblockUser(server.url, user16Id, server.accessToken)
618 accessToken = await userLogin(server, user16) 677 accessToken = await userLogin(server, user16)
619 await getMyUserInformation(server.url, accessToken, 200) 678 await getMyUserInformation(server.url, accessToken, 200)
679 })
620 }) 680 })
621 681
622 after(async function () { 682 after(async function () {