]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tests/api/check-params/videos-filter.ts
Merge branch 'next' into develop
[github/Chocobozzz/PeerTube.git] / server / tests / api / check-params / videos-filter.ts
CommitLineData
a1587156 1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
1cd3facc 2
1cd3facc
C
3import 'mocha'
4import {
7c3b7976 5 cleanupTests,
254d3579 6 createSingleServer,
7c3b7976 7 makeGetRequest,
254d3579 8 PeerTubeServer,
7c3b7976 9 setAccessTokensToServers,
41d1d075 10 setDefaultVideoChannel
c0e8b12e 11} from '@shared/extra-utils'
4c7e60bc 12import { HttpStatusCode, UserRole } from '@shared/models'
1cd3facc 13
c0e8b12e 14async function testEndpoints (server: PeerTubeServer, token: string, filter: string, expectedStatus: HttpStatusCode) {
1cd3facc
C
15 const paths = [
16 '/api/v1/video-channels/root_channel/videos',
17 '/api/v1/accounts/root/videos',
18 '/api/v1/videos',
bfbd9128 19 '/api/v1/search/videos'
1cd3facc
C
20 ]
21
22 for (const path of paths) {
23 await makeGetRequest({
24 url: server.url,
25 path,
26 token,
27 query: {
28 filter
29 },
c0e8b12e 30 expectedStatus
1cd3facc
C
31 })
32 }
33}
34
3124b469 35describe('Test video filters validators', function () {
254d3579 36 let server: PeerTubeServer
1cd3facc
C
37 let userAccessToken: string
38 let moderatorAccessToken: string
39
40 // ---------------------------------------------------------------
41
42 before(async function () {
43 this.timeout(30000)
44
254d3579 45 server = await createSingleServer(1)
1cd3facc
C
46
47 await setAccessTokensToServers([ server ])
397d78fb 48 await setDefaultVideoChannel([ server ])
1cd3facc
C
49
50 const user = { username: 'user1', password: 'my super password' }
89d241a7
C
51 await server.users.create({ username: user.username, password: user.password })
52 userAccessToken = await server.login.getAccessToken(user)
1cd3facc
C
53
54 const moderator = { username: 'moderator', password: 'my super password' }
89d241a7 55 await server.users.create({ username: moderator.username, password: moderator.password, role: UserRole.MODERATOR })
7926c5f9 56
89d241a7 57 moderatorAccessToken = await server.login.getAccessToken(moderator)
1cd3facc
C
58 })
59
60 describe('When setting a video filter', function () {
61
62 it('Should fail with a bad filter', async function () {
2d53be02 63 await testEndpoints(server, server.accessToken, 'bad-filter', HttpStatusCode.BAD_REQUEST_400)
1cd3facc
C
64 })
65
66 it('Should succeed with a good filter', async function () {
2d53be02 67 await testEndpoints(server, server.accessToken, 'local', HttpStatusCode.OK_200)
1cd3facc
C
68 })
69
0aa52e17 70 it('Should fail to list all-local/all with a simple user', async function () {
2d53be02
RK
71 await testEndpoints(server, userAccessToken, 'all-local', HttpStatusCode.UNAUTHORIZED_401)
72 await testEndpoints(server, userAccessToken, 'all', HttpStatusCode.UNAUTHORIZED_401)
1cd3facc
C
73 })
74
0aa52e17 75 it('Should succeed to list all-local/all with a moderator', async function () {
2d53be02
RK
76 await testEndpoints(server, moderatorAccessToken, 'all-local', HttpStatusCode.OK_200)
77 await testEndpoints(server, moderatorAccessToken, 'all', HttpStatusCode.OK_200)
1cd3facc
C
78 })
79
0aa52e17 80 it('Should succeed to list all-local/all with an admin', async function () {
2d53be02
RK
81 await testEndpoints(server, server.accessToken, 'all-local', HttpStatusCode.OK_200)
82 await testEndpoints(server, server.accessToken, 'all', HttpStatusCode.OK_200)
1cd3facc
C
83 })
84
85 // Because we cannot authenticate the user on the RSS endpoint
0aa52e17
C
86 it('Should fail on the feeds endpoint with the all-local/all filter', async function () {
87 for (const filter of [ 'all', 'all-local' ]) {
88 await makeGetRequest({
89 url: server.url,
90 path: '/feeds/videos.json',
c0e8b12e 91 expectedStatus: HttpStatusCode.UNAUTHORIZED_401,
0aa52e17
C
92 query: {
93 filter
94 }
95 })
96 }
1cd3facc
C
97 })
98
07b1a18a 99 it('Should succeed on the feeds endpoint with the local filter', async function () {
1cd3facc
C
100 await makeGetRequest({
101 url: server.url,
102 path: '/feeds/videos.json',
c0e8b12e 103 expectedStatus: HttpStatusCode.OK_200,
1cd3facc
C
104 query: {
105 filter: 'local'
106 }
107 })
108 })
109 })
110
7c3b7976
C
111 after(async function () {
112 await cleanupTests([ server ])
1cd3facc
C
113 })
114})