Move scripts to bin
[oweals/peertube.git] / server / tests / api / singlePod.js
1 'use strict'
2
3 var async = require('async')
4 var chai = require('chai')
5 var expect = chai.expect
6 var fs = require('fs')
7 var pathUtils = require('path')
8
9 var webtorrent = require(pathUtils.join(__dirname, '../../lib/webtorrent'))
10 webtorrent.silent = true
11
12 var utils = require('./utils')
13
14 describe('Test a single pod', function () {
15   var app = null
16   var url = ''
17   var video_id = -1
18
19   before(function (done) {
20     this.timeout(20000)
21
22     async.series([
23       function (next) {
24         utils.flushTests(next)
25       },
26       function (next) {
27         utils.runServer(1, function (app1, url1) {
28           app = app1
29           url = url1
30           next()
31         })
32       },
33       function (next) {
34         webtorrent.create({ host: 'client', port: '1' }, next)
35       }
36     ], done)
37   })
38
39   it('Should not have videos', function (done) {
40     utils.getVideosList(url, function (err, res) {
41       if (err) throw err
42
43       expect(res.body).to.be.an('array')
44       expect(res.body.length).to.equal(0)
45
46       done()
47     })
48   })
49
50   it('Should upload the video', function (done) {
51     this.timeout(5000)
52     utils.uploadVideo(url, 'my super name', 'my super description', 'video_short.webm', done)
53   })
54
55   it('Should seed the uploaded video', function (done) {
56     // Yes, this could be long
57     this.timeout(60000)
58
59     utils.getVideosList(url, function (err, res) {
60       if (err) throw err
61
62       expect(res.body).to.be.an('array')
63       expect(res.body.length).to.equal(1)
64
65       var video = res.body[0]
66       expect(video.name).to.equal('my super name')
67       expect(video.description).to.equal('my super description')
68       expect(video.podUrl).to.equal('http://localhost:9001')
69       expect(video.magnetUri).to.exist
70
71       video_id = video._id
72
73       webtorrent.add(video.magnetUri, function (torrent) {
74         expect(torrent.files).to.exist
75         expect(torrent.files.length).to.equal(1)
76         expect(torrent.files[0].path).to.exist.and.to.not.equal('')
77
78         done()
79       })
80     })
81   })
82
83   it('Should search the video', function (done) {
84     utils.searchVideo(url, 'my', function (err, res) {
85       if (err) throw err
86
87       expect(res.body).to.be.an('array')
88       expect(res.body.length).to.equal(1)
89
90       var video = res.body[0]
91       expect(video.name).to.equal('my super name')
92       expect(video.description).to.equal('my super description')
93       expect(video.podUrl).to.equal('http://localhost:9001')
94       expect(video.magnetUri).to.exist
95
96       done()
97     })
98   })
99
100   it('Should not find a search', function (done) {
101     utils.searchVideo(url, 'hello', function (err, res) {
102       if (err) throw err
103
104       expect(res.body).to.be.an('array')
105       expect(res.body.length).to.equal(0)
106
107       done()
108     })
109   })
110
111   it('Should remove the video', function (done) {
112     utils.removeVideo(url, video_id, function (err) {
113       if (err) throw err
114
115       fs.readdir(pathUtils.join(__dirname, '../../test1/uploads/'), function (err, files) {
116         if (err) throw err
117
118         expect(files.length).to.equal(0)
119         done()
120       })
121     })
122   })
123
124   it('Should not have videos', function (done) {
125     utils.getVideosList(url, function (err, res) {
126       if (err) throw err
127
128       expect(res.body).to.be.an('array')
129       expect(res.body.length).to.equal(0)
130
131       done()
132     })
133   })
134
135   after(function (done) {
136     process.kill(-app.pid)
137     process.kill(-webtorrent.app.pid)
138
139     // Keep the logs if the test failed
140     if (this.ok) {
141       utils.flushTests(done)
142     } else {
143       done()
144     }
145   })
146 })