From ab3ead3a6f080e6768b898e699c8de92703d93c6 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 9 Apr 2020 11:35:29 +0200 Subject: Add ability to remove a video from a plugin --- .../fixtures/peertube-plugin-test-four/main.js | 18 +++++++++-- server/tests/plugins/plugin-helpers.ts | 36 +++++++++++++++++++--- 2 files changed, 47 insertions(+), 7 deletions(-) (limited to 'server/tests') diff --git a/server/tests/fixtures/peertube-plugin-test-four/main.js b/server/tests/fixtures/peertube-plugin-test-four/main.js index 9abb73646..2e81550c1 100644 --- a/server/tests/fixtures/peertube-plugin-test-four/main.js +++ b/server/tests/fixtures/peertube-plugin-test-four/main.js @@ -1,7 +1,10 @@ async function register ({ - peertubeHelpers + peertubeHelpers, + registerHook }) { - peertubeHelpers.logger.info('Hello world from plugin four') + const logger = peertubeHelpers.logger + + logger.info('Hello world from plugin four') const username = 'root' const results = await peertubeHelpers.database.query( @@ -12,7 +15,16 @@ async function register ({ } ) - peertubeHelpers.logger.info('root email is ' + results[0]['email']) + logger.info('root email is ' + results[0]['email']) + + registerHook({ + target: 'action:api.video.viewed', + handler: async ({ video }) => { + await peertubeHelpers.videos.removeVideo(video.id) + + logger.info('Video deleted by plugin four.') + } + }) } async function unregister () { diff --git a/server/tests/plugins/plugin-helpers.ts b/server/tests/plugins/plugin-helpers.ts index 05928273f..dfe8ebe55 100644 --- a/server/tests/plugins/plugin-helpers.ts +++ b/server/tests/plugins/plugin-helpers.ts @@ -1,11 +1,16 @@ /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ -import * as chai from 'chai' import 'mocha' import { cleanupTests, flushAndRunServer, ServerInfo, waitUntilLog } from '../../../shared/extra-utils/server/servers' -import { getPluginTestPath, installPlugin, setAccessTokensToServers } from '../../../shared/extra-utils' - -const expect = chai.expect +import { + checkVideoFilesWereRemoved, + getPluginTestPath, + getVideo, + installPlugin, + setAccessTokensToServers, + uploadVideoAndGetId, + viewVideo +} from '../../../shared/extra-utils' describe('Test plugin helpers', function () { let server: ServerInfo @@ -32,6 +37,29 @@ describe('Test plugin helpers', function () { await waitUntilLog(server, `root email is admin${server.internalServerNumber}@example.com`, 1) }) + it('Should remove a video after a view', async function () { + this.timeout(20000) + + const videoUUID = (await uploadVideoAndGetId({ server: server, videoName: 'video1' })).uuid + + // Should not throw -> video exists + await getVideo(server.url, videoUUID) + // Should delete the video + await viewVideo(server.url, videoUUID) + + await waitUntilLog(server, 'Video deleted by plugin four.', 1) + + try { + // Should throw because the video should have been deleted + await getVideo(server.url, videoUUID) + throw new Error('Video exists') + } catch (err) { + if (err.message.includes('exists')) throw err + } + + await checkVideoFilesWereRemoved(videoUUID, server.internalServerNumber) + }) + after(async function () { await cleanupTests([ server ]) }) -- cgit v1.2.3