]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/tests/plugins/plugin-storage.ts
Merge branch 'release/3.2.0' into develop
[github/Chocobozzz/PeerTube.git] / server / tests / plugins / plugin-storage.ts
CommitLineData
97b65ce5
C
1/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
2
3import 'mocha'
302eba0d
C
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'
97b65ce5
C
16import { cleanupTests, flushAndRunServer, ServerInfo, waitUntilLog } from '../../../shared/extra-utils/server/servers'
17
18describe('Test plugin storage', function () {
19 let server: ServerInfo
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('-six')
31 })
32 })
33
302eba0d
C
34 describe('DB storage', function () {
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 })
97b65ce5
C
99 })
100
101 after(async function () {
102 await cleanupTests([ server ])
103 })
104})