]>
Commit | Line | Data |
---|---|---|
0305db28 JB |
1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ |
2 | ||
3 | import 'mocha' | |
4 | import * as chai from 'chai' | |
5 | import { | |
6 | areObjectStorageTestsDisabled, | |
7 | createSingleServer, | |
8 | expectStartWith, | |
9 | FIXTURE_URLS, | |
10 | killallServers, | |
11 | makeRawRequest, | |
12 | ObjectStorageCommand, | |
13 | PeerTubeServer, | |
14 | setAccessTokensToServers, | |
15 | setDefaultVideoChannel, | |
16 | waitJobs | |
17 | } from '@shared/extra-utils' | |
18 | import { HttpStatusCode, VideoPrivacy } from '@shared/models' | |
19 | ||
20 | const expect = chai.expect | |
21 | ||
22 | async function importVideo (server: PeerTubeServer) { | |
23 | const attributes = { | |
24 | name: 'import 2', | |
25 | privacy: VideoPrivacy.PUBLIC, | |
26 | channelId: server.store.channel.id, | |
27 | targetUrl: FIXTURE_URLS.goodVideo720 | |
28 | } | |
29 | ||
30 | const { video: { uuid } } = await server.imports.importVideo({ attributes }) | |
31 | ||
32 | return uuid | |
33 | } | |
34 | ||
35 | describe('Object storage for video import', function () { | |
36 | if (areObjectStorageTestsDisabled()) return | |
37 | ||
38 | let server: PeerTubeServer | |
39 | ||
40 | before(async function () { | |
41 | this.timeout(120000) | |
42 | ||
43 | await ObjectStorageCommand.prepareDefaultBuckets() | |
44 | ||
45 | server = await createSingleServer(1, ObjectStorageCommand.getDefaultConfig()) | |
46 | ||
47 | await setAccessTokensToServers([ server ]) | |
48 | await setDefaultVideoChannel([ server ]) | |
49 | ||
50 | await server.config.enableImports() | |
51 | }) | |
52 | ||
53 | describe('Without transcoding', async function () { | |
54 | ||
55 | before(async function () { | |
56 | await server.config.disableTranscoding() | |
57 | }) | |
58 | ||
59 | it('Should import a video and have sent it to object storage', async function () { | |
60 | this.timeout(120000) | |
61 | ||
62 | const uuid = await importVideo(server) | |
63 | await waitJobs(server) | |
64 | ||
65 | const video = await server.videos.get({ id: uuid }) | |
66 | ||
67 | expect(video.files).to.have.lengthOf(1) | |
68 | expect(video.streamingPlaylists).to.have.lengthOf(0) | |
69 | ||
70 | const fileUrl = video.files[0].fileUrl | |
71 | expectStartWith(fileUrl, ObjectStorageCommand.getWebTorrentBaseUrl()) | |
72 | ||
73 | await makeRawRequest(fileUrl, HttpStatusCode.OK_200) | |
74 | }) | |
75 | }) | |
76 | ||
77 | describe('With transcoding', async function () { | |
78 | ||
79 | before(async function () { | |
80 | await server.config.enableTranscoding() | |
81 | }) | |
82 | ||
83 | it('Should import a video and have sent it to object storage', async function () { | |
84 | this.timeout(120000) | |
85 | ||
86 | const uuid = await importVideo(server) | |
87 | await waitJobs(server) | |
88 | ||
89 | const video = await server.videos.get({ id: uuid }) | |
90 | ||
91 | expect(video.files).to.have.lengthOf(4) | |
92 | expect(video.streamingPlaylists).to.have.lengthOf(1) | |
93 | expect(video.streamingPlaylists[0].files).to.have.lengthOf(4) | |
94 | ||
95 | for (const file of video.files) { | |
96 | expectStartWith(file.fileUrl, ObjectStorageCommand.getWebTorrentBaseUrl()) | |
97 | ||
98 | await makeRawRequest(file.fileUrl, HttpStatusCode.OK_200) | |
99 | } | |
100 | ||
101 | for (const file of video.streamingPlaylists[0].files) { | |
102 | expectStartWith(file.fileUrl, ObjectStorageCommand.getPlaylistBaseUrl()) | |
103 | ||
104 | await makeRawRequest(file.fileUrl, HttpStatusCode.OK_200) | |
105 | } | |
106 | }) | |
107 | }) | |
108 | ||
109 | after(async function () { | |
110 | await killallServers([ server ]) | |
111 | }) | |
112 | }) |