]>
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
.id
).to
.exist
218 it('Should be able to upload a video with this user', function (done
) {
221 const videoAttributes
= {}
222 videosUtils
.uploadVideo(server
.url
, accessTokenUser
, videoAttributes
, done
)
225 it('Should list all the users', function (done
) {
226 usersUtils
.getUsersList(server
.url
, function (err
, res
) {
229 const result
= res
.body
230 const total
= result
.total
231 const users
= result
.data
233 expect(total
).to
.equal(2)
234 expect(users
).to
.be
.an('array')
235 expect(users
.length
).to
.equal(2)
237 const user
= users
[0]
238 expect(user
.username
).to
.equal('user_1')
239 expect(user
.email
).to
.equal('user_1@example.com')
241 const rootUser
= users
[1]
242 expect(rootUser
.username
).to
.equal('root')
243 expect(rootUser
.email
).to
.equal('admin1@example.com')
250 it('Should list only the first user by username asc', function (done
) {
251 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 1, 'username', function (err
, res
) {
254 const result
= res
.body
255 const total
= result
.total
256 const users
= result
.data
258 expect(total
).to
.equal(2)
259 expect(users
.length
).to
.equal(1)
261 const user
= users
[0]
262 expect(user
.username
).to
.equal('root')
263 expect(user
.email
).to
.equal('admin1@example.com')
269 it('Should list only the first user by username desc', function (done
) {
270 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 1, '-username', function (err
, res
) {
273 const result
= res
.body
274 const total
= result
.total
275 const users
= result
.data
277 expect(total
).to
.equal(2)
278 expect(users
.length
).to
.equal(1)
280 const user
= users
[0]
281 expect(user
.username
).to
.equal('user_1')
282 expect(user
.email
).to
.equal('user_1@example.com')
288 it('Should list only the second user by createdAt desc', function (done
) {
289 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 1, '-createdAt', function (err
, res
) {
292 const result
= res
.body
293 const total
= result
.total
294 const users
= result
.data
296 expect(total
).to
.equal(2)
297 expect(users
.length
).to
.equal(1)
299 const user
= users
[0]
300 expect(user
.username
).to
.equal('user_1')
301 expect(user
.email
).to
.equal('user_1@example.com')
307 it('Should list all the users by createdAt asc', function (done
) {
308 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 2, 'createdAt', function (err
, res
) {
311 const result
= res
.body
312 const total
= result
.total
313 const users
= result
.data
315 expect(total
).to
.equal(2)
316 expect(users
.length
).to
.equal(2)
318 expect(users
[0].username
).to
.equal('root')
319 expect(users
[0].email
).to
.equal('admin1@example.com')
320 expect(users
[1].username
).to
.equal('user_1')
321 expect(users
[1].email
).to
.equal('user_1@example.com')
327 it('Should update the user password', function (done
) {
328 usersUtils
.updateUser(server
.url
, userId
, accessTokenUser
, 'new password', function (err
, res
) {
331 server
.user
.password
= 'new password'
332 loginUtils
.login(server
.url
, server
.client
, server
.user
, 200, done
)
336 it('Should be able to remove this user', function (done
) {
337 usersUtils
.removeUser(server
.url
, userId
, accessToken
, done
)
340 it('Should not be able to login with this user', function (done
) {
341 // server.user is already set to user 1
342 loginUtils
.login(server
.url
, server
.client
, server
.user
, 400, done
)
345 it('Should not have videos of this user', function (done
) {
346 videosUtils
.getVideosList(server
.url
, function (err
, res
) {
349 expect(res
.body
.total
).to
.equal(1)
350 const video
= res
.body
.data
[0]
351 expect(video
.author
).to
.equal('root')
357 after(function (done
) {
358 process
.kill(-server
.app
.pid
)
360 // Keep the logs if the test failed
362 serversUtils
.flushTests(done
)