From 5e2b2e2775421cd98286d6e2f75cf38aae7a212c Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 10 Apr 2020 15:07:54 +0200 Subject: Add ability for plugins to add custom routes --- server/tests/plugins/index.ts | 1 + server/tests/plugins/plugin-router.ts | 91 +++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 server/tests/plugins/plugin-router.ts (limited to 'server/tests/plugins') diff --git a/server/tests/plugins/index.ts b/server/tests/plugins/index.ts index 9c9499a79..1414e7e58 100644 --- a/server/tests/plugins/index.ts +++ b/server/tests/plugins/index.ts @@ -3,3 +3,4 @@ import './filter-hooks' import './translations' import './video-constants' import './plugin-helpers' +import './plugin-router' diff --git a/server/tests/plugins/plugin-router.ts b/server/tests/plugins/plugin-router.ts new file mode 100644 index 000000000..cf4130f4b --- /dev/null +++ b/server/tests/plugins/plugin-router.ts @@ -0,0 +1,91 @@ +/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ + +import 'mocha' +import { cleanupTests, flushAndRunServer, ServerInfo } from '../../../shared/extra-utils/server/servers' +import { + getPluginTestPath, + installPlugin, + makeGetRequest, + makePostBodyRequest, + setAccessTokensToServers, uninstallPlugin +} from '../../../shared/extra-utils' +import { expect } from 'chai' + +describe('Test plugin helpers', function () { + let server: ServerInfo + const basePaths = [ + '/plugins/test-five/router/', + '/plugins/test-five/0.0.1/router/' + ] + + before(async function () { + this.timeout(30000) + + server = await flushAndRunServer(1) + await setAccessTokensToServers([ server ]) + + await installPlugin({ + url: server.url, + accessToken: server.accessToken, + path: getPluginTestPath('-five') + }) + }) + + it('Should answer "pong"', async function () { + for (const path of basePaths) { + const res = await makeGetRequest({ + url: server.url, + path: path + 'ping', + statusCodeExpected: 200 + }) + + expect(res.body.message).to.equal('pong') + } + }) + + it('Should mirror post body', async function () { + const body = { + hello: 'world', + riri: 'fifi', + loulou: 'picsou' + } + + for (const path of basePaths) { + const res = await makePostBodyRequest({ + url: server.url, + path: path + 'form/post/mirror', + fields: body, + statusCodeExpected: 200 + }) + + expect(res.body).to.deep.equal(body) + } + }) + + it('Should remove the plugin and remove the routes', async function () { + await uninstallPlugin({ + url: server.url, + accessToken: server.accessToken, + npmName: 'peertube-plugin-test-five' + }) + + for (const path of basePaths) { + await makeGetRequest({ + url: server.url, + path: path + 'ping', + statusCodeExpected: 404 + }) + + await makePostBodyRequest({ + url: server.url, + path: path + 'ping', + fields: {}, + statusCodeExpected: 404 + }) + } + }) + + after(async function () { + await cleanupTests([ server ]) + }) +}) -- cgit v1.2.3