]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tests/api/check-params/videos-filter.ts
Adapt CLI to new commands
[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,
1cd3facc 6 createUser,
210feb6c 7 flushAndRunServer,
7c3b7976 8 makeGetRequest,
1cd3facc 9 ServerInfo,
7c3b7976 10 setAccessTokensToServers,
41d1d075 11 setDefaultVideoChannel
94565d52 12} from '../../../../shared/extra-utils'
1cd3facc 13import { UserRole } from '../../../../shared/models/users'
2d53be02 14import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
1cd3facc 15
2d53be02 16async function testEndpoints (server: ServerInfo, token: string, filter: string, statusCodeExpected: HttpStatusCode) {
1cd3facc
C
17 const paths = [
18 '/api/v1/video-channels/root_channel/videos',
19 '/api/v1/accounts/root/videos',
20 '/api/v1/videos',
bfbd9128 21 '/api/v1/search/videos'
1cd3facc
C
22 ]
23
24 for (const path of paths) {
25 await makeGetRequest({
26 url: server.url,
27 path,
28 token,
29 query: {
30 filter
31 },
32 statusCodeExpected
33 })
34 }
35}
36
3124b469 37describe('Test video filters validators', function () {
1cd3facc
C
38 let server: ServerInfo
39 let userAccessToken: string
40 let moderatorAccessToken: string
41
42 // ---------------------------------------------------------------
43
44 before(async function () {
45 this.timeout(30000)
46
210feb6c 47 server = await flushAndRunServer(1)
1cd3facc
C
48
49 await setAccessTokensToServers([ server ])
397d78fb 50 await setDefaultVideoChannel([ server ])
1cd3facc
C
51
52 const user = { username: 'user1', password: 'my super password' }
1eddc9a7 53 await createUser({ url: server.url, accessToken: server.accessToken, username: user.username, password: user.password })
41d1d075 54 userAccessToken = await server.loginCommand.getAccessToken(user)
1cd3facc
C
55
56 const moderator = { username: 'moderator', password: 'my super password' }
57 await createUser(
1eddc9a7
C
58 {
59 url: server.url,
60 accessToken: server.accessToken,
61 username: moderator.username,
62 password: moderator.password,
63 videoQuota: undefined,
64 videoQuotaDaily: undefined,
65 role: UserRole.MODERATOR
66 }
1cd3facc 67 )
41d1d075 68 moderatorAccessToken = await server.loginCommand.getAccessToken(moderator)
1cd3facc
C
69 })
70
71 describe('When setting a video filter', function () {
72
73 it('Should fail with a bad filter', async function () {
2d53be02 74 await testEndpoints(server, server.accessToken, 'bad-filter', HttpStatusCode.BAD_REQUEST_400)
1cd3facc
C
75 })
76
77 it('Should succeed with a good filter', async function () {
2d53be02 78 await testEndpoints(server, server.accessToken, 'local', HttpStatusCode.OK_200)
1cd3facc
C
79 })
80
0aa52e17 81 it('Should fail to list all-local/all with a simple user', async function () {
2d53be02
RK
82 await testEndpoints(server, userAccessToken, 'all-local', HttpStatusCode.UNAUTHORIZED_401)
83 await testEndpoints(server, userAccessToken, 'all', HttpStatusCode.UNAUTHORIZED_401)
1cd3facc
C
84 })
85
0aa52e17 86 it('Should succeed to list all-local/all with a moderator', async function () {
2d53be02
RK
87 await testEndpoints(server, moderatorAccessToken, 'all-local', HttpStatusCode.OK_200)
88 await testEndpoints(server, moderatorAccessToken, 'all', HttpStatusCode.OK_200)
1cd3facc
C
89 })
90
0aa52e17 91 it('Should succeed to list all-local/all with an admin', async function () {
2d53be02
RK
92 await testEndpoints(server, server.accessToken, 'all-local', HttpStatusCode.OK_200)
93 await testEndpoints(server, server.accessToken, 'all', HttpStatusCode.OK_200)
1cd3facc
C
94 })
95
96 // Because we cannot authenticate the user on the RSS endpoint
0aa52e17
C
97 it('Should fail on the feeds endpoint with the all-local/all filter', async function () {
98 for (const filter of [ 'all', 'all-local' ]) {
99 await makeGetRequest({
100 url: server.url,
101 path: '/feeds/videos.json',
2d53be02 102 statusCodeExpected: HttpStatusCode.UNAUTHORIZED_401,
0aa52e17
C
103 query: {
104 filter
105 }
106 })
107 }
1cd3facc
C
108 })
109
07b1a18a 110 it('Should succeed on the feeds endpoint with the local filter', async function () {
1cd3facc
C
111 await makeGetRequest({
112 url: server.url,
113 path: '/feeds/videos.json',
2d53be02 114 statusCodeExpected: HttpStatusCode.OK_200,
1cd3facc
C
115 query: {
116 filter: 'local'
117 }
118 })
119 })
120 })
121
7c3b7976
C
122 after(async function () {
123 await cleanupTests([ server ])
1cd3facc
C
124 })
125})