diff options
author | Chocobozzz <me@florianbigard.com> | 2018-08-07 15:17:17 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2018-08-08 09:30:31 +0200 |
commit | 3e17515e2996b79e23f569c296051a91af3fcbe4 (patch) | |
tree | d1c06c394a9f4b1d8646625612c2d5d3e02e9191 /server/tests/api/videos | |
parent | 187501f8b8e334f043ae1e9af3c9d4f45ea0e6c1 (diff) | |
download | PeerTube-3e17515e2996b79e23f569c296051a91af3fcbe4.tar.gz PeerTube-3e17515e2996b79e23f569c296051a91af3fcbe4.tar.zst PeerTube-3e17515e2996b79e23f569c296051a91af3fcbe4.zip |
Add torrent tests
Diffstat (limited to 'server/tests/api/videos')
-rw-r--r-- | server/tests/api/videos/video-imports.ts | 159 |
1 files changed, 120 insertions, 39 deletions
diff --git a/server/tests/api/videos/video-imports.ts b/server/tests/api/videos/video-imports.ts index f21ade5c3..b7866d529 100644 --- a/server/tests/api/videos/video-imports.ts +++ b/server/tests/api/videos/video-imports.ts | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | import * as chai from 'chai' | 3 | import * as chai from 'chai' |
4 | import 'mocha' | 4 | import 'mocha' |
5 | import { VideoDetails, VideoPrivacy } from '../../../../shared/models/videos' | 5 | import { VideoDetails, VideoImport, VideoPrivacy } from '../../../../shared/models/videos' |
6 | import { | 6 | import { |
7 | doubleFollow, | 7 | doubleFollow, |
8 | flushAndRunMultipleServers, | 8 | flushAndRunMultipleServers, |
@@ -10,12 +10,13 @@ import { | |||
10 | getMyVideos, | 10 | getMyVideos, |
11 | getVideo, | 11 | getVideo, |
12 | getVideosList, | 12 | getVideosList, |
13 | immutableAssign, | ||
13 | killallServers, | 14 | killallServers, |
14 | ServerInfo, | 15 | ServerInfo, |
15 | setAccessTokensToServers | 16 | setAccessTokensToServers |
16 | } from '../../utils' | 17 | } from '../../utils' |
17 | import { waitJobs } from '../../utils/server/jobs' | 18 | import { waitJobs } from '../../utils/server/jobs' |
18 | import { getMyVideoImports, getYoutubeVideoUrl, importVideo } from '../../utils/videos/video-imports' | 19 | import { getMagnetURI, getYoutubeVideoUrl, importVideo, getMyVideoImports } from '../../utils/videos/video-imports' |
19 | 20 | ||
20 | const expect = chai.expect | 21 | const expect = chai.expect |
21 | 22 | ||
@@ -24,19 +25,36 @@ describe('Test video imports', function () { | |||
24 | let channelIdServer1: number | 25 | let channelIdServer1: number |
25 | let channelIdServer2: number | 26 | let channelIdServer2: number |
26 | 27 | ||
27 | async function checkVideoServer1 (url: string, id: number | string) { | 28 | async function checkVideosServer1 (url: string, idHttp: string, idMagnet: string, idTorrent: string) { |
28 | const res = await getVideo(url, id) | 29 | const resHttp = await getVideo(url, idHttp) |
29 | const video: VideoDetails = res.body | 30 | const videoHttp: VideoDetails = resHttp.body |
30 | 31 | ||
31 | expect(video.name).to.equal('small video - youtube') | 32 | expect(videoHttp.name).to.equal('small video - youtube') |
32 | expect(video.category.label).to.equal('News') | 33 | expect(videoHttp.category.label).to.equal('News') |
33 | expect(video.licence.label).to.equal('Attribution') | 34 | expect(videoHttp.licence.label).to.equal('Attribution') |
34 | expect(video.language.label).to.equal('Unknown') | 35 | expect(videoHttp.language.label).to.equal('Unknown') |
35 | expect(video.nsfw).to.be.false | 36 | expect(videoHttp.nsfw).to.be.false |
36 | expect(video.description).to.equal('this is a super description') | 37 | expect(videoHttp.description).to.equal('this is a super description') |
37 | expect(video.tags).to.deep.equal([ 'tag1', 'tag2' ]) | 38 | expect(videoHttp.tags).to.deep.equal([ 'tag1', 'tag2' ]) |
39 | expect(videoHttp.files).to.have.lengthOf(1) | ||
40 | |||
41 | const resMagnet = await getVideo(url, idMagnet) | ||
42 | const videoMagnet: VideoDetails = resMagnet.body | ||
43 | const resTorrent = await getVideo(url, idTorrent) | ||
44 | const videoTorrent: VideoDetails = resTorrent.body | ||
45 | |||
46 | for (const video of [ videoMagnet, videoTorrent ]) { | ||
47 | expect(video.category.label).to.equal('Misc') | ||
48 | expect(video.licence.label).to.equal('Unknown') | ||
49 | expect(video.language.label).to.equal('Unknown') | ||
50 | expect(video.nsfw).to.be.false | ||
51 | expect(video.description).to.equal('this is a super torrent description') | ||
52 | expect(video.tags).to.deep.equal([ 'tag_torrent1', 'tag_torrent2' ]) | ||
53 | expect(video.files).to.have.lengthOf(1) | ||
54 | } | ||
38 | 55 | ||
39 | expect(video.files).to.have.lengthOf(1) | 56 | expect(videoTorrent.name).to.contain('你好 世界 720p.mp4') |
57 | expect(videoMagnet.name).to.contain('super peertube2 video') | ||
40 | } | 58 | } |
41 | 59 | ||
42 | async function checkVideoServer2 (url: string, id: number | string) { | 60 | async function checkVideoServer2 (url: string, id: number | string) { |
@@ -75,50 +93,88 @@ describe('Test video imports', function () { | |||
75 | await doubleFollow(servers[0], servers[1]) | 93 | await doubleFollow(servers[0], servers[1]) |
76 | }) | 94 | }) |
77 | 95 | ||
78 | it('Should import a video on server 1', async function () { | 96 | it('Should import videos on server 1', async function () { |
79 | this.timeout(60000) | 97 | this.timeout(60000) |
80 | 98 | ||
81 | const attributes = { | 99 | const baseAttributes = { |
82 | targetUrl: getYoutubeVideoUrl(), | ||
83 | channelId: channelIdServer1, | 100 | channelId: channelIdServer1, |
84 | privacy: VideoPrivacy.PUBLIC | 101 | privacy: VideoPrivacy.PUBLIC |
85 | } | 102 | } |
86 | const res = await importVideo(servers[0].url, servers[0].accessToken, attributes) | 103 | |
87 | expect(res.body.video.name).to.equal('small video - youtube') | 104 | { |
105 | const attributes = immutableAssign(baseAttributes, { targetUrl: getYoutubeVideoUrl() }) | ||
106 | const res = await importVideo(servers[0].url, servers[0].accessToken, attributes) | ||
107 | expect(res.body.video.name).to.equal('small video - youtube') | ||
108 | } | ||
109 | |||
110 | { | ||
111 | const attributes = immutableAssign(baseAttributes, { | ||
112 | magnetUri: getMagnetURI(), | ||
113 | description: 'this is a super torrent description', | ||
114 | tags: [ 'tag_torrent1', 'tag_torrent2' ] | ||
115 | }) | ||
116 | const res = await importVideo(servers[0].url, servers[0].accessToken, attributes) | ||
117 | expect(res.body.video.name).to.equal('super peertube2 video') | ||
118 | } | ||
119 | |||
120 | { | ||
121 | const attributes = immutableAssign(baseAttributes, { | ||
122 | torrentfile: 'video-720p.torrent', | ||
123 | description: 'this is a super torrent description', | ||
124 | tags: [ 'tag_torrent1', 'tag_torrent2' ] | ||
125 | }) | ||
126 | const res = await importVideo(servers[0].url, servers[0].accessToken, attributes) | ||
127 | expect(res.body.video.name).to.equal('你好 世界 720p.mp4') | ||
128 | } | ||
88 | }) | 129 | }) |
89 | 130 | ||
90 | it('Should list the video to import in my videos on server 1', async function () { | 131 | it('Should list the videos to import in my videos on server 1', async function () { |
91 | const res = await getMyVideos(servers[0].url, servers[0].accessToken, 0, 5) | 132 | const res = await getMyVideos(servers[0].url, servers[0].accessToken, 0, 5, 'createdAt') |
92 | 133 | ||
93 | expect(res.body.total).to.equal(1) | 134 | expect(res.body.total).to.equal(3) |
94 | 135 | ||
95 | const videos = res.body.data | 136 | const videos = res.body.data |
96 | expect(videos).to.have.lengthOf(1) | 137 | expect(videos).to.have.lengthOf(3) |
97 | expect(videos[0].name).to.equal('small video - youtube') | 138 | expect(videos[0].name).to.equal('small video - youtube') |
139 | expect(videos[1].name).to.equal('super peertube2 video') | ||
140 | expect(videos[2].name).to.equal('你好 世界 720p.mp4') | ||
98 | }) | 141 | }) |
99 | 142 | ||
100 | it('Should list the video to import in my imports on server 1', async function () { | 143 | it('Should list the videos to import in my imports on server 1', async function () { |
101 | const res = await getMyVideoImports(servers[0].url, servers[0].accessToken) | 144 | const res = await getMyVideoImports(servers[0].url, servers[0].accessToken, '-createdAt') |
145 | |||
146 | expect(res.body.total).to.equal(3) | ||
147 | const videoImports: VideoImport[] = res.body.data | ||
148 | expect(videoImports).to.have.lengthOf(3) | ||
149 | |||
150 | expect(videoImports[2].targetUrl).to.equal(getYoutubeVideoUrl()) | ||
151 | expect(videoImports[2].magnetUri).to.be.null | ||
152 | expect(videoImports[2].torrentName).to.be.null | ||
153 | expect(videoImports[2].video.name).to.equal('small video - youtube') | ||
102 | 154 | ||
103 | expect(res.body.total).to.equal(1) | 155 | expect(videoImports[1].targetUrl).to.be.null |
104 | const videoImports = res.body.data | 156 | expect(videoImports[1].magnetUri).to.equal(getMagnetURI()) |
105 | expect(videoImports).to.have.lengthOf(1) | 157 | expect(videoImports[1].torrentName).to.be.null |
158 | expect(videoImports[1].video.name).to.equal('super peertube2 video') | ||
106 | 159 | ||
107 | expect(videoImports[0].targetUrl).to.equal(getYoutubeVideoUrl()) | 160 | expect(videoImports[0].targetUrl).to.be.null |
108 | expect(videoImports[0].video.name).to.equal('small video - youtube') | 161 | expect(videoImports[0].magnetUri).to.be.null |
162 | expect(videoImports[0].torrentName).to.equal('video-720p.torrent') | ||
163 | expect(videoImports[0].video.name).to.equal('你好 世界 720p.mp4') | ||
109 | }) | 164 | }) |
110 | 165 | ||
111 | it('Should have the video listed on the two instances1', async function () { | 166 | it('Should have the video listed on the two instances', async function () { |
112 | this.timeout(120000) | 167 | this.timeout(120000) |
113 | 168 | ||
114 | await waitJobs(servers) | 169 | await waitJobs(servers) |
115 | 170 | ||
116 | for (const server of servers) { | 171 | for (const server of servers) { |
117 | const res = await getVideosList(server.url) | 172 | const res = await getVideosList(server.url) |
118 | expect(res.body.total).to.equal(1) | 173 | expect(res.body.total).to.equal(3) |
119 | expect(res.body.data).to.have.lengthOf(1) | 174 | expect(res.body.data).to.have.lengthOf(3) |
120 | 175 | ||
121 | await checkVideoServer1(server.url, res.body.data[0].uuid) | 176 | const [ videoHttp, videoMagnet, videoTorrent ] = res.body.data |
177 | await checkVideosServer1(server.url, videoHttp.uuid, videoMagnet.uuid, videoTorrent.uuid) | ||
122 | } | 178 | } |
123 | }) | 179 | }) |
124 | 180 | ||
@@ -127,7 +183,7 @@ describe('Test video imports', function () { | |||
127 | 183 | ||
128 | const attributes = { | 184 | const attributes = { |
129 | targetUrl: getYoutubeVideoUrl(), | 185 | targetUrl: getYoutubeVideoUrl(), |
130 | channelId: channelIdServer1, | 186 | channelId: channelIdServer2, |
131 | privacy: VideoPrivacy.PUBLIC, | 187 | privacy: VideoPrivacy.PUBLIC, |
132 | category: 10, | 188 | category: 10, |
133 | licence: 7, | 189 | licence: 7, |
@@ -140,18 +196,43 @@ describe('Test video imports', function () { | |||
140 | expect(res.body.video.name).to.equal('my super name') | 196 | expect(res.body.video.name).to.equal('my super name') |
141 | }) | 197 | }) |
142 | 198 | ||
143 | it('Should have the video listed on the two instances', async function () { | 199 | it('Should have the videos listed on the two instances', async function () { |
144 | this.timeout(120000) | 200 | this.timeout(120000) |
145 | 201 | ||
146 | await waitJobs(servers) | 202 | await waitJobs(servers) |
147 | 203 | ||
148 | for (const server of servers) { | 204 | for (const server of servers) { |
149 | const res = await getVideosList(server.url) | 205 | const res = await getVideosList(server.url) |
150 | expect(res.body.total).to.equal(2) | 206 | expect(res.body.total).to.equal(4) |
151 | expect(res.body.data).to.have.lengthOf(2) | 207 | expect(res.body.data).to.have.lengthOf(4) |
152 | 208 | ||
153 | await checkVideoServer2(server.url, res.body.data[0].uuid) | 209 | await checkVideoServer2(server.url, res.body.data[0].uuid) |
154 | await checkVideoServer1(server.url, res.body.data[1].uuid) | 210 | |
211 | const [ ,videoHttp, videoMagnet, videoTorrent ] = res.body.data | ||
212 | await checkVideosServer1(server.url, videoHttp.uuid, videoMagnet.uuid, videoTorrent.uuid) | ||
213 | } | ||
214 | }) | ||
215 | |||
216 | it('Should import a video that will be transcoded', async function () { | ||
217 | this.timeout(120000) | ||
218 | |||
219 | const attributes = { | ||
220 | name: 'transcoded video', | ||
221 | magnetUri: getMagnetURI(), | ||
222 | channelId: channelIdServer2, | ||
223 | privacy: VideoPrivacy.PUBLIC | ||
224 | } | ||
225 | const res = await importVideo(servers[1].url, servers[1].accessToken, attributes) | ||
226 | const videoUUID = res.body.video.uuid | ||
227 | |||
228 | await waitJobs(servers) | ||
229 | |||
230 | for (const server of servers) { | ||
231 | const res = await getVideo(server.url, videoUUID) | ||
232 | const video: VideoDetails = res.body | ||
233 | |||
234 | expect(video.name).to.equal('transcoded video') | ||
235 | expect(video.files).to.have.lengthOf(4) | ||
155 | } | 236 | } |
156 | }) | 237 | }) |
157 | 238 | ||