aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/tests
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2021-04-22 10:55:28 +0200
committerChocobozzz <me@florianbigard.com>2021-04-22 10:55:28 +0200
commit302eba0d898e38dca14739486441c27c0be6c62f (patch)
tree280d18bfe2ad1b16248277371e609c31d6b3aaa4 /server/tests
parent3e0e8d4afded28559b7c473061bbdc31ab542e1c (diff)
downloadPeerTube-302eba0d898e38dca14739486441c27c0be6c62f.tar.gz
PeerTube-302eba0d898e38dca14739486441c27c0be6c62f.tar.zst
PeerTube-302eba0d898e38dca14739486441c27c0be6c62f.zip
Add data directory for plugins and some helpers
Diffstat (limited to 'server/tests')
-rw-r--r--server/tests/fixtures/peertube-plugin-test-four/main.js23
-rw-r--r--server/tests/fixtures/peertube-plugin-test-six/main.js18
-rw-r--r--server/tests/plugins/plugin-helpers.ts40
-rw-r--r--server/tests/plugins/plugin-storage.ts80
4 files changed, 156 insertions, 5 deletions
diff --git a/server/tests/fixtures/peertube-plugin-test-four/main.js b/server/tests/fixtures/peertube-plugin-test-four/main.js
index ea0599997..6930ac511 100644
--- a/server/tests/fixtures/peertube-plugin-test-four/main.js
+++ b/server/tests/fixtures/peertube-plugin-test-four/main.js
@@ -77,10 +77,31 @@ async function register ({
77 }) 77 })
78 78
79 router.get('/static-route', async (req, res) => { 79 router.get('/static-route', async (req, res) => {
80 const staticRoute = await peertubeHelpers.plugin.getBaseStaticRoute() 80 const staticRoute = peertubeHelpers.plugin.getBaseStaticRoute()
81 81
82 return res.json({ staticRoute }) 82 return res.json({ staticRoute })
83 }) 83 })
84
85 router.get('/router-route', async (req, res) => {
86 const routerRoute = peertubeHelpers.plugin.getBaseRouterRoute()
87
88 return res.json({ routerRoute })
89 })
90
91 router.get('/user', async (req, res) => {
92 const user = peertubeHelpers.user.getAuthUser(res)
93
94 const isAdmin = user.role === 0
95 const isModerator = user.role === 1
96 const isUser = user.role === 2
97
98 return res.json({
99 username: user.username,
100 isAdmin,
101 isModerator,
102 isUser
103 })
104 })
84 } 105 }
85 106
86} 107}
diff --git a/server/tests/fixtures/peertube-plugin-test-six/main.js b/server/tests/fixtures/peertube-plugin-test-six/main.js
index bb9aaffa7..858bdb2df 100644
--- a/server/tests/fixtures/peertube-plugin-test-six/main.js
+++ b/server/tests/fixtures/peertube-plugin-test-six/main.js
@@ -1,6 +1,10 @@
1const fs = require('fs')
2const path = require('path')
3
1async function register ({ 4async function register ({
2 storageManager, 5 storageManager,
3 peertubeHelpers 6 peertubeHelpers,
7 getRouter
4}) { 8}) {
5 const { logger } = peertubeHelpers 9 const { logger } = peertubeHelpers
6 10
@@ -11,6 +15,18 @@ async function register ({
11 const result = await storageManager.getData('superkey') 15 const result = await storageManager.getData('superkey')
12 logger.info('superkey stored value is %s', result.value) 16 logger.info('superkey stored value is %s', result.value)
13 } 17 }
18
19 {
20 getRouter().get('/create-file', async (req, res) => {
21 const basePath = peertubeHelpers.plugin.getDataDirectoryPath()
22
23 fs.writeFile(path.join(basePath, 'Aladdin.txt'), 'Prince Ali', function (err) {
24 if (err) return res.sendStatus(500)
25
26 res.sendStatus(200)
27 })
28 })
29 }
14} 30}
15 31
16async function unregister () { 32async function unregister () {
diff --git a/server/tests/plugins/plugin-helpers.ts b/server/tests/plugins/plugin-helpers.ts
index 325d20e84..2ac070b41 100644
--- a/server/tests/plugins/plugin-helpers.ts
+++ b/server/tests/plugins/plugin-helpers.ts
@@ -100,6 +100,46 @@ describe('Test plugin helpers', function () {
100 100
101 expect(res.body.staticRoute).to.equal('/plugins/test-four/0.0.1/static/') 101 expect(res.body.staticRoute).to.equal('/plugins/test-four/0.0.1/static/')
102 }) 102 })
103
104 it('Should get the base static route', async function () {
105 const baseRouter = '/plugins/test-four/0.0.1/router/'
106
107 const res = await makeGetRequest({
108 url: servers[0].url,
109 path: baseRouter + 'router-route',
110 statusCodeExpected: HttpStatusCode.OK_200
111 })
112
113 expect(res.body.routerRoute).to.equal(baseRouter)
114 })
115 })
116
117 describe('User', function () {
118
119 it('Should not get a user if not authenticated', async function () {
120 const res = await makeGetRequest({
121 url: servers[0].url,
122 path: '/plugins/test-four/router/user',
123 statusCodeExpected: HttpStatusCode.OK_200
124 })
125
126 expect(res.body.user).to.be.undefined
127 })
128
129 it('Should get a user if authenticated', async function () {
130 const res = await makeGetRequest({
131 url: servers[0].url,
132 token: servers[0].accessToken,
133 path: '/plugins/test-four/router/user',
134 statusCodeExpected: HttpStatusCode.OK_200
135 })
136
137 expect(res.body.user).to.exist
138 expect(res.body.username).to.equal('root')
139 expect(res.body.isAdmin).to.be.true
140 expect(res.body.isModerator).to.be.false
141 expect(res.body.isUser).to.be.false
142 })
103 }) 143 })
104 144
105 describe('Moderation', function () { 145 describe('Moderation', function () {
diff --git a/server/tests/plugins/plugin-storage.ts b/server/tests/plugins/plugin-storage.ts
index 356692eb9..3c46b2585 100644
--- a/server/tests/plugins/plugin-storage.ts
+++ b/server/tests/plugins/plugin-storage.ts
@@ -1,7 +1,18 @@
1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ 1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
2 2
3import 'mocha' 3import 'mocha'
4import { getPluginTestPath, installPlugin, setAccessTokensToServers } from '../../../shared/extra-utils' 4import { expect } from 'chai'
5import { pathExists, readdir, readFile } from 'fs-extra'
6import { join } from 'path'
7import { HttpStatusCode } from '@shared/core-utils'
8import {
9 buildServerDirectory,
10 getPluginTestPath,
11 installPlugin,
12 makeGetRequest,
13 setAccessTokensToServers,
14 uninstallPlugin
15} from '../../../shared/extra-utils'
5import { cleanupTests, flushAndRunServer, ServerInfo, waitUntilLog } from '../../../shared/extra-utils/server/servers' 16import { cleanupTests, flushAndRunServer, ServerInfo, waitUntilLog } from '../../../shared/extra-utils/server/servers'
6 17
7describe('Test plugin storage', function () { 18describe('Test plugin storage', function () {
@@ -20,8 +31,71 @@ describe('Test plugin storage', function () {
20 }) 31 })
21 }) 32 })
22 33
23 it('Should correctly store a subkey', async function () { 34 describe('DB storage', function () {
24 await waitUntilLog(server, 'superkey stored value is toto') 35
36 it('Should correctly store a subkey', async function () {
37 await waitUntilLog(server, 'superkey stored value is toto')
38 })
39 })
40
41 describe('Disk storage', function () {
42 let dataPath: string
43 let pluginDataPath: string
44
45 async function getFileContent () {
46 const files = await readdir(pluginDataPath)
47 expect(files).to.have.lengthOf(1)
48
49 return readFile(join(pluginDataPath, files[0]), 'utf8')
50 }
51
52 before(function () {
53 dataPath = buildServerDirectory(server, 'plugins/data')
54 pluginDataPath = join(dataPath, 'peertube-plugin-test-six')
55 })
56
57 it('Should have created the directory on install', async function () {
58 const dataPath = buildServerDirectory(server, 'plugins/data')
59 const pluginDataPath = join(dataPath, 'peertube-plugin-test-six')
60
61 expect(await pathExists(dataPath)).to.be.true
62 expect(await pathExists(pluginDataPath)).to.be.true
63 expect(await readdir(pluginDataPath)).to.have.lengthOf(0)
64 })
65
66 it('Should have created a file', async function () {
67 await makeGetRequest({
68 url: server.url,
69 token: server.accessToken,
70 path: '/plugins/test-six/router/create-file',
71 statusCodeExpected: HttpStatusCode.OK_200
72 })
73
74 const content = await getFileContent()
75 expect(content).to.equal('Prince Ali')
76 })
77
78 it('Should still have the file after an uninstallation', async function () {
79 await uninstallPlugin({
80 url: server.url,
81 accessToken: server.accessToken,
82 npmName: 'peertube-plugin-test-six'
83 })
84
85 const content = await getFileContent()
86 expect(content).to.equal('Prince Ali')
87 })
88
89 it('Should still have the file after the reinstallation', async function () {
90 await installPlugin({
91 url: server.url,
92 accessToken: server.accessToken,
93 path: getPluginTestPath('-six')
94 })
95
96 const content = await getFileContent()
97 expect(content).to.equal('Prince Ali')
98 })
25 }) 99 })
26 100
27 after(async function () { 101 after(async function () {