]>
git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/tests/api/users.js
1 /* eslint-disable no-unused-expressions */
5 const chai
= require('chai')
6 const expect
= chai
.expect
7 const series
= require('async/series')
9 const loginUtils
= require('../utils/login')
10 const podsUtils
= require('../utils/pods')
11 const serversUtils
= require('../utils/servers')
12 const usersUtils
= require('../utils/users')
13 const requestsUtils
= require('../utils/requests')
14 const videosUtils
= require('../utils/videos')
16 describe('Test users', function () {
18 let accessToken
= null
19 let accessTokenUser
= null
23 before(function (done
) {
28 serversUtils
.flushTests(next
)
31 serversUtils
.runServer(1, function (server1
) {
39 it('Should create a new client')
41 it('Should return the first client')
43 it('Should remove the last client')
45 it('Should not login with an invalid client id', function (done
) {
46 const client
= { id: 'client', password: server
.client
.secret
}
47 loginUtils
.login(server
.url
, client
, server
.user
, 400, function (err
, res
) {
50 expect(res
.body
.error
).to
.equal('invalid_client')
55 it('Should not login with an invalid client password', function (done
) {
56 const client
= { id: server
.client
.id
, password: 'coucou' }
57 loginUtils
.login(server
.url
, client
, server
.user
, 400, function (err
, res
) {
60 expect(res
.body
.error
).to
.equal('invalid_client')
65 it('Should not login with an invalid username', function (done
) {
66 const user
= { username: 'captain crochet', password: server
.user
.password
}
67 loginUtils
.login(server
.url
, server
.client
, user
, 400, function (err
, res
) {
70 expect(res
.body
.error
).to
.equal('invalid_grant')
75 it('Should not login with an invalid password', function (done
) {
76 const user
= { username: server
.user
.username
, password: 'mewthree' }
77 loginUtils
.login(server
.url
, server
.client
, user
, 400, function (err
, res
) {
80 expect(res
.body
.error
).to
.equal('invalid_grant')
85 it('Should not be able to upload a video', function (done
) {
86 accessToken
= 'mysupertoken'
88 const videoAttributes
= {}
89 videosUtils
.uploadVideo(server
.url
, accessToken
, videoAttributes
, 401, done
)
92 it('Should not be able to make friends', function (done
) {
93 accessToken
= 'mysupertoken'
94 podsUtils
.makeFriends(server
.url
, accessToken
, 401, done
)
97 it('Should not be able to quit friends', function (done
) {
98 accessToken
= 'mysupertoken'
99 podsUtils
.quitFriends(server
.url
, accessToken
, 401, done
)
102 it('Should be able to login', function (done
) {
103 loginUtils
.login(server
.url
, server
.client
, server
.user
, 200, function (err
, res
) {
106 accessToken
= res
.body
.access_token
111 it('Should upload the video with the correct token', function (done
) {
112 const videoAttributes
= {}
113 videosUtils
.uploadVideo(server
.url
, accessToken
, videoAttributes
, 204, function (err
, res
) {
116 videosUtils
.getVideosList(server
.url
, function (err
, res
) {
119 const video
= res
.body
.data
[0]
120 expect(video
.author
).to
.equal('root')
128 it('Should upload the video again with the correct token', function (done
) {
129 const videoAttributes
= {}
130 videosUtils
.uploadVideo(server
.url
, accessToken
, videoAttributes
, 204, done
)
133 it('Should retrieve a video rating', function (done
) {
134 videosUtils
.rateVideo(server
.url
, accessToken
, videoId
, 'like', function (err
) {
137 usersUtils
.getUserVideoRating(server
.url
, accessToken
, videoId
, function (err
, res
) {
140 const rating
= res
.body
142 expect(rating
.videoId
).to
.equal(videoId
)
143 expect(rating
.rating
).to
.equal('like')
150 it('Should not be able to remove the video with an incorrect token', function (done
) {
151 videosUtils
.removeVideo(server
.url
, 'bad_token', videoId
, 401, done
)
154 it('Should not be able to remove the video with the token of another account')
156 it('Should be able to remove the video with the correct token', function (done
) {
157 videosUtils
.removeVideo(server
.url
, accessToken
, videoId
, done
)
160 it('Should logout (revoke token)')
162 it('Should not be able to get the user informations')
164 it('Should not be able to upload a video')
166 it('Should not be able to remove a video')
168 it('Should not be able to rate a video', function (done
) {
169 const path
= '/api/v1/videos/'
174 requestsUtils
.makePutBodyRequest(server
.url
, path
+ videoId
, 'wrong token', data
, done
, 401)
177 it('Should be able to login again')
179 it('Should have an expired access token')
181 it('Should refresh the token')
183 it('Should be able to upload a video again')
185 it('Should be able to create a new user', function (done
) {
186 usersUtils
.createUser(server
.url
, accessToken
, 'user_1', 'super password', done
)
189 it('Should be able to login with this user', function (done
) {
192 password: 'super password'
195 loginUtils
.loginAndGetAccessToken(server
, function (err
, token
) {
198 accessTokenUser
= token
204 it('Should be able to get the user informations', function (done
) {
205 usersUtils
.getUserInformation(server
.url
, accessTokenUser
, function (err
, res
) {
208 const user
= res
.body
210 expect(user
.username
).to
.equal('user_1')
211 expect(user
.email
).to
.equal('user_1@example.com')
212 expect(user
.displayNSFW
).to
.be
.false
213 expect(user
.id
).to
.exist
219 it('Should be able to upload a video with this user', function (done
) {
222 const videoAttributes
= {}
223 videosUtils
.uploadVideo(server
.url
, accessTokenUser
, videoAttributes
, done
)
226 it('Should list all the users', function (done
) {
227 usersUtils
.getUsersList(server
.url
, function (err
, res
) {
230 const result
= res
.body
231 const total
= result
.total
232 const users
= result
.data
234 expect(total
).to
.equal(2)
235 expect(users
).to
.be
.an('array')
236 expect(users
.length
).to
.equal(2)
238 const user
= users
[0]
239 expect(user
.username
).to
.equal('user_1')
240 expect(user
.email
).to
.equal('user_1@example.com')
241 expect(user
.displayNSFW
).to
.be
.false
243 const rootUser
= users
[1]
244 expect(rootUser
.username
).to
.equal('root')
245 expect(rootUser
.email
).to
.equal('admin1@example.com')
246 expect(rootUser
.displayNSFW
).to
.be
.false
254 it('Should list only the first user by username asc', function (done
) {
255 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 1, 'username', function (err
, res
) {
258 const result
= res
.body
259 const total
= result
.total
260 const users
= result
.data
262 expect(total
).to
.equal(2)
263 expect(users
.length
).to
.equal(1)
265 const user
= users
[0]
266 expect(user
.username
).to
.equal('root')
267 expect(user
.email
).to
.equal('admin1@example.com')
268 expect(user
.displayNSFW
).to
.be
.false
274 it('Should list only the first user by username desc', function (done
) {
275 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 1, '-username', function (err
, res
) {
278 const result
= res
.body
279 const total
= result
.total
280 const users
= result
.data
282 expect(total
).to
.equal(2)
283 expect(users
.length
).to
.equal(1)
285 const user
= users
[0]
286 expect(user
.username
).to
.equal('user_1')
287 expect(user
.email
).to
.equal('user_1@example.com')
288 expect(user
.displayNSFW
).to
.be
.false
294 it('Should list only the second user by createdAt desc', function (done
) {
295 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 1, '-createdAt', function (err
, res
) {
298 const result
= res
.body
299 const total
= result
.total
300 const users
= result
.data
302 expect(total
).to
.equal(2)
303 expect(users
.length
).to
.equal(1)
305 const user
= users
[0]
306 expect(user
.username
).to
.equal('user_1')
307 expect(user
.email
).to
.equal('user_1@example.com')
308 expect(user
.displayNSFW
).to
.be
.false
314 it('Should list all the users by createdAt asc', function (done
) {
315 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 2, 'createdAt', function (err
, res
) {
318 const result
= res
.body
319 const total
= result
.total
320 const users
= result
.data
322 expect(total
).to
.equal(2)
323 expect(users
.length
).to
.equal(2)
325 expect(users
[0].username
).to
.equal('root')
326 expect(users
[0].email
).to
.equal('admin1@example.com')
327 expect(users
[0].displayNSFW
).to
.be
.false
329 expect(users
[1].username
).to
.equal('user_1')
330 expect(users
[1].email
).to
.equal('user_1@example.com')
331 expect(users
[1].displayNSFW
).to
.be
.false
337 it('Should update the user password', function (done
) {
338 usersUtils
.updateUser(server
.url
, userId
, accessTokenUser
, 'new password', null, function (err
, res
) {
341 server
.user
.password
= 'new password'
342 loginUtils
.login(server
.url
, server
.client
, server
.user
, 200, done
)
346 it('Should be able to change the NSFW display attribute', function (done
) {
347 usersUtils
.updateUser(server
.url
, userId
, accessTokenUser
, null, true, function (err
, res
) {
350 usersUtils
.getUserInformation(server
.url
, accessTokenUser
, function (err
, res
) {
353 const user
= res
.body
355 expect(user
.username
).to
.equal('user_1')
356 expect(user
.email
).to
.equal('user_1@example.com')
357 expect(user
.displayNSFW
).to
.be
.ok
358 expect(user
.id
).to
.exist
365 it('Should be able to remove this user', function (done
) {
366 usersUtils
.removeUser(server
.url
, userId
, accessToken
, done
)
369 it('Should not be able to login with this user', function (done
) {
370 // server.user is already set to user 1
371 loginUtils
.login(server
.url
, server
.client
, server
.user
, 400, done
)
374 it('Should not have videos of this user', function (done
) {
375 videosUtils
.getVideosList(server
.url
, function (err
, res
) {
378 expect(res
.body
.total
).to
.equal(1)
379 const video
= res
.body
.data
[0]
380 expect(video
.author
).to
.equal('root')
386 it('Should register a new user', function (done
) {
387 usersUtils
.registerUser(server
.url
, 'user_15', 'my super password', done
)
390 it('Should be able to login with this registered user', function (done
) {
393 password: 'my super password'
396 loginUtils
.loginAndGetAccessToken(server
, done
)
399 after(function (done
) {
400 process
.kill(-server
.app
.pid
)
402 // Keep the logs if the test failed
404 serversUtils
.flushTests(done
)