]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/tests/api/check-params/video-files.ts
Add ability to run transcoding jobs
[github/Chocobozzz/PeerTube.git] / server / tests / api / check-params / video-files.ts
1 /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
2
3 import 'mocha'
4 import { cleanupTests, createMultipleServers, doubleFollow, PeerTubeServer, setAccessTokensToServers, waitJobs } from '@shared/extra-utils'
5 import { HttpStatusCode, UserRole } from '@shared/models'
6
7 describe('Test videos files', function () {
8 let servers: PeerTubeServer[]
9
10 let webtorrentId: string
11 let hlsId: string
12 let remoteId: string
13
14 let userToken: string
15 let moderatorToken: string
16
17 let validId1: string
18 let validId2: string
19
20 // ---------------------------------------------------------------
21
22 before(async function () {
23 this.timeout(150_000)
24
25 servers = await createMultipleServers(2)
26 await setAccessTokensToServers(servers)
27
28 await doubleFollow(servers[0], servers[1])
29
30 userToken = await servers[0].users.generateUserAndToken('user', UserRole.USER)
31 moderatorToken = await servers[0].users.generateUserAndToken('moderator', UserRole.MODERATOR)
32
33 {
34 const { uuid } = await servers[1].videos.quickUpload({ name: 'remote video' })
35 remoteId = uuid
36 }
37
38 {
39 await servers[0].config.enableTranscoding(true, true)
40
41 {
42 const { uuid } = await servers[0].videos.quickUpload({ name: 'both 1' })
43 validId1 = uuid
44 }
45
46 {
47 const { uuid } = await servers[0].videos.quickUpload({ name: 'both 2' })
48 validId2 = uuid
49 }
50 }
51
52 await waitJobs(servers)
53
54 {
55 await servers[0].config.enableTranscoding(false, true)
56 const { uuid } = await servers[0].videos.quickUpload({ name: 'hls' })
57 hlsId = uuid
58 }
59
60 await waitJobs(servers)
61
62 {
63 await servers[0].config.enableTranscoding(false, true)
64 const { uuid } = await servers[0].videos.quickUpload({ name: 'webtorrent' })
65 webtorrentId = uuid
66 }
67
68 await waitJobs(servers)
69 })
70
71 it('Should not delete files of a unknown video', async function () {
72 await servers[0].videos.removeHLSFiles({ videoId: 404, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
73 await servers[0].videos.removeWebTorrentFiles({ videoId: 404, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
74 })
75
76 it('Should not delete files of a remote video', async function () {
77 await servers[0].videos.removeHLSFiles({ videoId: remoteId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
78 await servers[0].videos.removeWebTorrentFiles({ videoId: remoteId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
79 })
80
81 it('Should not delete files by a non admin user', async function () {
82 const expectedStatus = HttpStatusCode.FORBIDDEN_403
83
84 await servers[0].videos.removeHLSFiles({ videoId: validId1, token: userToken, expectedStatus })
85 await servers[0].videos.removeHLSFiles({ videoId: validId1, token: moderatorToken, expectedStatus })
86
87 await servers[0].videos.removeWebTorrentFiles({ videoId: validId1, token: userToken, expectedStatus })
88 await servers[0].videos.removeWebTorrentFiles({ videoId: validId1, token: moderatorToken, expectedStatus })
89 })
90
91 it('Should not delete files if the files are not available', async function () {
92 await servers[0].videos.removeHLSFiles({ videoId: hlsId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
93 await servers[0].videos.removeWebTorrentFiles({ videoId: webtorrentId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
94 })
95
96 it('Should not delete files if no both versions are available', async function () {
97 await servers[0].videos.removeHLSFiles({ videoId: hlsId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
98 await servers[0].videos.removeWebTorrentFiles({ videoId: webtorrentId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
99 })
100
101 it('Should not delete files if no both versions are available', async function () {
102 await servers[0].videos.removeHLSFiles({ videoId: hlsId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
103 await servers[0].videos.removeWebTorrentFiles({ videoId: webtorrentId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
104 })
105
106 it('Should delete files if both versions are available', async function () {
107 await servers[0].videos.removeHLSFiles({ videoId: validId1 })
108 await servers[0].videos.removeWebTorrentFiles({ videoId: validId2 })
109 })
110
111 after(async function () {
112 await cleanupTests(servers)
113 })
114 })