X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Ftests%2Fplugins%2Ffilter-hooks.ts;h=e05de587d34325fd6b8b38175d775c89f7192752;hb=e0faa8ad6e18ce6248ef1ec93a59dab5b05be468;hp=7adfc1277cf47e8ea743801ea3fc89bfb2d8a56b;hpb=c729caf6cc34630877a0e5a1bda1719384cd0c8a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/tests/plugins/filter-hooks.ts b/server/tests/plugins/filter-hooks.ts index 7adfc1277..e05de587d 100644 --- a/server/tests/plugins/filter-hooks.ts +++ b/server/tests/plugins/filter-hooks.ts @@ -1,6 +1,5 @@ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ -import 'mocha' import * as chai from 'chai' import { HttpStatusCode, VideoDetails, VideoImportState, VideoPlaylist, VideoPlaylistPrivacy, VideoPrivacy } from '@shared/models' import { @@ -22,6 +21,7 @@ describe('Test plugin filter hooks', function () { let servers: PeerTubeServer[] let videoUUID: string let threadId: number + let videoPlaylistUUID: string before(async function () { this.timeout(60000) @@ -33,9 +33,20 @@ describe('Test plugin filter hooks', function () { await servers[0].plugins.install({ path: PluginsCommand.getPluginTestPath() }) await servers[0].plugins.install({ path: PluginsCommand.getPluginTestPath('-filter-translations') }) + { + ({ uuid: videoPlaylistUUID } = await servers[0].playlists.create({ + attributes: { + displayName: 'my super playlist', + privacy: VideoPlaylistPrivacy.PUBLIC, + description: 'my super description', + videoChannelId: servers[0].store.channel.id + } + })) + } for (let i = 0; i < 10; i++) { - await servers[0].videos.upload({ attributes: { name: 'default video ' + i } }) + const video = await servers[0].videos.upload({ attributes: { name: 'default video ' + i } }) + await servers[0].playlists.addElement({ playlistId: videoPlaylistUUID, attributes: { videoId: video.id } }) } const { data } = await servers[0].videos.list() @@ -69,6 +80,26 @@ describe('Test plugin filter hooks', function () { expect(total).to.equal(11) }) + it('Should run filter:api.video-playlist.videos.list.params', async function () { + const { data } = await servers[0].playlists.listVideos({ + count: 2, + playlistId: videoPlaylistUUID + }) + + // 1 plugin do +1 to the count parameter + expect(data).to.have.lengthOf(3) + }) + + it('Should run filter:api.video-playlist.videos.list.result', async function () { + const { total } = await servers[0].playlists.listVideos({ + count: 0, + playlistId: videoPlaylistUUID + }) + + // Plugin do +1 to the total result + expect(total).to.equal(11) + }) + it('Should run filter:api.accounts.videos.list.params', async function () { const { data } = await servers[0].videos.listByAccount({ handle: 'root', start: 0, count: 2 }) @@ -263,7 +294,7 @@ describe('Test plugin filter hooks', function () { await servers[0].servers.waitUntilLog('Run hook filter:api.overviews.videos.list.result', 3) }) - describe('Should run filter:video.auto-blacklist.result', function () { + describe('filter:video.auto-blacklist.result', function () { async function checkIsBlacklisted (id: number | string, value: boolean) { const video = await servers[0].videos.getWithToken({ id }) @@ -363,7 +394,7 @@ describe('Test plugin filter hooks', function () { const uuids: string[] = [] for (const name of [ 'bad torrent', 'bad file', 'bad playlist file' ]) { - const uuid = (await servers[0].videos.quickUpload({ name: name })).uuid + const uuid = (await servers[0].videos.quickUpload({ name })).uuid uuids.push(uuid) } @@ -414,7 +445,7 @@ describe('Test plugin filter hooks', function () { for (const name of [ 'bad embed', 'good embed' ]) { { - const uuid = (await servers[0].videos.quickUpload({ name: name })).uuid + const uuid = (await servers[0].videos.quickUpload({ name })).uuid embedVideos.push(await servers[0].videos.get({ id: uuid })) } @@ -600,6 +631,87 @@ describe('Test plugin filter hooks', function () { }) + describe('Job queue filters', function () { + let videoUUID: string + + before(async function () { + this.timeout(120_000) + + await servers[0].config.enableMinimumTranscoding() + const { uuid } = await servers[0].videos.quickUpload({ name: 'studio' }) + + const video = await servers[0].videos.get({ id: uuid }) + expect(video.duration).at.least(2) + videoUUID = video.uuid + + await waitJobs(servers) + + await servers[0].config.enableStudio() + }) + + it('Should run filter:job-queue.process.params', async function () { + this.timeout(120_000) + + await servers[0].videoStudio.createEditionTasks({ + videoId: videoUUID, + tasks: [ + { + name: 'add-intro', + options: { + file: 'video_very_short_240p.mp4' + } + } + ] + }) + + await waitJobs(servers) + + await servers[0].servers.waitUntilLog('Run hook filter:job-queue.process.params', 1, false) + + const video = await servers[0].videos.get({ id: videoUUID }) + expect(video.duration).at.most(2) + }) + + it('Should run filter:job-queue.process.result', async function () { + await servers[0].servers.waitUntilLog('Run hook filter:job-queue.process.result', 1, false) + }) + }) + + describe('Transcoding filters', async function () { + + it('Should run filter:transcoding.auto.resolutions-to-transcode.result', async function () { + const { uuid } = await servers[0].videos.quickUpload({ name: 'transcode-filter' }) + + await waitJobs(servers) + + const video = await servers[0].videos.get({ id: uuid }) + expect(video.files).to.have.lengthOf(2) + expect(video.files.find(f => f.resolution.id === 100 as any)).to.exist + }) + }) + + describe('Video channel filters', async function () { + + it('Should run filter:api.video-channels.list.params', async function () { + const { data } = await servers[0].channels.list({ start: 0, count: 0 }) + + // plugin do +1 to the count parameter + expect(data).to.have.lengthOf(1) + }) + + it('Should run filter:api.video-channels.list.result', async function () { + const { total } = await servers[0].channels.list({ start: 0, count: 1 }) + + // plugin do +1 to the total parameter + expect(total).to.equal(4) + }) + + it('Should run filter:api.video-channel.get.result', async function () { + const channel = await servers[0].channels.get({ channelName: 'root_channel' }) + expect(channel.displayName).to.equal('Main root channel <3') + }) + }) + after(async function () { await cleanupTests(servers) })