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