aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/tests/api
diff options
context:
space:
mode:
Diffstat (limited to 'server/tests/api')
-rw-r--r--server/tests/api/check-params/index.ts1
-rw-r--r--server/tests/api/check-params/video-files.ts99
-rw-r--r--server/tests/api/videos/index.ts1
-rw-r--r--server/tests/api/videos/video-files.ts70
4 files changed, 171 insertions, 0 deletions
diff --git a/server/tests/api/check-params/index.ts b/server/tests/api/check-params/index.ts
index 0882f8176..ff7dc4abb 100644
--- a/server/tests/api/check-params/index.ts
+++ b/server/tests/api/check-params/index.ts
@@ -28,5 +28,6 @@ import './video-imports'
28import './video-playlists' 28import './video-playlists'
29import './videos' 29import './videos'
30import './videos-common-filters' 30import './videos-common-filters'
31import './video-files'
31import './videos-history' 32import './videos-history'
32import './videos-overviews' 33import './videos-overviews'
diff --git a/server/tests/api/check-params/video-files.ts b/server/tests/api/check-params/video-files.ts
new file mode 100644
index 000000000..48b10d2b5
--- /dev/null
+++ b/server/tests/api/check-params/video-files.ts
@@ -0,0 +1,99 @@
1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
2
3import 'mocha'
4import { cleanupTests, createMultipleServers, PeerTubeServer, setAccessTokensToServers, waitJobs } from '@shared/extra-utils'
5import { HttpStatusCode, UserRole } from '@shared/models'
6
7describe('Test videos files', function () {
8 let servers: PeerTubeServer[]
9 let webtorrentId: string
10 let hlsId: string
11 let remoteId: string
12 let userToken: string
13 let moderatorToken: string
14 let validId1: string
15 let validId2: string
16
17 // ---------------------------------------------------------------
18
19 before(async function () {
20 this.timeout(150_000)
21
22 servers = await createMultipleServers(2)
23 await setAccessTokensToServers(servers)
24
25 userToken = await servers[0].users.generateUserAndToken('user', UserRole.USER)
26 moderatorToken = await servers[0].users.generateUserAndToken('moderator', UserRole.MODERATOR)
27
28 {
29 await servers[0].config.enableTranscoding(true, true)
30
31 {
32 const { uuid } = await servers[0].videos.quickUpload({ name: 'both 1' })
33 validId1 = uuid
34 }
35
36 {
37 const { uuid } = await servers[0].videos.quickUpload({ name: 'both 2' })
38 validId2 = uuid
39 }
40 }
41
42 await waitJobs(servers)
43
44 {
45 await servers[0].config.enableTranscoding(false, true)
46 const { uuid } = await servers[0].videos.quickUpload({ name: 'hls' })
47 hlsId = uuid
48 }
49
50 await waitJobs(servers)
51
52 {
53 await servers[0].config.enableTranscoding(false, true)
54 const { uuid } = await servers[0].videos.quickUpload({ name: 'webtorrent' })
55 webtorrentId = uuid
56 }
57
58 await waitJobs(servers)
59 })
60
61 it('Should not delete files of a remote video', async function () {
62 await servers[0].videos.removeHLSFiles({ videoId: remoteId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
63 await servers[0].videos.removeWebTorrentFiles({ videoId: remoteId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
64 })
65
66 it('Should not delete files by a non admin user', async function () {
67 const expectedStatus = HttpStatusCode.FORBIDDEN_403
68
69 await servers[0].videos.removeHLSFiles({ videoId: validId1, token: userToken, expectedStatus })
70 await servers[0].videos.removeHLSFiles({ videoId: validId1, token: moderatorToken, expectedStatus })
71
72 await servers[0].videos.removeWebTorrentFiles({ videoId: validId1, token: userToken, expectedStatus })
73 await servers[0].videos.removeWebTorrentFiles({ videoId: validId1, token: moderatorToken, expectedStatus })
74 })
75
76 it('Should not delete files if the files are not available', async function () {
77 await servers[0].videos.removeHLSFiles({ videoId: hlsId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
78 await servers[0].videos.removeWebTorrentFiles({ videoId: webtorrentId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
79 })
80
81 it('Should not delete files if no both versions are available', async function () {
82 await servers[0].videos.removeHLSFiles({ videoId: hlsId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
83 await servers[0].videos.removeWebTorrentFiles({ videoId: webtorrentId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
84 })
85
86 it('Should not delete files if no both versions are available', async function () {
87 await servers[0].videos.removeHLSFiles({ videoId: hlsId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
88 await servers[0].videos.removeWebTorrentFiles({ videoId: webtorrentId, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
89 })
90
91 it('Should delete files if both versions are available', async function () {
92 await servers[0].videos.removeHLSFiles({ videoId: validId1 })
93 await servers[0].videos.removeWebTorrentFiles({ videoId: validId2 })
94 })
95
96 after(async function () {
97 await cleanupTests(servers)
98 })
99})
diff --git a/server/tests/api/videos/index.ts b/server/tests/api/videos/index.ts
index c9c678e9d..f92e339e7 100644
--- a/server/tests/api/videos/index.ts
+++ b/server/tests/api/videos/index.ts
@@ -7,6 +7,7 @@ import './video-change-ownership'
7import './video-channels' 7import './video-channels'
8import './video-comments' 8import './video-comments'
9import './video-description' 9import './video-description'
10import './video-files'
10import './video-hls' 11import './video-hls'
11import './video-imports' 12import './video-imports'
12import './video-nsfw' 13import './video-nsfw'
diff --git a/server/tests/api/videos/video-files.ts b/server/tests/api/videos/video-files.ts
new file mode 100644
index 000000000..fcb2ca2e4
--- /dev/null
+++ b/server/tests/api/videos/video-files.ts
@@ -0,0 +1,70 @@
1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
2
3import 'mocha'
4import { expect } from 'chai'
5import { cleanupTests, createMultipleServers, doubleFollow, PeerTubeServer, setAccessTokensToServers, waitJobs } from '@shared/extra-utils'
6
7describe('Test videos files', function () {
8 let servers: PeerTubeServer[]
9 let validId1: string
10 let validId2: string
11
12 // ---------------------------------------------------------------
13
14 before(async function () {
15 this.timeout(150_000)
16
17 servers = await createMultipleServers(2)
18 await setAccessTokensToServers(servers)
19
20 await doubleFollow(servers[0], servers[1])
21
22 await servers[0].config.enableTranscoding(true, true)
23
24 {
25 const { uuid } = await servers[0].videos.quickUpload({ name: 'video 1' })
26 validId1 = uuid
27 }
28
29 {
30 const { uuid } = await servers[0].videos.quickUpload({ name: 'video 2' })
31 validId2 = uuid
32 }
33
34 await waitJobs(servers)
35 })
36
37 it('Should delete webtorrent files', async function () {
38 this.timeout(30_000)
39
40 await servers[0].videos.removeWebTorrentFiles({ videoId: validId1 })
41
42 await waitJobs(servers)
43
44 for (const server of servers) {
45 const video = await server.videos.get({ id: validId1 })
46
47 expect(video.files).to.have.lengthOf(0)
48 expect(video.streamingPlaylists).to.have.lengthOf(1)
49 }
50 })
51
52 it('Should delete HLS files', async function () {
53 this.timeout(30_000)
54
55 await servers[0].videos.removeHLSFiles({ videoId: validId2 })
56
57 await waitJobs(servers)
58
59 for (const server of servers) {
60 const video = await server.videos.get({ id: validId2 })
61
62 expect(video.files).to.have.length.above(0)
63 expect(video.streamingPlaylists).to.have.lengthOf(0)
64 }
65 })
66
67 after(async function () {
68 await cleanupTests(servers)
69 })
70})