diff options
Diffstat (limited to 'server/tests/plugins')
-rw-r--r-- | server/tests/plugins/index.ts | 1 | ||||
-rw-r--r-- | server/tests/plugins/plugin-router.ts | 91 |
2 files changed, 92 insertions, 0 deletions
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' | |||
3 | import './translations' | 3 | import './translations' |
4 | import './video-constants' | 4 | import './video-constants' |
5 | import './plugin-helpers' | 5 | import './plugin-helpers' |
6 | 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 @@ | |||
1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ | ||
2 | |||
3 | import 'mocha' | ||
4 | import { cleanupTests, flushAndRunServer, ServerInfo } from '../../../shared/extra-utils/server/servers' | ||
5 | import { | ||
6 | getPluginTestPath, | ||
7 | installPlugin, | ||
8 | makeGetRequest, | ||
9 | makePostBodyRequest, | ||
10 | setAccessTokensToServers, uninstallPlugin | ||
11 | } from '../../../shared/extra-utils' | ||
12 | import { expect } from 'chai' | ||
13 | |||
14 | describe('Test plugin helpers', function () { | ||
15 | let server: ServerInfo | ||
16 | const basePaths = [ | ||
17 | '/plugins/test-five/router/', | ||
18 | '/plugins/test-five/0.0.1/router/' | ||
19 | ] | ||
20 | |||
21 | before(async function () { | ||
22 | this.timeout(30000) | ||
23 | |||
24 | server = await flushAndRunServer(1) | ||
25 | await setAccessTokensToServers([ server ]) | ||
26 | |||
27 | await installPlugin({ | ||
28 | url: server.url, | ||
29 | accessToken: server.accessToken, | ||
30 | path: getPluginTestPath('-five') | ||
31 | }) | ||
32 | }) | ||
33 | |||
34 | it('Should answer "pong"', async function () { | ||
35 | for (const path of basePaths) { | ||
36 | const res = await makeGetRequest({ | ||
37 | url: server.url, | ||
38 | path: path + 'ping', | ||
39 | statusCodeExpected: 200 | ||
40 | }) | ||
41 | |||
42 | expect(res.body.message).to.equal('pong') | ||
43 | } | ||
44 | }) | ||
45 | |||
46 | it('Should mirror post body', async function () { | ||
47 | const body = { | ||
48 | hello: 'world', | ||
49 | riri: 'fifi', | ||
50 | loulou: 'picsou' | ||
51 | } | ||
52 | |||
53 | for (const path of basePaths) { | ||
54 | const res = await makePostBodyRequest({ | ||
55 | url: server.url, | ||
56 | path: path + 'form/post/mirror', | ||
57 | fields: body, | ||
58 | statusCodeExpected: 200 | ||
59 | }) | ||
60 | |||
61 | expect(res.body).to.deep.equal(body) | ||
62 | } | ||
63 | }) | ||
64 | |||
65 | it('Should remove the plugin and remove the routes', async function () { | ||
66 | await uninstallPlugin({ | ||
67 | url: server.url, | ||
68 | accessToken: server.accessToken, | ||
69 | npmName: 'peertube-plugin-test-five' | ||
70 | }) | ||
71 | |||
72 | for (const path of basePaths) { | ||
73 | await makeGetRequest({ | ||
74 | url: server.url, | ||
75 | path: path + 'ping', | ||
76 | statusCodeExpected: 404 | ||
77 | }) | ||
78 | |||
79 | await makePostBodyRequest({ | ||
80 | url: server.url, | ||
81 | path: path + 'ping', | ||
82 | fields: {}, | ||
83 | statusCodeExpected: 404 | ||
84 | }) | ||
85 | } | ||
86 | }) | ||
87 | |||
88 | after(async function () { | ||
89 | await cleanupTests([ server ]) | ||
90 | }) | ||
91 | }) | ||