aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/tests
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2021-03-23 17:18:18 +0100
committerChocobozzz <me@florianbigard.com>2021-03-24 18:18:41 +0100
commiteebd9838f067369031af9770b899f75f30810549 (patch)
treeb7ce9668e6a653a097b6790ac944eaa1d78d2032 /server/tests
parent4bc45da342597fb49593fc14c40f8dc5a97bb64e (diff)
downloadPeerTube-eebd9838f067369031af9770b899f75f30810549.tar.gz
PeerTube-eebd9838f067369031af9770b899f75f30810549.tar.zst
PeerTube-eebd9838f067369031af9770b899f75f30810549.zip
Add filter hook to forbid embed access
Diffstat (limited to 'server/tests')
-rw-r--r--server/tests/fixtures/peertube-plugin-test/main.js20
-rw-r--r--server/tests/plugins/filter-hooks.ts54
2 files changed, 72 insertions, 2 deletions
diff --git a/server/tests/fixtures/peertube-plugin-test/main.js b/server/tests/fixtures/peertube-plugin-test/main.js
index 9913d0846..dfcc874d4 100644
--- a/server/tests/fixtures/peertube-plugin-test/main.js
+++ b/server/tests/fixtures/peertube-plugin-test/main.js
@@ -210,6 +210,26 @@ async function register ({ registerHook, registerSetting, settingsManager, stora
210 return result 210 return result
211 } 211 }
212 }) 212 })
213
214 registerHook({
215 target: 'filter:html.embed.video.allowed.result',
216 handler: (result, params) => {
217 return {
218 allowed: false,
219 html: 'Lu Bu'
220 }
221 }
222 })
223
224 registerHook({
225 target: 'filter:html.embed.video-playlist.allowed.result',
226 handler: (result, params) => {
227 return {
228 allowed: false,
229 html: 'Diao Chan'
230 }
231 }
232 })
213} 233}
214 234
215async function unregister () { 235async function unregister () {
diff --git a/server/tests/plugins/filter-hooks.ts b/server/tests/plugins/filter-hooks.ts
index 6996ae788..be47b20ba 100644
--- a/server/tests/plugins/filter-hooks.ts
+++ b/server/tests/plugins/filter-hooks.ts
@@ -3,10 +3,12 @@
3import 'mocha' 3import 'mocha'
4import * as chai from 'chai' 4import * as chai from 'chai'
5import { ServerConfig } from '@shared/models' 5import { ServerConfig } from '@shared/models'
6import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
6import { 7import {
7 addVideoCommentReply, 8 addVideoCommentReply,
8 addVideoCommentThread, 9 addVideoCommentThread,
9 createLive, 10 createLive,
11 createVideoPlaylist,
10 doubleFollow, 12 doubleFollow,
11 getAccountVideos, 13 getAccountVideos,
12 getConfig, 14 getConfig,
@@ -15,6 +17,7 @@ import {
15 getVideo, 17 getVideo,
16 getVideoChannelVideos, 18 getVideoChannelVideos,
17 getVideoCommentThreads, 19 getVideoCommentThreads,
20 getVideoPlaylist,
18 getVideosList, 21 getVideosList,
19 getVideosListPagination, 22 getVideosListPagination,
20 getVideoThreadComments, 23 getVideoThreadComments,
@@ -32,9 +35,15 @@ import {
32} from '../../../shared/extra-utils' 35} from '../../../shared/extra-utils'
33import { cleanupTests, flushAndRunMultipleServers, ServerInfo } from '../../../shared/extra-utils/server/servers' 36import { cleanupTests, flushAndRunMultipleServers, ServerInfo } from '../../../shared/extra-utils/server/servers'
34import { getGoodVideoUrl, getMyVideoImports, importVideo } from '../../../shared/extra-utils/videos/video-imports' 37import { getGoodVideoUrl, getMyVideoImports, importVideo } from '../../../shared/extra-utils/videos/video-imports'
35import { VideoDetails, VideoImport, VideoImportState, VideoPrivacy } from '../../../shared/models/videos' 38import {
39 VideoDetails,
40 VideoImport,
41 VideoImportState,
42 VideoPlaylist,
43 VideoPlaylistPrivacy,
44 VideoPrivacy
45} from '../../../shared/models/videos'
36import { VideoCommentThreadTree } from '../../../shared/models/videos/video-comment.model' 46import { VideoCommentThreadTree } from '../../../shared/models/videos/video-comment.model'
37import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
38 47
39const expect = chai.expect 48const expect = chai.expect
40 49
@@ -418,6 +427,47 @@ describe('Test plugin filter hooks', function () {
418 }) 427 })
419 }) 428 })
420 429
430 describe('Embed filters', function () {
431 const embedVideos: VideoDetails[] = []
432 const embedPlaylists: VideoPlaylist[] = []
433
434 before(async function () {
435 this.timeout(60000)
436
437 await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
438 transcoding: {
439 enabled: false
440 }
441 })
442
443 for (const name of [ 'bad embed', 'good embed' ]) {
444 {
445 const uuid = (await uploadVideoAndGetId({ server: servers[0], videoName: name })).uuid
446 const res = await getVideo(servers[0].url, uuid)
447 embedVideos.push(res.body)
448 }
449
450 {
451 const playlistAttrs = { displayName: name, videoChannelId: servers[0].videoChannel.id, privacy: VideoPlaylistPrivacy.PUBLIC }
452 const res = await createVideoPlaylist({ url: servers[0].url, token: servers[0].accessToken, playlistAttrs })
453
454 const resPlaylist = await getVideoPlaylist(servers[0].url, res.body.videoPlaylist.id)
455 embedPlaylists.push(resPlaylist.body)
456 }
457 }
458 })
459
460 it('Should run filter:html.embed.video.allowed.result', async function () {
461 const res = await makeRawRequest(servers[0].url + embedVideos[0].embedPath, 200)
462 expect(res.text).to.equal('Lu Bu')
463 })
464
465 it('Should run filter:html.embed.video-playlist.allowed.result', async function () {
466 const res = await makeRawRequest(servers[0].url + embedPlaylists[0].embedPath, 200)
467 expect(res.text).to.equal('Diao Chan')
468 })
469 })
470
421 after(async function () { 471 after(async function () {
422 await cleanupTests(servers) 472 await cleanupTests(servers)
423 }) 473 })