]>
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 videosUtils
= require('../utils/videos')
15 describe('Test users', function () {
17 let accessToken
= null
18 let accessTokenUser
= null
22 before(function (done
) {
27 serversUtils
.flushTests(next
)
30 serversUtils
.runServer(1, function (server1
) {
38 it('Should create a new client')
40 it('Should return the first client')
42 it('Should remove the last client')
44 it('Should not login with an invalid client id', function (done
) {
45 const client
= { id: 'client', password: server
.client
.secret
}
46 loginUtils
.login(server
.url
, client
, server
.user
, 400, function (err
, res
) {
49 expect(res
.body
.error
).to
.equal('invalid_client')
54 it('Should not login with an invalid client password', function (done
) {
55 const client
= { id: server
.client
.id
, password: 'coucou' }
56 loginUtils
.login(server
.url
, client
, server
.user
, 400, function (err
, res
) {
59 expect(res
.body
.error
).to
.equal('invalid_client')
64 it('Should not login with an invalid username', function (done
) {
65 const user
= { username: 'captain crochet', password: server
.user
.password
}
66 loginUtils
.login(server
.url
, server
.client
, user
, 400, function (err
, res
) {
69 expect(res
.body
.error
).to
.equal('invalid_grant')
74 it('Should not login with an invalid password', function (done
) {
75 const user
= { username: server
.user
.username
, password: 'mewthree' }
76 loginUtils
.login(server
.url
, server
.client
, user
, 400, function (err
, res
) {
79 expect(res
.body
.error
).to
.equal('invalid_grant')
84 it('Should not be able to upload a video', function (done
) {
85 accessToken
= 'mysupertoken'
87 const name
= 'my super name'
88 const description
= 'my super description'
89 const tags
= [ 'tag1', 'tag2' ]
90 const video
= 'video_short.webm'
91 videosUtils
.uploadVideo(server
.url
, accessToken
, name
, description
, tags
, video
, 401, done
)
94 it('Should not be able to make friends', function (done
) {
95 accessToken
= 'mysupertoken'
96 podsUtils
.makeFriends(server
.url
, accessToken
, 401, done
)
99 it('Should not be able to quit friends', function (done
) {
100 accessToken
= 'mysupertoken'
101 podsUtils
.quitFriends(server
.url
, accessToken
, 401, done
)
104 it('Should be able to login', function (done
) {
105 loginUtils
.login(server
.url
, server
.client
, server
.user
, 200, function (err
, res
) {
108 accessToken
= res
.body
.access_token
113 it('Should upload the video with the correct token', function (done
) {
114 const name
= 'my super name'
115 const description
= 'my super description'
116 const tags
= [ 'tag1', 'tag2' ]
117 const video
= 'video_short.webm'
118 videosUtils
.uploadVideo(server
.url
, accessToken
, name
, description
, tags
, video
, 204, function (err
, res
) {
121 videosUtils
.getVideosList(server
.url
, function (err
, res
) {
124 const video
= res
.body
.data
[0]
125 expect(video
.author
).to
.equal('root')
133 it('Should upload the video again with the correct token', function (done
) {
134 const name
= 'my super name 2'
135 const description
= 'my super description 2'
136 const tags
= [ 'tag1' ]
137 const video
= 'video_short.webm'
138 videosUtils
.uploadVideo(server
.url
, accessToken
, name
, description
, tags
, video
, 204, done
)
141 it('Should not be able to remove the video with an incorrect token', function (done
) {
142 videosUtils
.removeVideo(server
.url
, 'bad_token', videoId
, 401, done
)
145 it('Should not be able to remove the video with the token of another account')
147 it('Should be able to remove the video with the correct token', function (done
) {
148 videosUtils
.removeVideo(server
.url
, accessToken
, videoId
, done
)
151 it('Should logout (revoke token)')
153 it('Should not be able to upload a video')
155 it('Should not be able to remove a video')
157 it('Should be able to login again')
159 it('Should have an expired access token')
161 it('Should refresh the token')
163 it('Should be able to upload a video again')
165 it('Should be able to create a new user', function (done
) {
166 usersUtils
.createUser(server
.url
, accessToken
, 'user_1', 'super password', done
)
169 it('Should be able to login with this user', function (done
) {
172 password: 'super password'
175 loginUtils
.loginAndGetAccessToken(server
, function (err
, token
) {
178 accessTokenUser
= token
184 it('Should be able to get the user informations', function (done
) {
185 usersUtils
.getUserInformation(server
.url
, accessTokenUser
, function (err
, res
) {
188 const user
= res
.body
190 expect(user
.username
).to
.equal('user_1')
191 expect(user
.email
).to
.equal('user_1@example.com')
192 expect(user
.id
).to
.exist
198 it('Should be able to upload a video with this user', function (done
) {
201 const name
= 'my super name'
202 const description
= 'my super description'
203 const tags
= [ 'tag1', 'tag2', 'tag3' ]
204 const file
= 'video_short.webm'
205 videosUtils
.uploadVideo(server
.url
, accessTokenUser
, name
, description
, tags
, file
, done
)
208 it('Should list all the users', function (done
) {
209 usersUtils
.getUsersList(server
.url
, function (err
, res
) {
212 const result
= res
.body
213 const total
= result
.total
214 const users
= result
.data
216 expect(total
).to
.equal(2)
217 expect(users
).to
.be
.an('array')
218 expect(users
.length
).to
.equal(2)
220 const user
= users
[0]
221 expect(user
.username
).to
.equal('user_1')
222 expect(user
.email
).to
.equal('user_1@example.com')
224 const rootUser
= users
[1]
225 expect(rootUser
.username
).to
.equal('root')
226 expect(rootUser
.email
).to
.equal('admin1@example.com')
233 it('Should list only the first user by username asc', function (done
) {
234 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 1, 'username', function (err
, res
) {
237 const result
= res
.body
238 const total
= result
.total
239 const users
= result
.data
241 expect(total
).to
.equal(2)
242 expect(users
.length
).to
.equal(1)
244 const user
= users
[0]
245 expect(user
.username
).to
.equal('root')
246 expect(user
.email
).to
.equal('admin1@example.com')
252 it('Should list only the first user by username desc', function (done
) {
253 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 1, '-username', function (err
, res
) {
256 const result
= res
.body
257 const total
= result
.total
258 const users
= result
.data
260 expect(total
).to
.equal(2)
261 expect(users
.length
).to
.equal(1)
263 const user
= users
[0]
264 expect(user
.username
).to
.equal('user_1')
265 expect(user
.email
).to
.equal('user_1@example.com')
271 it('Should list only the second user by createdAt desc', function (done
) {
272 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 1, '-createdAt', function (err
, res
) {
275 const result
= res
.body
276 const total
= result
.total
277 const users
= result
.data
279 expect(total
).to
.equal(2)
280 expect(users
.length
).to
.equal(1)
282 const user
= users
[0]
283 expect(user
.username
).to
.equal('user_1')
284 expect(user
.email
).to
.equal('user_1@example.com')
290 it('Should list all the users by createdAt asc', function (done
) {
291 usersUtils
.getUsersListPaginationAndSort(server
.url
, 0, 2, 'createdAt', function (err
, res
) {
294 const result
= res
.body
295 const total
= result
.total
296 const users
= result
.data
298 expect(total
).to
.equal(2)
299 expect(users
.length
).to
.equal(2)
301 expect(users
[0].username
).to
.equal('root')
302 expect(users
[0].email
).to
.equal('admin1@example.com')
303 expect(users
[1].username
).to
.equal('user_1')
304 expect(users
[1].email
).to
.equal('user_1@example.com')
310 it('Should update the user password', function (done
) {
311 usersUtils
.updateUser(server
.url
, userId
, accessTokenUser
, 'new password', function (err
, res
) {
314 server
.user
.password
= 'new password'
315 loginUtils
.login(server
.url
, server
.client
, server
.user
, 200, done
)
319 it('Should be able to remove this user', function (done
) {
320 usersUtils
.removeUser(server
.url
, userId
, accessToken
, done
)
323 it('Should not be able to login with this user', function (done
) {
324 // server.user is already set to user 1
325 loginUtils
.login(server
.url
, server
.client
, server
.user
, 400, done
)
328 it('Should not have videos of this user', function (done
) {
329 videosUtils
.getVideosList(server
.url
, function (err
, res
) {
332 expect(res
.body
.total
).to
.equal(1)
333 const video
= res
.body
.data
[0]
334 expect(video
.author
).to
.equal('root')
340 after(function (done
) {
341 process
.kill(-server
.app
.pid
)
343 // Keep the logs if the test failed
345 serversUtils
.flushTests(done
)