]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/tests/api/users.js
Add email to users
[github/Chocobozzz/PeerTube.git] / server / tests / api / users.js
1 'use strict'
2
3 const chai = require('chai')
4 const expect = chai.expect
5 const series = require('async/series')
6
7 const loginUtils = require('../utils/login')
8 const podsUtils = require('../utils/pods')
9 const serversUtils = require('../utils/servers')
10 const usersUtils = require('../utils/users')
11 const videosUtils = require('../utils/videos')
12
13 describe('Test users', function () {
14 let server = null
15 let accessToken = null
16 let accessTokenUser = null
17 let videoId = null
18 let userId = null
19
20 before(function (done) {
21 this.timeout(20000)
22
23 series([
24 function (next) {
25 serversUtils.flushTests(next)
26 },
27 function (next) {
28 serversUtils.runServer(1, function (server1) {
29 server = server1
30 next()
31 })
32 }
33 ], done)
34 })
35
36 it('Should create a new client')
37
38 it('Should return the first client')
39
40 it('Should remove the last client')
41
42 it('Should not login with an invalid client id', function (done) {
43 const client = { id: 'client', password: server.client.secret }
44 loginUtils.login(server.url, client, server.user, 400, function (err, res) {
45 if (err) throw err
46
47 expect(res.body.error).to.equal('invalid_client')
48 done()
49 })
50 })
51
52 it('Should not login with an invalid client password', function (done) {
53 const client = { id: server.client.id, password: 'coucou' }
54 loginUtils.login(server.url, client, server.user, 400, function (err, res) {
55 if (err) throw err
56
57 expect(res.body.error).to.equal('invalid_client')
58 done()
59 })
60 })
61
62 it('Should not login with an invalid username', function (done) {
63 const user = { username: 'captain crochet', password: server.user.password }
64 loginUtils.login(server.url, server.client, user, 400, function (err, res) {
65 if (err) throw err
66
67 expect(res.body.error).to.equal('invalid_grant')
68 done()
69 })
70 })
71
72 it('Should not login with an invalid password', function (done) {
73 const user = { username: server.user.username, password: 'mewthree' }
74 loginUtils.login(server.url, server.client, user, 400, function (err, res) {
75 if (err) throw err
76
77 expect(res.body.error).to.equal('invalid_grant')
78 done()
79 })
80 })
81
82 it('Should not be able to upload a video', function (done) {
83 accessToken = 'mysupertoken'
84
85 const name = 'my super name'
86 const description = 'my super description'
87 const tags = [ 'tag1', 'tag2' ]
88 const video = 'video_short.webm'
89 videosUtils.uploadVideo(server.url, accessToken, name, description, tags, video, 401, done)
90 })
91
92 it('Should not be able to make friends', function (done) {
93 accessToken = 'mysupertoken'
94 podsUtils.makeFriends(server.url, accessToken, 401, done)
95 })
96
97 it('Should not be able to quit friends', function (done) {
98 accessToken = 'mysupertoken'
99 podsUtils.quitFriends(server.url, accessToken, 401, done)
100 })
101
102 it('Should be able to login', function (done) {
103 loginUtils.login(server.url, server.client, server.user, 200, function (err, res) {
104 if (err) throw err
105
106 accessToken = res.body.access_token
107 done()
108 })
109 })
110
111 it('Should upload the video with the correct token', function (done) {
112 const name = 'my super name'
113 const description = 'my super description'
114 const tags = [ 'tag1', 'tag2' ]
115 const video = 'video_short.webm'
116 videosUtils.uploadVideo(server.url, accessToken, name, description, tags, video, 204, function (err, res) {
117 if (err) throw err
118
119 videosUtils.getVideosList(server.url, function (err, res) {
120 if (err) throw err
121
122 const video = res.body.data[0]
123 expect(video.author).to.equal('root')
124
125 videoId = video.id
126 done()
127 })
128 })
129 })
130
131 it('Should upload the video again with the correct token', function (done) {
132 const name = 'my super name 2'
133 const description = 'my super description 2'
134 const tags = [ 'tag1' ]
135 const video = 'video_short.webm'
136 videosUtils.uploadVideo(server.url, accessToken, name, description, tags, video, 204, done)
137 })
138
139 it('Should not be able to remove the video with an incorrect token', function (done) {
140 videosUtils.removeVideo(server.url, 'bad_token', videoId, 401, done)
141 })
142
143 it('Should not be able to remove the video with the token of another account')
144
145 it('Should be able to remove the video with the correct token', function (done) {
146 videosUtils.removeVideo(server.url, accessToken, videoId, done)
147 })
148
149 it('Should logout (revoke token)')
150
151 it('Should not be able to upload a video')
152
153 it('Should not be able to remove a video')
154
155 it('Should be able to login again')
156
157 it('Should have an expired access token')
158
159 it('Should refresh the token')
160
161 it('Should be able to upload a video again')
162
163 it('Should be able to create a new user', function (done) {
164 usersUtils.createUser(server.url, accessToken, 'user_1', 'super password', done)
165 })
166
167 it('Should be able to login with this user', function (done) {
168 server.user = {
169 username: 'user_1',
170 password: 'super password'
171 }
172
173 loginUtils.loginAndGetAccessToken(server, function (err, token) {
174 if (err) throw err
175
176 accessTokenUser = token
177
178 done()
179 })
180 })
181
182 it('Should be able to get the user informations', function (done) {
183 usersUtils.getUserInformation(server.url, accessTokenUser, function (err, res) {
184 if (err) throw err
185
186 const user = res.body
187
188 expect(user.username).to.equal('user_1')
189 expect(user.email).to.equal('user_1@example.com')
190 expect(user.id).to.exist
191
192 done()
193 })
194 })
195
196 it('Should be able to upload a video with this user', function (done) {
197 this.timeout(5000)
198
199 const name = 'my super name'
200 const description = 'my super description'
201 const tags = [ 'tag1', 'tag2', 'tag3' ]
202 const file = 'video_short.webm'
203 videosUtils.uploadVideo(server.url, accessTokenUser, name, description, tags, file, done)
204 })
205
206 it('Should list all the users', function (done) {
207 usersUtils.getUsersList(server.url, function (err, res) {
208 if (err) throw err
209
210 const result = res.body
211 const total = result.total
212 const users = result.data
213
214 expect(total).to.equal(2)
215 expect(users).to.be.an('array')
216 expect(users.length).to.equal(2)
217
218 const user = users[0]
219 expect(user.username).to.equal('user_1')
220 expect(user.email).to.equal('user_1@example.com')
221
222 const rootUser = users[1]
223 expect(rootUser.username).to.equal('root')
224 expect(rootUser.email).to.equal('admin1@example.com')
225 userId = user.id
226
227 done()
228 })
229 })
230
231 it('Should list only the first user by username asc', function (done) {
232 usersUtils.getUsersListPaginationAndSort(server.url, 0, 1, 'username', function (err, res) {
233 if (err) throw err
234
235 const result = res.body
236 const total = result.total
237 const users = result.data
238
239 expect(total).to.equal(2)
240 expect(users.length).to.equal(1)
241
242 const user = users[0]
243 expect(user.username).to.equal('root')
244 expect(user.email).to.equal('admin1@example.com')
245
246 done()
247 })
248 })
249
250 it('Should list only the first user by username desc', function (done) {
251 usersUtils.getUsersListPaginationAndSort(server.url, 0, 1, '-username', function (err, res) {
252 if (err) throw err
253
254 const result = res.body
255 const total = result.total
256 const users = result.data
257
258 expect(total).to.equal(2)
259 expect(users.length).to.equal(1)
260
261 const user = users[0]
262 expect(user.username).to.equal('user_1')
263 expect(user.email).to.equal('user_1@example.com')
264
265 done()
266 })
267 })
268
269 it('Should list only the second user by createdAt desc', function (done) {
270 usersUtils.getUsersListPaginationAndSort(server.url, 0, 1, '-createdAt', function (err, res) {
271 if (err) throw err
272
273 const result = res.body
274 const total = result.total
275 const users = result.data
276
277 expect(total).to.equal(2)
278 expect(users.length).to.equal(1)
279
280 const user = users[0]
281 expect(user.username).to.equal('user_1')
282 expect(user.email).to.equal('user_1@example.com')
283
284 done()
285 })
286 })
287
288 it('Should list all the users by createdAt asc', function (done) {
289 usersUtils.getUsersListPaginationAndSort(server.url, 0, 2, 'createdAt', function (err, res) {
290 if (err) throw err
291
292 const result = res.body
293 const total = result.total
294 const users = result.data
295
296 expect(total).to.equal(2)
297 expect(users.length).to.equal(2)
298
299 expect(users[0].username).to.equal('root')
300 expect(users[0].email).to.equal('admin1@example.com')
301 expect(users[1].username).to.equal('user_1')
302 expect(users[1].email).to.equal('user_1@example.com')
303
304 done()
305 })
306 })
307
308 it('Should update the user password', function (done) {
309 usersUtils.updateUser(server.url, userId, accessTokenUser, 'new password', function (err, res) {
310 if (err) throw err
311
312 server.user.password = 'new password'
313 loginUtils.login(server.url, server.client, server.user, 200, done)
314 })
315 })
316
317 it('Should be able to remove this user', function (done) {
318 usersUtils.removeUser(server.url, userId, accessToken, done)
319 })
320
321 it('Should not be able to login with this user', function (done) {
322 // server.user is already set to user 1
323 loginUtils.login(server.url, server.client, server.user, 400, done)
324 })
325
326 it('Should not have videos of this user', function (done) {
327 videosUtils.getVideosList(server.url, function (err, res) {
328 if (err) throw err
329
330 expect(res.body.total).to.equal(1)
331 const video = res.body.data[0]
332 expect(video.author).to.equal('root')
333
334 done()
335 })
336 })
337
338 after(function (done) {
339 process.kill(-server.app.pid)
340
341 // Keep the logs if the test failed
342 if (this.ok) {
343 serversUtils.flushTests(done)
344 } else {
345 done()
346 }
347 })
348 })