1 /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
4 import { HttpStatusCode, UserRole } from '@shared/models'
10 setAccessTokensToServers,
12 } from '@shared/server-commands'
14 describe('Test videos files', function () {
15 let servers: PeerTubeServer[]
17 let webtorrentId: string
22 let moderatorToken: string
27 // ---------------------------------------------------------------
29 before(async function () {
32 servers = await createMultipleServers(2)
33 await setAccessTokensToServers(servers)
35 await doubleFollow(servers[0], servers[1])
37 userToken = await servers[0].users.generateUserAndToken('user', UserRole.USER)
38 moderatorToken = await servers[0].users.generateUserAndToken('moderator', UserRole.MODERATOR)
41 const { uuid } = await servers[1].videos.quickUpload({ name: 'remote video' })
46 await servers[0].config.enableTranscoding(true, true)
49 const { uuid } = await servers[0].videos.quickUpload({ name: 'both 1' })
54 const { uuid } = await servers[0].videos.quickUpload({ name: 'both 2' })
59 await waitJobs(servers)
62 await servers[0].config.enableTranscoding(false, true)
63 const { uuid } = await servers[0].videos.quickUpload({ name: 'hls' })
67 await waitJobs(servers)
70 await servers[0].config.enableTranscoding(false, true)
71 const { uuid } = await servers[0].videos.quickUpload({ name: 'webtorrent' })
75 await waitJobs(servers)
78 it('Should not delete files of a unknown video', async function () {
79 await servers[0].videos.removeHLSFiles({ videoId: 404, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
80 await servers[0].videos.removeWebTorrentFiles({ videoId: 404, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
83 it('Should not delete files of a remote video', async function () {
84 await servers[0].videos.removeHLSFiles({ videoId: remoteId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
85 await servers[0].videos.removeWebTorrentFiles({ videoId: remoteId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
88 it('Should not delete files by a non admin user', async function () {
89 const expectedStatus = HttpStatusCode.FORBIDDEN_403
91 await servers[0].videos.removeHLSFiles({ videoId: validId1, token: userToken, expectedStatus })
92 await servers[0].videos.removeHLSFiles({ videoId: validId1, token: moderatorToken, expectedStatus })
94 await servers[0].videos.removeWebTorrentFiles({ videoId: validId1, token: userToken, expectedStatus })
95 await servers[0].videos.removeWebTorrentFiles({ videoId: validId1, token: moderatorToken, expectedStatus })
98 it('Should not delete files if the files are not available', async function () {
99 await servers[0].videos.removeHLSFiles({ videoId: hlsId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
100 await servers[0].videos.removeWebTorrentFiles({ videoId: webtorrentId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
103 it('Should not delete files if no both versions are available', async function () {
104 await servers[0].videos.removeHLSFiles({ videoId: hlsId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
105 await servers[0].videos.removeWebTorrentFiles({ videoId: webtorrentId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
108 it('Should not delete files if no both versions are available', async function () {
109 await servers[0].videos.removeHLSFiles({ videoId: hlsId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
110 await servers[0].videos.removeWebTorrentFiles({ videoId: webtorrentId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
113 it('Should delete files if both versions are available', async function () {
114 await servers[0].videos.removeHLSFiles({ videoId: validId1 })
115 await servers[0].videos.removeWebTorrentFiles({ videoId: validId2 })
118 after(async function () {
119 await cleanupTests(servers)