]>
Commit | Line | Data |
---|---|---|
3545e72c C |
1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ |
2 | ||
3 | import { completeCheckHlsPlaylist } from '@server/tests/shared' | |
4 | import { areObjectStorageTestsDisabled, wait } from '@shared/core-utils' | |
5 | import { VideoPrivacy } from '@shared/models' | |
6 | import { | |
7 | cleanupTests, | |
8 | createMultipleServers, | |
9 | doubleFollow, | |
10 | ObjectStorageCommand, | |
11 | PeerTubeServer, | |
12 | setAccessTokensToServers, | |
13 | waitJobs | |
14 | } from '@shared/server-commands' | |
15 | ||
16 | describe('Test update video privacy while transcoding', function () { | |
17 | let servers: PeerTubeServer[] = [] | |
18 | ||
19 | const videoUUIDs: string[] = [] | |
20 | ||
21 | function runTestSuite (hlsOnly: boolean, objectStorageBaseUrl?: string) { | |
22 | ||
23 | it('Should not have an error while quickly updating a private video to public after upload #1', async function () { | |
24 | this.timeout(360_000) | |
25 | ||
26 | const attributes = { | |
27 | name: 'quick update', | |
28 | privacy: VideoPrivacy.PRIVATE | |
29 | } | |
30 | ||
31 | const { uuid } = await servers[0].videos.upload({ attributes, waitTorrentGeneration: false }) | |
32 | await servers[0].videos.update({ id: uuid, attributes: { privacy: VideoPrivacy.PUBLIC } }) | |
33 | videoUUIDs.push(uuid) | |
34 | ||
35 | await waitJobs(servers) | |
36 | ||
37 | await completeCheckHlsPlaylist({ servers, videoUUID: uuid, hlsOnly, objectStorageBaseUrl }) | |
38 | }) | |
39 | ||
40 | it('Should not have an error while quickly updating a private video to public after upload #2', async function () { | |
41 | ||
42 | { | |
43 | const attributes = { | |
44 | name: 'quick update 2', | |
45 | privacy: VideoPrivacy.PRIVATE | |
46 | } | |
47 | ||
48 | const { uuid } = await servers[0].videos.upload({ attributes, waitTorrentGeneration: true }) | |
49 | await servers[0].videos.update({ id: uuid, attributes: { privacy: VideoPrivacy.PUBLIC } }) | |
50 | videoUUIDs.push(uuid) | |
51 | ||
52 | await waitJobs(servers) | |
53 | ||
54 | await completeCheckHlsPlaylist({ servers, videoUUID: uuid, hlsOnly, objectStorageBaseUrl }) | |
55 | } | |
56 | }) | |
57 | ||
58 | it('Should not have an error while quickly updating a private video to public after upload #3', async function () { | |
59 | const attributes = { | |
60 | name: 'quick update 3', | |
61 | privacy: VideoPrivacy.PRIVATE | |
62 | } | |
63 | ||
64 | const { uuid } = await servers[0].videos.upload({ attributes, waitTorrentGeneration: true }) | |
65 | await wait(1000) | |
66 | await servers[0].videos.update({ id: uuid, attributes: { privacy: VideoPrivacy.PUBLIC } }) | |
67 | videoUUIDs.push(uuid) | |
68 | ||
69 | await waitJobs(servers) | |
70 | ||
71 | await completeCheckHlsPlaylist({ servers, videoUUID: uuid, hlsOnly, objectStorageBaseUrl }) | |
72 | }) | |
73 | } | |
74 | ||
75 | before(async function () { | |
76 | this.timeout(120000) | |
77 | ||
78 | const configOverride = { | |
79 | transcoding: { | |
80 | enabled: true, | |
81 | allow_audio_files: true, | |
82 | hls: { | |
83 | enabled: true | |
84 | } | |
85 | } | |
86 | } | |
87 | servers = await createMultipleServers(2, configOverride) | |
88 | ||
89 | // Get the access tokens | |
90 | await setAccessTokensToServers(servers) | |
91 | ||
92 | // Server 1 and server 2 follow each other | |
93 | await doubleFollow(servers[0], servers[1]) | |
94 | }) | |
95 | ||
96 | describe('With WebTorrent & HLS enabled', function () { | |
97 | runTestSuite(false) | |
98 | }) | |
99 | ||
100 | describe('With only HLS enabled', function () { | |
101 | ||
102 | before(async function () { | |
103 | await servers[0].config.updateCustomSubConfig({ | |
104 | newConfig: { | |
105 | transcoding: { | |
106 | enabled: true, | |
107 | allowAudioFiles: true, | |
108 | resolutions: { | |
109 | '144p': false, | |
110 | '240p': true, | |
111 | '360p': true, | |
112 | '480p': true, | |
113 | '720p': true, | |
114 | '1080p': true, | |
115 | '1440p': true, | |
116 | '2160p': true | |
117 | }, | |
118 | hls: { | |
119 | enabled: true | |
120 | }, | |
121 | webtorrent: { | |
122 | enabled: false | |
123 | } | |
124 | } | |
125 | } | |
126 | }) | |
127 | }) | |
128 | ||
129 | runTestSuite(true) | |
130 | }) | |
131 | ||
132 | describe('With object storage enabled', function () { | |
133 | if (areObjectStorageTestsDisabled()) return | |
134 | ||
135 | before(async function () { | |
136 | this.timeout(120000) | |
137 | ||
138 | const configOverride = ObjectStorageCommand.getDefaultConfig() | |
139 | await ObjectStorageCommand.prepareDefaultBuckets() | |
140 | ||
141 | await servers[0].kill() | |
142 | await servers[0].run(configOverride) | |
143 | }) | |
144 | ||
145 | runTestSuite(true, ObjectStorageCommand.getPlaylistBaseUrl()) | |
146 | }) | |
147 | ||
148 | after(async function () { | |
149 | await cleanupTests(servers) | |
150 | }) | |
151 | }) |