]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tests/api/check-params/videos-filter.ts
Cleanup tests
[github/Chocobozzz/PeerTube.git] / server / tests / api / check-params / videos-filter.ts
CommitLineData
1cd3facc
C
1/* tslint:disable:no-unused-expression */
2
1cd3facc
C
3import 'mocha'
4import {
5 createUser,
07b1a18a 6 createVideoPlaylist,
1cd3facc
C
7 flushTests,
8 killallServers,
9 makeGetRequest,
210feb6c 10 flushAndRunServer,
1cd3facc 11 ServerInfo,
397d78fb 12 setAccessTokensToServers, setDefaultVideoChannel,
1cd3facc 13 userLogin
94565d52 14} from '../../../../shared/extra-utils'
1cd3facc 15import { UserRole } from '../../../../shared/models/users'
07b1a18a 16import { VideoPlaylistPrivacy } from '../../../../shared/models/videos/playlist/video-playlist-privacy.model'
1cd3facc 17
07b1a18a 18async function testEndpoints (server: ServerInfo, token: string, filter: string, playlistUUID: string, statusCodeExpected: number) {
1cd3facc
C
19 const paths = [
20 '/api/v1/video-channels/root_channel/videos',
21 '/api/v1/accounts/root/videos',
22 '/api/v1/videos',
07b1a18a
C
23 '/api/v1/search/videos',
24 '/api/v1/video-playlists/' + playlistUUID + '/videos'
1cd3facc
C
25 ]
26
27 for (const path of paths) {
28 await makeGetRequest({
29 url: server.url,
30 path,
31 token,
32 query: {
33 filter
34 },
35 statusCodeExpected
36 })
37 }
38}
39
40describe('Test videos filters', function () {
41 let server: ServerInfo
42 let userAccessToken: string
43 let moderatorAccessToken: string
07b1a18a 44 let playlistUUID: string
1cd3facc
C
45
46 // ---------------------------------------------------------------
47
48 before(async function () {
49 this.timeout(30000)
50
210feb6c 51 server = await flushAndRunServer(1)
1cd3facc
C
52
53 await setAccessTokensToServers([ server ])
397d78fb 54 await setDefaultVideoChannel([ server ])
1cd3facc
C
55
56 const user = { username: 'user1', password: 'my super password' }
1eddc9a7 57 await createUser({ url: server.url, accessToken: server.accessToken, username: user.username, password: user.password })
1cd3facc
C
58 userAccessToken = await userLogin(server, user)
59
60 const moderator = { username: 'moderator', password: 'my super password' }
61 await createUser(
1eddc9a7
C
62 {
63 url: server.url,
64 accessToken: server.accessToken,
65 username: moderator.username,
66 password: moderator.password,
67 videoQuota: undefined,
68 videoQuotaDaily: undefined,
69 role: UserRole.MODERATOR
70 }
1cd3facc
C
71 )
72 moderatorAccessToken = await userLogin(server, moderator)
07b1a18a
C
73
74 const res = await createVideoPlaylist({
75 url: server.url,
76 token: server.accessToken,
77 playlistAttrs: {
78 displayName: 'super playlist',
397d78fb
C
79 privacy: VideoPlaylistPrivacy.PUBLIC,
80 videoChannelId: server.videoChannel.id
07b1a18a
C
81 }
82 })
83 playlistUUID = res.body.videoPlaylist.uuid
1cd3facc
C
84 })
85
86 describe('When setting a video filter', function () {
87
88 it('Should fail with a bad filter', async function () {
07b1a18a 89 await testEndpoints(server, server.accessToken, 'bad-filter', playlistUUID, 400)
1cd3facc
C
90 })
91
92 it('Should succeed with a good filter', async function () {
07b1a18a 93 await testEndpoints(server, server.accessToken,'local', playlistUUID, 200)
1cd3facc
C
94 })
95
96 it('Should fail to list all-local with a simple user', async function () {
07b1a18a 97 await testEndpoints(server, userAccessToken, 'all-local', playlistUUID, 401)
1cd3facc
C
98 })
99
100 it('Should succeed to list all-local with a moderator', async function () {
07b1a18a 101 await testEndpoints(server, moderatorAccessToken, 'all-local', playlistUUID, 200)
1cd3facc
C
102 })
103
104 it('Should succeed to list all-local with an admin', async function () {
07b1a18a 105 await testEndpoints(server, server.accessToken, 'all-local', playlistUUID, 200)
1cd3facc
C
106 })
107
108 // Because we cannot authenticate the user on the RSS endpoint
109 it('Should fail on the feeds endpoint with the all-local filter', async function () {
110 await makeGetRequest({
111 url: server.url,
112 path: '/feeds/videos.json',
113 statusCodeExpected: 401,
114 query: {
115 filter: 'all-local'
116 }
117 })
118 })
119
07b1a18a 120 it('Should succeed on the feeds endpoint with the local filter', async function () {
1cd3facc
C
121 await makeGetRequest({
122 url: server.url,
123 path: '/feeds/videos.json',
124 statusCodeExpected: 200,
125 query: {
126 filter: 'local'
127 }
128 })
129 })
130 })
131
210feb6c 132 after(function () {
1cd3facc 133 killallServers([ server ])
1cd3facc
C
134 })
135})