Server: fix tests
[oweals/peertube.git] / server / tests / api / requests.js
1 'use strict'
2
3 const chai = require('chai')
4 const each = require('async/each')
5 const expect = chai.expect
6 const request = require('supertest')
7
8 const loginUtils = require('../utils/login')
9 const podsUtils = require('../utils/pods')
10 const serversUtils = require('../utils/servers')
11 const videosUtils = require('../utils/videos')
12
13 describe('Test requests stats', function () {
14   const path = '/api/v1/requests/stats'
15   let servers = []
16
17   function uploadVideo (server, callback) {
18     const name = 'my super video'
19     const description = 'my super description'
20     const tags = [ 'tag1', 'tag2' ]
21     const fixture = 'video_short.webm'
22
23     videosUtils.uploadVideo(server.url, server.accessToken, name, description, tags, fixture, callback)
24   }
25
26   function getRequestsStats (server, callback) {
27     request(server.url)
28       .get(path)
29       .set('Accept', 'application/json')
30       .set('Authorization', 'Bearer ' + server.accessToken)
31       .expect(200)
32       .end(callback)
33   }
34
35   // ---------------------------------------------------------------
36
37   before(function (done) {
38     this.timeout(20000)
39     serversUtils.flushAndRunMultipleServers(2, function (serversRun, urlsRun) {
40       servers = serversRun
41
42       each(servers, function (server, callbackEach) {
43         loginUtils.loginAndGetAccessToken(server, function (err, accessToken) {
44           if (err) return callbackEach(err)
45
46           server.accessToken = accessToken
47           callbackEach()
48         })
49       }, function (err) {
50         if (err) throw err
51
52         const server1 = servers[0]
53         podsUtils.makeFriends(server1.url, server1.accessToken, done)
54       })
55     })
56   })
57
58   it('Should have a correct timer', function (done) {
59     const server = servers[0]
60
61     getRequestsStats(server, function (err, res) {
62       if (err) throw err
63
64       const body = res.body
65       expect(body.remainingMilliSeconds).to.be.at.least(0)
66       expect(body.remainingMilliSeconds).to.be.at.most(10000)
67
68       done()
69     })
70   })
71
72   it('Should have the correct request', function (done) {
73     this.timeout(15000)
74
75     const server = servers[0]
76     // Ensure the requests of pod 1 won't be made
77     servers[1].app.kill()
78
79     uploadVideo(server, function (err) {
80       if (err) throw err
81
82       getRequestsStats(server, function (err, res) {
83         if (err) throw err
84
85         const body = res.body
86         expect(body.requests).to.have.lengthOf(1)
87
88         const request = body.requests[0]
89         expect(request.to).to.have.lengthOf(1)
90         expect(request.request.type).to.equal('add')
91
92         // Wait one cycle
93         setTimeout(done, 10000)
94       })
95     })
96   })
97
98   it('Should have the correct requests', function (done) {
99     const server = servers[0]
100
101     uploadVideo(server, function (err) {
102       if (err) throw err
103
104       getRequestsStats(server, function (err, res) {
105         if (err) throw err
106
107         const body = res.body
108         expect(body.requests).to.have.lengthOf(2)
109
110         const request = body.requests[1]
111         expect(request.to).to.have.lengthOf(1)
112         expect(request.request.type).to.equal('add')
113
114         done()
115       })
116     })
117   })
118
119   after(function (done) {
120     process.kill(-servers[0].app.pid)
121
122     if (this.ok) {
123       serversUtils.flushTests(done)
124     } else {
125       done()
126     }
127   })
128 })