Add total results field and wrap videos in data field when listing
[oweals/peertube.git] / server / tests / api / users.js
1 'use strict'
2
3 const async = require('async')
4 const chai = require('chai')
5 const expect = chai.expect
6 const pathUtils = require('path')
7
8 const webtorrent = require(pathUtils.join(__dirname, '../../lib/webtorrent'))
9 webtorrent.silent = true
10
11 const utils = require('./utils')
12
13 describe('Test users', function () {
14   let server = null
15   let accessToken = null
16   let videoId
17
18   before(function (done) {
19     this.timeout(20000)
20
21     async.series([
22       function (next) {
23         utils.flushTests(next)
24       },
25       function (next) {
26         utils.runServer(1, function (server1) {
27           server = server1
28           next()
29         })
30       }
31     ], done)
32   })
33
34   it('Should create a new client')
35
36   it('Should return the first client')
37
38   it('Should remove the last client')
39
40   it('Should not login with an invalid client id', function (done) {
41     const client = { id: 'client', password: server.client.secret }
42     utils.login(server.url, client, server.user, 400, function (err, res) {
43       if (err) throw err
44
45       expect(res.body.error).to.equal('invalid_client')
46       done()
47     })
48   })
49
50   it('Should not login with an invalid client password', function (done) {
51     const client = { id: server.client.id, password: 'coucou' }
52     utils.login(server.url, client, server.user, 400, function (err, res) {
53       if (err) throw err
54
55       expect(res.body.error).to.equal('invalid_client')
56       done()
57     })
58   })
59
60   it('Should not login with an invalid username', function (done) {
61     const user = { username: 'captain crochet', password: server.user.password }
62     utils.login(server.url, server.client, user, 400, function (err, res) {
63       if (err) throw err
64
65       expect(res.body.error).to.equal('invalid_grant')
66       done()
67     })
68   })
69
70   it('Should not login with an invalid password', function (done) {
71     const user = { username: server.user.username, password: 'mewthree' }
72     utils.login(server.url, server.client, user, 400, function (err, res) {
73       if (err) throw err
74
75       expect(res.body.error).to.equal('invalid_grant')
76       done()
77     })
78   })
79
80   it('Should not be able to upload a video', function (done) {
81     accessToken = 'mysupertoken'
82     utils.uploadVideo(server.url, accessToken, 'my super name', 'my super description', 'video_short.webm', 401, done)
83   })
84
85   it('Should not be able to make friends', function (done) {
86     accessToken = 'mysupertoken'
87     utils.makeFriends(server.url, accessToken, 401, done)
88   })
89
90   it('Should not be able to quit friends', function (done) {
91     accessToken = 'mysupertoken'
92     utils.quitFriends(server.url, accessToken, 401, done)
93   })
94
95   it('Should be able to login', function (done) {
96     utils.login(server.url, server.client, server.user, 200, function (err, res) {
97       if (err) throw err
98
99       accessToken = res.body.access_token
100       done()
101     })
102   })
103
104   it('Should upload the video with the correct token', function (done) {
105     utils.uploadVideo(server.url, accessToken, 'my super name', 'my super description', 'video_short.webm', 204, function (err, res) {
106       if (err) throw err
107
108       utils.getVideosList(server.url, function (err, res) {
109         if (err) throw err
110
111         const video = res.body.data[0]
112         expect(video.author).to.equal('root')
113
114         videoId = video.id
115         done()
116       })
117     })
118   })
119
120   it('Should upload the video again with the correct token', function (done) {
121     utils.uploadVideo(server.url, accessToken, 'my super name 2', 'my super description 2', 'video_short.webm', 204, done)
122   })
123
124   it('Should not be able to remove the video with an incorrect token', function (done) {
125     utils.removeVideo(server.url, 'bad_token', videoId, 401, done)
126   })
127
128   it('Should not be able to remove the video with the token of another account')
129
130   it('Should be able to remove the video with the correct token', function (done) {
131     utils.removeVideo(server.url, accessToken, videoId, done)
132   })
133
134   it('Should logout')
135
136   it('Should not be able to upload a video')
137
138   it('Should not be able to remove a video')
139
140   it('Should be able to login again')
141
142   after(function (done) {
143     process.kill(-server.app.pid)
144
145     // Keep the logs if the test failed
146     if (this.ok) {
147       utils.flushTests(done)
148     } else {
149       done()
150     }
151   })
152 })