1 /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
4 import { cleanupTests, createMultipleServers, doubleFollow, PeerTubeServer, setAccessTokensToServers, waitJobs } from '@shared/extra-utils'
5 import { HttpStatusCode, UserRole } from '@shared/models'
7 describe('Test videos files', function () {
8 let servers: PeerTubeServer[]
10 let webtorrentId: string
15 let moderatorToken: string
20 // ---------------------------------------------------------------
22 before(async function () {
25 servers = await createMultipleServers(2)
26 await setAccessTokensToServers(servers)
28 await doubleFollow(servers[0], servers[1])
30 userToken = await servers[0].users.generateUserAndToken('user', UserRole.USER)
31 moderatorToken = await servers[0].users.generateUserAndToken('moderator', UserRole.MODERATOR)
34 const { uuid } = await servers[1].videos.quickUpload({ name: 'remote video' })
39 await servers[0].config.enableTranscoding(true, true)
42 const { uuid } = await servers[0].videos.quickUpload({ name: 'both 1' })
47 const { uuid } = await servers[0].videos.quickUpload({ name: 'both 2' })
52 await waitJobs(servers)
55 await servers[0].config.enableTranscoding(false, true)
56 const { uuid } = await servers[0].videos.quickUpload({ name: 'hls' })
60 await waitJobs(servers)
63 await servers[0].config.enableTranscoding(false, true)
64 const { uuid } = await servers[0].videos.quickUpload({ name: 'webtorrent' })
68 await waitJobs(servers)
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 })
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 })
81 it('Should not delete files by a non admin user', async function () {
82 const expectedStatus = HttpStatusCode.FORBIDDEN_403
84 await servers[0].videos.removeHLSFiles({ videoId: validId1, token: userToken, expectedStatus })
85 await servers[0].videos.removeHLSFiles({ videoId: validId1, token: moderatorToken, expectedStatus })
87 await servers[0].videos.removeWebTorrentFiles({ videoId: validId1, token: userToken, expectedStatus })
88 await servers[0].videos.removeWebTorrentFiles({ videoId: validId1, token: moderatorToken, expectedStatus })
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 })
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 })
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 })
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 })
111 after(async function () {
112 await cleanupTests(servers)