diff options
Diffstat (limited to 'test/api')
-rw-r--r-- | test/api/checkParams.js | 18 | ||||
-rw-r--r-- | test/api/fixtures/video_short.mp4 | bin | 0 -> 38783 bytes | |||
-rw-r--r-- | test/api/fixtures/video_short.ogv | bin | 0 -> 140849 bytes | |||
-rw-r--r-- | test/api/fixtures/video_short.webm | bin | 0 -> 218910 bytes | |||
-rw-r--r-- | test/api/fixtures/video_short1.webm | bin | 0 -> 572456 bytes | |||
-rw-r--r-- | test/api/fixtures/video_short2.webm | bin | 0 -> 942961 bytes | |||
-rw-r--r-- | test/api/fixtures/video_short3.webm | bin | 0 -> 292677 bytes | |||
-rw-r--r-- | test/api/fixtures/video_short_fake.webm | 1 | ||||
-rw-r--r-- | test/api/friendsAdvanced.js | 47 | ||||
-rw-r--r-- | test/api/friendsBasic.js | 25 | ||||
-rw-r--r-- | test/api/multiplePods.js | 97 | ||||
-rw-r--r-- | test/api/singlePod.js | 147 | ||||
-rw-r--r-- | test/api/utils.js | 162 |
13 files changed, 271 insertions, 226 deletions
diff --git a/test/api/checkParams.js b/test/api/checkParams.js index a06e32bbc..0fa83655f 100644 --- a/test/api/checkParams.js +++ b/test/api/checkParams.js | |||
@@ -1,11 +1,11 @@ | |||
1 | ;(function () { | 1 | ;(function () { |
2 | 'use strict' | 2 | 'use strict' |
3 | 3 | ||
4 | var request = require('supertest') | ||
5 | var chai = require('chai') | 4 | var chai = require('chai') |
6 | var expect = chai.expect | 5 | var expect = chai.expect |
6 | var request = require('supertest') | ||
7 | 7 | ||
8 | var utils = require('../utils') | 8 | var utils = require('./utils') |
9 | 9 | ||
10 | describe('Test parameters validator', function () { | 10 | describe('Test parameters validator', function () { |
11 | var app = null | 11 | var app = null |
@@ -129,7 +129,7 @@ | |||
129 | description: 'my super description' | 129 | description: 'my super description' |
130 | } | 130 | } |
131 | var attach = { | 131 | var attach = { |
132 | 'input_video': __dirname + '/../fixtures/video_short.webm' | 132 | 'input_video': __dirname + '/fixtures/video_short.webm' |
133 | } | 133 | } |
134 | makePostRequest(path, data, attach, done) | 134 | makePostRequest(path, data, attach, done) |
135 | }) | 135 | }) |
@@ -140,7 +140,7 @@ | |||
140 | description: 'my super description' | 140 | description: 'my super description' |
141 | } | 141 | } |
142 | var attach = { | 142 | var attach = { |
143 | 'input_video': __dirname + '/../fixtures/video_short.webm' | 143 | 'input_video': __dirname + '/fixtures/video_short.webm' |
144 | } | 144 | } |
145 | makePostRequest(path, data, attach, done) | 145 | makePostRequest(path, data, attach, done) |
146 | }) | 146 | }) |
@@ -150,7 +150,7 @@ | |||
150 | name: 'my super name' | 150 | name: 'my super name' |
151 | } | 151 | } |
152 | var attach = { | 152 | var attach = { |
153 | 'input_video': __dirname + '/../fixtures/video_short.webm' | 153 | 'input_video': __dirname + '/fixtures/video_short.webm' |
154 | } | 154 | } |
155 | makePostRequest(path, data, attach, done) | 155 | makePostRequest(path, data, attach, done) |
156 | }) | 156 | }) |
@@ -163,7 +163,7 @@ | |||
163 | 'very very very very very very very very very very very very very very very long' | 163 | 'very very very very very very very very very very very very very very very long' |
164 | } | 164 | } |
165 | var attach = { | 165 | var attach = { |
166 | 'input_video': __dirname + '/../fixtures/video_short.webm' | 166 | 'input_video': __dirname + '/fixtures/video_short.webm' |
167 | } | 167 | } |
168 | makePostRequest(path, data, attach, done) | 168 | makePostRequest(path, data, attach, done) |
169 | }) | 169 | }) |
@@ -194,12 +194,12 @@ | |||
194 | description: 'my super description' | 194 | description: 'my super description' |
195 | } | 195 | } |
196 | var attach = { | 196 | var attach = { |
197 | 'input_video': __dirname + '/../fixtures/video_short.webm' | 197 | 'input_video': __dirname + '/fixtures/video_short.webm' |
198 | } | 198 | } |
199 | makePostRequest(path, data, attach, function () { | 199 | makePostRequest(path, data, attach, function () { |
200 | attach.input_video = __dirname + '/../fixtures/video_short.mp4' | 200 | attach.input_video = __dirname + '/fixtures/video_short.mp4' |
201 | makePostRequest(path, data, attach, function () { | 201 | makePostRequest(path, data, attach, function () { |
202 | attach.input_video = __dirname + '/../fixtures/video_short.ogv' | 202 | attach.input_video = __dirname + '/fixtures/video_short.ogv' |
203 | makePostRequest(path, data, attach, done, true) | 203 | makePostRequest(path, data, attach, done, true) |
204 | }, true) | 204 | }, true) |
205 | }, true) | 205 | }, true) |
diff --git a/test/api/fixtures/video_short.mp4 b/test/api/fixtures/video_short.mp4 new file mode 100644 index 000000000..35678362b --- /dev/null +++ b/test/api/fixtures/video_short.mp4 | |||
Binary files differ | |||
diff --git a/test/api/fixtures/video_short.ogv b/test/api/fixtures/video_short.ogv new file mode 100644 index 000000000..9e253da82 --- /dev/null +++ b/test/api/fixtures/video_short.ogv | |||
Binary files differ | |||
diff --git a/test/api/fixtures/video_short.webm b/test/api/fixtures/video_short.webm new file mode 100644 index 000000000..bf4b0ab6c --- /dev/null +++ b/test/api/fixtures/video_short.webm | |||
Binary files differ | |||
diff --git a/test/api/fixtures/video_short1.webm b/test/api/fixtures/video_short1.webm new file mode 100644 index 000000000..70ac0c644 --- /dev/null +++ b/test/api/fixtures/video_short1.webm | |||
Binary files differ | |||
diff --git a/test/api/fixtures/video_short2.webm b/test/api/fixtures/video_short2.webm new file mode 100644 index 000000000..13d72dff7 --- /dev/null +++ b/test/api/fixtures/video_short2.webm | |||
Binary files differ | |||
diff --git a/test/api/fixtures/video_short3.webm b/test/api/fixtures/video_short3.webm new file mode 100644 index 000000000..cde5dcd58 --- /dev/null +++ b/test/api/fixtures/video_short3.webm | |||
Binary files differ | |||
diff --git a/test/api/fixtures/video_short_fake.webm b/test/api/fixtures/video_short_fake.webm new file mode 100644 index 000000000..d85290ae5 --- /dev/null +++ b/test/api/fixtures/video_short_fake.webm | |||
@@ -0,0 +1 @@ | |||
this is a fake video mouahahah | |||
diff --git a/test/api/friendsAdvanced.js b/test/api/friendsAdvanced.js index 680d90aee..7a0940647 100644 --- a/test/api/friendsAdvanced.js +++ b/test/api/friendsAdvanced.js | |||
@@ -1,60 +1,29 @@ | |||
1 | ;(function () { | 1 | ;(function () { |
2 | 'use strict' | 2 | 'use strict' |
3 | 3 | ||
4 | var request = require('supertest') | ||
5 | var chai = require('chai') | 4 | var chai = require('chai') |
6 | var expect = chai.expect | 5 | var expect = chai.expect |
7 | 6 | ||
8 | var utils = require('../utils') | 7 | var utils = require('./utils') |
9 | 8 | ||
10 | describe('Test advanced friends', function () { | 9 | describe('Test advanced friends', function () { |
11 | var path = '/api/v1/pods/makefriends' | ||
12 | var apps = [] | 10 | var apps = [] |
13 | var urls = [] | 11 | var urls = [] |
14 | 12 | ||
15 | function makeFriend (pod_number, callback) { | 13 | function makeFriend (pod_number, callback) { |
16 | // The first pod make friend with the third | 14 | return utils.makeFriend(urls[pod_number - 1], callback) |
17 | request(urls[pod_number - 1]) | ||
18 | .get(path) | ||
19 | .set('Accept', 'application/json') | ||
20 | .expect(204) | ||
21 | .end(function (err, res) { | ||
22 | if (err) throw err | ||
23 | |||
24 | // Wait for the request between pods | ||
25 | setTimeout(function () { | ||
26 | callback() | ||
27 | }, 1000) | ||
28 | }) | ||
29 | } | 15 | } |
30 | 16 | ||
31 | function getFriendsList (pod_number, end) { | 17 | function getFriendsList (pod_number, end) { |
32 | var path = '/api/v1/pods/' | 18 | return utils.getFriendsList(urls[pod_number - 1], end) |
33 | |||
34 | request(urls[pod_number - 1]) | ||
35 | .get(path) | ||
36 | .set('Accept', 'application/json') | ||
37 | .expect(200) | ||
38 | .expect('Content-Type', /json/) | ||
39 | .end(end) | ||
40 | } | 19 | } |
41 | 20 | ||
42 | function uploadVideo (pod_number, callback) { | 21 | function uploadVideo (pod_number, callback) { |
43 | var path = '/api/v1/videos' | 22 | var name = 'my super video' |
44 | 23 | var description = 'my super description' | |
45 | request(urls[pod_number - 1]) | 24 | var fixture = 'video_short.webm' |
46 | .post(path) | 25 | |
47 | .set('Accept', 'application/json') | 26 | return utils.uploadVideo(urls[pod_number - 1], name, description, fixture, callback) |
48 | .field('name', 'my super video') | ||
49 | .field('description', 'my super description') | ||
50 | .attach('input_video', __dirname + '/../fixtures/video_short.webm') | ||
51 | .expect(201) | ||
52 | .end(function (err) { | ||
53 | if (err) throw err | ||
54 | |||
55 | // Wait for the retry requests | ||
56 | setTimeout(callback, 10000) | ||
57 | }) | ||
58 | } | 27 | } |
59 | 28 | ||
60 | beforeEach(function (done) { | 29 | beforeEach(function (done) { |
diff --git a/test/api/friendsBasic.js b/test/api/friendsBasic.js index 40ed34199..43ec41633 100644 --- a/test/api/friendsBasic.js +++ b/test/api/friendsBasic.js | |||
@@ -1,23 +1,12 @@ | |||
1 | ;(function () { | 1 | ;(function () { |
2 | 'use strict' | 2 | 'use strict' |
3 | 3 | ||
4 | var request = require('supertest') | 4 | var async = require('async') |
5 | var chai = require('chai') | 5 | var chai = require('chai') |
6 | var expect = chai.expect | 6 | var expect = chai.expect |
7 | var async = require('async') | 7 | var request = require('supertest') |
8 | |||
9 | var utils = require('../utils') | ||
10 | |||
11 | function getFriendsList (url, end) { | ||
12 | var path = '/api/v1/pods/' | ||
13 | 8 | ||
14 | request(url) | 9 | var utils = require('./utils') |
15 | .get(path) | ||
16 | .set('Accept', 'application/json') | ||
17 | .expect(200) | ||
18 | .expect('Content-Type', /json/) | ||
19 | .end(end) | ||
20 | } | ||
21 | 10 | ||
22 | describe('Test basic friends', function () { | 11 | describe('Test basic friends', function () { |
23 | var apps = [] | 12 | var apps = [] |
@@ -34,7 +23,7 @@ | |||
34 | 23 | ||
35 | it('Should not have friends', function (done) { | 24 | it('Should not have friends', function (done) { |
36 | async.each(urls, function (url, callback) { | 25 | async.each(urls, function (url, callback) { |
37 | getFriendsList(url, function (err, res) { | 26 | utils.getFriendsList(url, function (err, res) { |
38 | if (err) throw err | 27 | if (err) throw err |
39 | 28 | ||
40 | var result = res.body | 29 | var result = res.body |
@@ -59,7 +48,7 @@ | |||
59 | friends.push(urls[i]) | 48 | friends.push(urls[i]) |
60 | } | 49 | } |
61 | 50 | ||
62 | getFriendsList(url_to_test, function (err, res) { | 51 | utils.getFriendsList(url_to_test, function (err, res) { |
63 | if (err) throw err | 52 | if (err) throw err |
64 | 53 | ||
65 | var result = res.body | 54 | var result = res.body |
@@ -88,7 +77,7 @@ | |||
88 | // Wait for the request between pods | 77 | // Wait for the request between pods |
89 | setTimeout(function () { | 78 | setTimeout(function () { |
90 | // The second pod should have the third as a friend | 79 | // The second pod should have the third as a friend |
91 | getFriendsList(urls[1], function (err, res) { | 80 | utils.getFriendsList(urls[1], function (err, res) { |
92 | if (err) throw err | 81 | if (err) throw err |
93 | 82 | ||
94 | var result = res.body | 83 | var result = res.body |
@@ -97,7 +86,7 @@ | |||
97 | expect(result[0].url).to.be.equal(urls[2]) | 86 | expect(result[0].url).to.be.equal(urls[2]) |
98 | 87 | ||
99 | // Same here, the third pod should have the second pod as a friend | 88 | // Same here, the third pod should have the second pod as a friend |
100 | getFriendsList(urls[2], function (err, res) { | 89 | utils.getFriendsList(urls[2], function (err, res) { |
101 | if (err) throw err | 90 | if (err) throw err |
102 | 91 | ||
103 | var result = res.body | 92 | var result = res.body |
diff --git a/test/api/multiplePods.js b/test/api/multiplePods.js index 3ce57afa8..dd666d73e 100644 --- a/test/api/multiplePods.js +++ b/test/api/multiplePods.js | |||
@@ -1,86 +1,47 @@ | |||
1 | ;(function () { | 1 | ;(function () { |
2 | 'use strict' | 2 | 'use strict' |
3 | 3 | ||
4 | var request = require('supertest') | 4 | var async = require('async') |
5 | var chai = require('chai') | 5 | var chai = require('chai') |
6 | var expect = chai.expect | 6 | var expect = chai.expect |
7 | var async = require('async') | ||
8 | 7 | ||
9 | var utils = require('../utils') | 8 | var utils = require('./utils') |
10 | var webtorrent = require(__dirname + '/../../src/webTorrentNode') | 9 | var webtorrent = require(__dirname + '/../../src/webTorrentNode') |
11 | webtorrent.silent = true | 10 | webtorrent.silent = true |
12 | 11 | ||
13 | describe('Test multiple pods', function () { | 12 | describe('Test multiple pods', function () { |
14 | var path = '/api/v1/videos' | ||
15 | var apps = [] | 13 | var apps = [] |
16 | var urls = [] | 14 | var urls = [] |
17 | var to_remove = [] | 15 | var to_remove = [] |
18 | 16 | ||
19 | function getVideosList (url, end) { | ||
20 | request(url) | ||
21 | .get(path) | ||
22 | .set('Accept', 'application/json') | ||
23 | .expect(200) | ||
24 | .expect('Content-Type', /json/) | ||
25 | .end(end) | ||
26 | } | ||
27 | |||
28 | function uploadVideo (url, name, description, fixture, end) { | ||
29 | request(url) | ||
30 | .post(path) | ||
31 | .set('Accept', 'application/json') | ||
32 | .field('name', name) | ||
33 | .field('description', description) | ||
34 | .attach('input_video', __dirname + '/../fixtures/' + fixture) | ||
35 | .expect(201) | ||
36 | .end(end) | ||
37 | } | ||
38 | |||
39 | function removeVideo (url, id, end) { | ||
40 | request(url) | ||
41 | .delete(path + '/' + id) | ||
42 | .set('Accept', 'application/json') | ||
43 | .expect(204) | ||
44 | .end(end) | ||
45 | } | ||
46 | |||
47 | before(function (done) { | 17 | before(function (done) { |
48 | this.timeout(30000) | 18 | this.timeout(30000) |
49 | var path_friends = '/api/v1/pods/makefriends' | ||
50 | 19 | ||
51 | utils.runMultipleServers(3, function (apps_run, urls_run) { | 20 | utils.runMultipleServers(3, function (apps_run, urls_run) { |
52 | apps = apps_run | 21 | apps = apps_run |
53 | urls = urls_run | 22 | urls = urls_run |
54 | 23 | ||
55 | // The second pod make friend with the third | 24 | // The second pod make friend with the third |
56 | request(urls[1]) | 25 | utils.makeFriend(urls[1], function (err, res) { |
57 | .get(path_friends) | 26 | if (err) throw err |
58 | .set('Accept', 'application/json') | ||
59 | .expect(204) | ||
60 | .end(function (err, res) { | ||
61 | if (err) throw err | ||
62 | 27 | ||
63 | // Wait for the request between pods | 28 | // Wait for the request between pods |
64 | setTimeout(function () { | 29 | setTimeout(function () { |
65 | request(urls[0]) | 30 | utils.makeFriend(urls[0], function (err, res) { |
66 | .get(path_friends) | 31 | if (err) throw err |
67 | .set('Accept', 'application/json') | ||
68 | .expect(204) | ||
69 | .end(function (err, res) { | ||
70 | if (err) throw err | ||
71 | 32 | ||
72 | webtorrent.create({ host: 'client', port: '1' }, function () { | 33 | webtorrent.create({ host: 'client', port: '1' }, function () { |
73 | done() | 34 | done() |
74 | }) | 35 | }) |
75 | }) | 36 | }) |
76 | }, 10000) | 37 | }, 10000) |
77 | }) | 38 | }) |
78 | }) | 39 | }) |
79 | }) | 40 | }) |
80 | 41 | ||
81 | it('Should not have videos for all pods', function (done) { | 42 | it('Should not have videos for all pods', function (done) { |
82 | async.each(urls, function (url, callback) { | 43 | async.each(urls, function (url, callback) { |
83 | getVideosList(url, function (err, res) { | 44 | utils.getVideosList(url, function (err, res) { |
84 | if (err) throw err | 45 | if (err) throw err |
85 | 46 | ||
86 | expect(res.body).to.be.an('array') | 47 | expect(res.body).to.be.an('array') |
@@ -99,7 +60,7 @@ | |||
99 | it('Should upload the video on pod 1 and propagate on each pod', function (done) { | 60 | it('Should upload the video on pod 1 and propagate on each pod', function (done) { |
100 | this.timeout(15000) | 61 | this.timeout(15000) |
101 | 62 | ||
102 | uploadVideo(urls[0], 'my super name for pod 1', 'my super description for pod 1', 'video_short1.webm', function (err) { | 63 | utils.uploadVideo(urls[0], 'my super name for pod 1', 'my super description for pod 1', 'video_short1.webm', function (err) { |
103 | if (err) throw err | 64 | if (err) throw err |
104 | 65 | ||
105 | setTimeout(function () { | 66 | setTimeout(function () { |
@@ -107,7 +68,7 @@ | |||
107 | async.each(urls, function (url, callback) { | 68 | async.each(urls, function (url, callback) { |
108 | var base_magnet = null | 69 | var base_magnet = null |
109 | 70 | ||
110 | getVideosList(url, function (err, res) { | 71 | utils.getVideosList(url, function (err, res) { |
111 | if (err) throw err | 72 | if (err) throw err |
112 | 73 | ||
113 | var videos = res.body | 74 | var videos = res.body |
@@ -140,7 +101,7 @@ | |||
140 | it('Should upload the video on pod 2 and propagate on each pod', function (done) { | 101 | it('Should upload the video on pod 2 and propagate on each pod', function (done) { |
141 | this.timeout(15000) | 102 | this.timeout(15000) |
142 | 103 | ||
143 | uploadVideo(urls[1], 'my super name for pod 2', 'my super description for pod 2', 'video_short2.webm', function (err) { | 104 | utils.uploadVideo(urls[1], 'my super name for pod 2', 'my super description for pod 2', 'video_short2.webm', function (err) { |
144 | if (err) throw err | 105 | if (err) throw err |
145 | 106 | ||
146 | setTimeout(function () { | 107 | setTimeout(function () { |
@@ -148,7 +109,7 @@ | |||
148 | async.each(urls, function (url, callback) { | 109 | async.each(urls, function (url, callback) { |
149 | var base_magnet = null | 110 | var base_magnet = null |
150 | 111 | ||
151 | getVideosList(url, function (err, res) { | 112 | utils.getVideosList(url, function (err, res) { |
152 | if (err) throw err | 113 | if (err) throw err |
153 | 114 | ||
154 | var videos = res.body | 115 | var videos = res.body |
@@ -181,16 +142,16 @@ | |||
181 | it('Should upload two videos on pod 3 and propagate on each pod', function (done) { | 142 | it('Should upload two videos on pod 3 and propagate on each pod', function (done) { |
182 | this.timeout(15000) | 143 | this.timeout(15000) |
183 | 144 | ||
184 | uploadVideo(urls[2], 'my super name for pod 3', 'my super description for pod 3', 'video_short3.webm', function (err) { | 145 | utils.uploadVideo(urls[2], 'my super name for pod 3', 'my super description for pod 3', 'video_short3.webm', function (err) { |
185 | if (err) throw err | 146 | if (err) throw err |
186 | uploadVideo(urls[2], 'my super name for pod 3-2', 'my super description for pod 3-2', 'video_short.webm', function (err) { | 147 | utils.uploadVideo(urls[2], 'my super name for pod 3-2', 'my super description for pod 3-2', 'video_short.webm', function (err) { |
187 | if (err) throw err | 148 | if (err) throw err |
188 | 149 | ||
189 | setTimeout(function () { | 150 | setTimeout(function () { |
190 | var base_magnet = null | 151 | var base_magnet = null |
191 | // All pods should have this video | 152 | // All pods should have this video |
192 | async.each(urls, function (url, callback) { | 153 | async.each(urls, function (url, callback) { |
193 | getVideosList(url, function (err, res) { | 154 | utils.getVideosList(url, function (err, res) { |
194 | if (err) throw err | 155 | if (err) throw err |
195 | 156 | ||
196 | var videos = res.body | 157 | var videos = res.body |
@@ -233,7 +194,7 @@ | |||
233 | // Yes, this could be long | 194 | // Yes, this could be long |
234 | this.timeout(200000) | 195 | this.timeout(200000) |
235 | 196 | ||
236 | getVideosList(urls[2], function (err, res) { | 197 | utils.getVideosList(urls[2], function (err, res) { |
237 | if (err) throw err | 198 | if (err) throw err |
238 | 199 | ||
239 | var video = res.body[0] | 200 | var video = res.body[0] |
@@ -254,7 +215,7 @@ | |||
254 | // Yes, this could be long | 215 | // Yes, this could be long |
255 | this.timeout(200000) | 216 | this.timeout(200000) |
256 | 217 | ||
257 | getVideosList(urls[0], function (err, res) { | 218 | utils.getVideosList(urls[0], function (err, res) { |
258 | if (err) throw err | 219 | if (err) throw err |
259 | 220 | ||
260 | var video = res.body[1] | 221 | var video = res.body[1] |
@@ -273,7 +234,7 @@ | |||
273 | // Yes, this could be long | 234 | // Yes, this could be long |
274 | this.timeout(200000) | 235 | this.timeout(200000) |
275 | 236 | ||
276 | getVideosList(urls[1], function (err, res) { | 237 | utils.getVideosList(urls[1], function (err, res) { |
277 | if (err) throw err | 238 | if (err) throw err |
278 | 239 | ||
279 | var video = res.body[2] | 240 | var video = res.body[2] |
@@ -292,7 +253,7 @@ | |||
292 | // Yes, this could be long | 253 | // Yes, this could be long |
293 | this.timeout(200000) | 254 | this.timeout(200000) |
294 | 255 | ||
295 | getVideosList(urls[0], function (err, res) { | 256 | utils.getVideosList(urls[0], function (err, res) { |
296 | if (err) throw err | 257 | if (err) throw err |
297 | 258 | ||
298 | var video = res.body[3] | 259 | var video = res.body[3] |
@@ -310,9 +271,9 @@ | |||
310 | it('Should remove the file 3 and 3-2 by asking pod 3', function (done) { | 271 | it('Should remove the file 3 and 3-2 by asking pod 3', function (done) { |
311 | this.timeout(15000) | 272 | this.timeout(15000) |
312 | 273 | ||
313 | removeVideo(urls[2], to_remove[0], function (err) { | 274 | utils.removeVideo(urls[2], to_remove[0], function (err) { |
314 | if (err) throw err | 275 | if (err) throw err |
315 | removeVideo(urls[2], to_remove[1], function (err) { | 276 | utils.removeVideo(urls[2], to_remove[1], function (err) { |
316 | if (err) throw err | 277 | if (err) throw err |
317 | 278 | ||
318 | // Wait the propagation to the other pods | 279 | // Wait the propagation to the other pods |
@@ -325,7 +286,7 @@ | |||
325 | 286 | ||
326 | it('Should have videos 1 and 3 on each pod', function (done) { | 287 | it('Should have videos 1 and 3 on each pod', function (done) { |
327 | async.each(urls, function (url, callback) { | 288 | async.each(urls, function (url, callback) { |
328 | getVideosList(url, function (err, res) { | 289 | utils.getVideosList(url, function (err, res) { |
329 | if (err) throw err | 290 | if (err) throw err |
330 | 291 | ||
331 | var videos = res.body | 292 | var videos = res.body |
diff --git a/test/api/singlePod.js b/test/api/singlePod.js index 301065f39..be944d8da 100644 --- a/test/api/singlePod.js +++ b/test/api/singlePod.js | |||
@@ -1,17 +1,16 @@ | |||
1 | ;(function () { | 1 | ;(function () { |
2 | 'use strict' | 2 | 'use strict' |
3 | 3 | ||
4 | var request = require('supertest') | ||
5 | var chai = require('chai') | 4 | var chai = require('chai') |
6 | var fs = require('fs') | 5 | var fs = require('fs') |
7 | var expect = chai.expect | 6 | var expect = chai.expect |
7 | |||
8 | var webtorrent = require(__dirname + '/../../src/webTorrentNode') | 8 | var webtorrent = require(__dirname + '/../../src/webTorrentNode') |
9 | webtorrent.silent = true | 9 | webtorrent.silent = true |
10 | 10 | ||
11 | var utils = require('../utils') | 11 | var utils = require('./utils') |
12 | 12 | ||
13 | describe('Test a single pod', function () { | 13 | describe('Test a single pod', function () { |
14 | var path = '/api/v1/videos' | ||
15 | var app = null | 14 | var app = null |
16 | var url = '' | 15 | var url = '' |
17 | var video_id = -1 | 16 | var video_id = -1 |
@@ -32,135 +31,99 @@ | |||
32 | }) | 31 | }) |
33 | 32 | ||
34 | it('Should not have videos', function (done) { | 33 | it('Should not have videos', function (done) { |
35 | request(url) | 34 | utils.getVideosList(url, function (err, res) { |
36 | .get(path) | 35 | if (err) throw err |
37 | .set('Accept', 'application/json') | ||
38 | .expect(200) | ||
39 | .expect('Content-Type', /json/) | ||
40 | .end(function (err, res) { | ||
41 | if (err) throw err | ||
42 | 36 | ||
43 | expect(res.body).to.be.an('array') | 37 | expect(res.body).to.be.an('array') |
44 | expect(res.body.length).to.equal(0) | 38 | expect(res.body.length).to.equal(0) |
45 | 39 | ||
46 | done() | 40 | done() |
47 | }) | 41 | }) |
48 | }) | 42 | }) |
49 | 43 | ||
50 | it('Should upload the video', function (done) { | 44 | it('Should upload the video', function (done) { |
51 | this.timeout(5000) | 45 | this.timeout(5000) |
52 | 46 | utils.uploadVideo(url, 'my super name', 'my super description', 'video_short.webm', done) | |
53 | request(url) | ||
54 | .post(path) | ||
55 | .set('Accept', 'application/json') | ||
56 | .field('name', 'my super name') | ||
57 | .field('description', 'my super description') | ||
58 | .attach('input_video', __dirname + '/../fixtures/video_short.webm') | ||
59 | .expect(201, done) | ||
60 | }) | 47 | }) |
61 | 48 | ||
62 | it('Should seed the uploaded video', function (done) { | 49 | it('Should seed the uploaded video', function (done) { |
63 | // Yes, this could be long | 50 | // Yes, this could be long |
64 | this.timeout(60000) | 51 | this.timeout(60000) |
65 | 52 | ||
66 | request(url) | 53 | utils.getVideosList(url, function (err, res) { |
67 | .get(path) | 54 | if (err) throw err |
68 | .set('Accept', 'application/json') | ||
69 | .expect(200) | ||
70 | .expect('Content-Type', /json/) | ||
71 | .end(function (err, res) { | ||
72 | if (err) throw err | ||
73 | 55 | ||
74 | expect(res.body).to.be.an('array') | 56 | expect(res.body).to.be.an('array') |
75 | expect(res.body.length).to.equal(1) | 57 | expect(res.body.length).to.equal(1) |
76 | 58 | ||
77 | var video = res.body[0] | 59 | var video = res.body[0] |
78 | expect(video.name).to.equal('my super name') | 60 | expect(video.name).to.equal('my super name') |
79 | expect(video.description).to.equal('my super description') | 61 | expect(video.description).to.equal('my super description') |
80 | expect(video.podUrl).to.equal('http://localhost:9001') | 62 | expect(video.podUrl).to.equal('http://localhost:9001') |
81 | expect(video.magnetUri).to.exist | 63 | expect(video.magnetUri).to.exist |
82 | 64 | ||
83 | video_id = video._id | 65 | video_id = video._id |
84 | 66 | ||
85 | webtorrent.add(video.magnetUri, function (torrent) { | 67 | webtorrent.add(video.magnetUri, function (torrent) { |
86 | expect(torrent.files).to.exist | 68 | expect(torrent.files).to.exist |
87 | expect(torrent.files.length).to.equal(1) | 69 | expect(torrent.files.length).to.equal(1) |
88 | expect(torrent.files[0].path).to.exist.and.to.not.equal('') | 70 | expect(torrent.files[0].path).to.exist.and.to.not.equal('') |
89 | 71 | ||
90 | done() | 72 | done() |
91 | }) | ||
92 | }) | 73 | }) |
74 | }) | ||
93 | }) | 75 | }) |
94 | 76 | ||
95 | it('Should search the video', function (done) { | 77 | it('Should search the video', function (done) { |
96 | request(url) | 78 | utils.searchVideo(url, 'my', function (err, res) { |
97 | .get(path + '/search/my') | 79 | if (err) throw err |
98 | .set('Accept', 'application/json') | ||
99 | .expect(200) | ||
100 | .expect('Content-Type', /json/) | ||
101 | .end(function (err, res) { | ||
102 | if (err) throw err | ||
103 | 80 | ||
104 | expect(res.body).to.be.an('array') | 81 | expect(res.body).to.be.an('array') |
105 | expect(res.body.length).to.equal(1) | 82 | expect(res.body.length).to.equal(1) |
106 | 83 | ||
107 | var video = res.body[0] | 84 | var video = res.body[0] |
108 | expect(video.name).to.equal('my super name') | 85 | expect(video.name).to.equal('my super name') |
109 | expect(video.description).to.equal('my super description') | 86 | expect(video.description).to.equal('my super description') |
110 | expect(video.podUrl).to.equal('http://localhost:9001') | 87 | expect(video.podUrl).to.equal('http://localhost:9001') |
111 | expect(video.magnetUri).to.exist | 88 | expect(video.magnetUri).to.exist |
112 | 89 | ||
113 | done() | 90 | done() |
114 | }) | 91 | }) |
115 | }) | 92 | }) |
116 | 93 | ||
117 | it('Should not find a search', function (done) { | 94 | it('Should not find a search', function (done) { |
118 | request(url) | 95 | utils.searchVideo(url, 'hello', function (err, res) { |
119 | .get(path + '/search/hello') | 96 | if (err) throw err |
120 | .set('Accept', 'application/json') | ||
121 | .expect(200) | ||
122 | .expect('Content-Type', /json/) | ||
123 | .end(function (err, res) { | ||
124 | if (err) throw err | ||
125 | 97 | ||
126 | expect(res.body).to.be.an('array') | 98 | expect(res.body).to.be.an('array') |
127 | expect(res.body.length).to.equal(0) | 99 | expect(res.body.length).to.equal(0) |
128 | 100 | ||
129 | done() | 101 | done() |
130 | }) | 102 | }) |
131 | }) | 103 | }) |
132 | 104 | ||
133 | it('Should remove the video', function (done) { | 105 | it('Should remove the video', function (done) { |
134 | request(url) | 106 | utils.removeVideo(url, video_id, function (err) { |
135 | .delete(path + '/' + video_id) | 107 | if (err) throw err |
136 | .set('Accept', 'application/json') | ||
137 | .expect(204) | ||
138 | .end(function (err, res) { | ||
139 | if (err) throw err | ||
140 | 108 | ||
141 | fs.readdir(__dirname + '/../../test1/uploads/', function (err, files) { | 109 | fs.readdir(__dirname + '/../../test1/uploads/', function (err, files) { |
142 | if (err) throw err | 110 | if (err) throw err |
143 | 111 | ||
144 | expect(files.length).to.equal(0) | 112 | expect(files.length).to.equal(0) |
145 | done() | 113 | done() |
146 | }) | ||
147 | }) | 114 | }) |
115 | }) | ||
148 | }) | 116 | }) |
149 | 117 | ||
150 | it('Should not have videos', function (done) { | 118 | it('Should not have videos', function (done) { |
151 | request(url) | 119 | utils.getVideosList(url, function (err, res) { |
152 | .get(path) | 120 | if (err) throw err |
153 | .set('Accept', 'application/json') | ||
154 | .expect(200) | ||
155 | .expect('Content-Type', /json/) | ||
156 | .end(function (err, res) { | ||
157 | if (err) throw err | ||
158 | 121 | ||
159 | expect(res.body).to.be.an('array') | 122 | expect(res.body).to.be.an('array') |
160 | expect(res.body.length).to.equal(0) | 123 | expect(res.body.length).to.equal(0) |
161 | 124 | ||
162 | done() | 125 | done() |
163 | }) | 126 | }) |
164 | }) | 127 | }) |
165 | 128 | ||
166 | after(function (done) { | 129 | after(function (done) { |
diff --git a/test/api/utils.js b/test/api/utils.js new file mode 100644 index 000000000..8d059b01c --- /dev/null +++ b/test/api/utils.js | |||
@@ -0,0 +1,162 @@ | |||
1 | ;(function () { | ||
2 | 'use strict' | ||
3 | |||
4 | var child_process = require('child_process') | ||
5 | var exec = child_process.exec | ||
6 | var fork = child_process.fork | ||
7 | var request = require('supertest') | ||
8 | |||
9 | function flushTests (callback) { | ||
10 | exec(__dirname + '/../../scripts/clean_test.sh', function () { | ||
11 | callback() | ||
12 | }) | ||
13 | } | ||
14 | |||
15 | function getFriendsList (url, end) { | ||
16 | var path = '/api/v1/pods/' | ||
17 | |||
18 | request(url) | ||
19 | .get(path) | ||
20 | .set('Accept', 'application/json') | ||
21 | .expect(200) | ||
22 | .expect('Content-Type', /json/) | ||
23 | .end(end) | ||
24 | } | ||
25 | |||
26 | function getVideosList (url, end) { | ||
27 | var path = '/api/v1/videos' | ||
28 | |||
29 | request(url) | ||
30 | .get(path) | ||
31 | .set('Accept', 'application/json') | ||
32 | .expect(200) | ||
33 | .expect('Content-Type', /json/) | ||
34 | .end(end) | ||
35 | } | ||
36 | |||
37 | function makeFriend (url, callback) { | ||
38 | var path = '/api/v1/pods/makefriends' | ||
39 | |||
40 | // The first pod make friend with the third | ||
41 | request(url) | ||
42 | .get(path) | ||
43 | .set('Accept', 'application/json') | ||
44 | .expect(204) | ||
45 | .end(function (err, res) { | ||
46 | if (err) throw err | ||
47 | |||
48 | // Wait for the request between pods | ||
49 | setTimeout(function () { | ||
50 | callback() | ||
51 | }, 1000) | ||
52 | }) | ||
53 | } | ||
54 | |||
55 | function uploadVideo (url, name, description, fixture, end) { | ||
56 | var path = '/api/v1/videos' | ||
57 | |||
58 | request(url) | ||
59 | .post(path) | ||
60 | .set('Accept', 'application/json') | ||
61 | .field('name', name) | ||
62 | .field('description', description) | ||
63 | .attach('input_video', __dirname + '/fixtures/' + fixture) | ||
64 | .expect(201) | ||
65 | .end(end) | ||
66 | } | ||
67 | |||
68 | function removeVideo (url, id, end) { | ||
69 | var path = '/api/v1/videos' | ||
70 | |||
71 | request(url) | ||
72 | .delete(path + '/' + id) | ||
73 | .set('Accept', 'application/json') | ||
74 | .expect(204) | ||
75 | .end(end) | ||
76 | } | ||
77 | |||
78 | function runMultipleServers (total_servers, serversRun) { | ||
79 | var apps = [] | ||
80 | var urls = [] | ||
81 | var i = 0 | ||
82 | |||
83 | function anotherServerDone (number, app, url) { | ||
84 | apps[number - 1] = app | ||
85 | urls[number - 1] = url | ||
86 | i++ | ||
87 | if (i === total_servers) { | ||
88 | serversRun(apps, urls) | ||
89 | } | ||
90 | } | ||
91 | |||
92 | flushTests(function () { | ||
93 | for (var j = 1; j <= total_servers; j++) { | ||
94 | (function (k) { // TODO: ES6 with let | ||
95 | // For the virtual buffer | ||
96 | setTimeout(function () { | ||
97 | runServer(k, function (app, url) { | ||
98 | anotherServerDone(k, app, url) | ||
99 | }) | ||
100 | }, 1000 * k) | ||
101 | })(j) | ||
102 | } | ||
103 | }) | ||
104 | } | ||
105 | |||
106 | function runServer (number, callback) { | ||
107 | var port = 9000 + number | ||
108 | var server_run_string = { | ||
109 | 'Connected to mongodb': false, | ||
110 | 'Server listening on port': false | ||
111 | } | ||
112 | |||
113 | // Share the environment | ||
114 | var env = Object.create(process.env) | ||
115 | env.NODE_ENV = 'test' | ||
116 | env.NODE_APP_INSTANCE = number | ||
117 | var options = { | ||
118 | silent: true, | ||
119 | env: env, | ||
120 | detached: true | ||
121 | } | ||
122 | |||
123 | var app = fork(__dirname + '/../../server.js', [], options) | ||
124 | app.stdout.on('data', function onStdout (data) { | ||
125 | var dont_continue = false | ||
126 | // Check if all required sentences are here | ||
127 | for (var key of Object.keys(server_run_string)) { | ||
128 | if (data.toString().indexOf(key) !== -1) server_run_string[key] = true | ||
129 | if (server_run_string[key] === false) dont_continue = true | ||
130 | } | ||
131 | |||
132 | // If no, there is maybe one thing not already initialized (mongodb...) | ||
133 | if (dont_continue === true) return | ||
134 | |||
135 | app.stdout.removeListener('data', onStdout) | ||
136 | callback(app, 'http://localhost:' + port) | ||
137 | }) | ||
138 | } | ||
139 | |||
140 | function searchVideo (url, search, end) { | ||
141 | var path = '/api/v1/videos' | ||
142 | |||
143 | request(url) | ||
144 | .get(path + '/search/' + search) | ||
145 | .set('Accept', 'application/json') | ||
146 | .expect(200) | ||
147 | .expect('Content-Type', /json/) | ||
148 | .end(end) | ||
149 | } | ||
150 | |||
151 | module.exports = { | ||
152 | flushTests: flushTests, | ||
153 | getFriendsList: getFriendsList, | ||
154 | getVideosList: getVideosList, | ||
155 | makeFriend: makeFriend, | ||
156 | removeVideo: removeVideo, | ||
157 | runMultipleServers: runMultipleServers, | ||
158 | runServer: runServer, | ||
159 | searchVideo: searchVideo, | ||
160 | uploadVideo: uploadVideo | ||
161 | } | ||
162 | })() | ||