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