diff options
Diffstat (limited to 'packages/tests/src/plugins/plugin-storage.ts')
-rw-r--r-- | packages/tests/src/plugins/plugin-storage.ts | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/packages/tests/src/plugins/plugin-storage.ts b/packages/tests/src/plugins/plugin-storage.ts new file mode 100644 index 000000000..f9b0ead0c --- /dev/null +++ b/packages/tests/src/plugins/plugin-storage.ts | |||
@@ -0,0 +1,95 @@ | |||
1 | /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */ | ||
2 | |||
3 | import { expect } from 'chai' | ||
4 | import { pathExists } from 'fs-extra/esm' | ||
5 | import { readdir, readFile } from 'fs/promises' | ||
6 | import { join } from 'path' | ||
7 | import { HttpStatusCode } from '@peertube/peertube-models' | ||
8 | import { | ||
9 | cleanupTests, | ||
10 | createSingleServer, | ||
11 | makeGetRequest, | ||
12 | PeerTubeServer, | ||
13 | PluginsCommand, | ||
14 | setAccessTokensToServers | ||
15 | } from '@peertube/peertube-server-commands' | ||
16 | |||
17 | describe('Test plugin storage', function () { | ||
18 | let server: PeerTubeServer | ||
19 | |||
20 | before(async function () { | ||
21 | this.timeout(30000) | ||
22 | |||
23 | server = await createSingleServer(1) | ||
24 | await setAccessTokensToServers([ server ]) | ||
25 | |||
26 | await server.plugins.install({ path: PluginsCommand.getPluginTestPath('-six') }) | ||
27 | }) | ||
28 | |||
29 | describe('DB storage', function () { | ||
30 | it('Should correctly store a subkey', async function () { | ||
31 | await server.servers.waitUntilLog('superkey stored value is toto') | ||
32 | }) | ||
33 | |||
34 | it('Should correctly retrieve an array as array from the storage.', async function () { | ||
35 | await server.servers.waitUntilLog('storedArrayKey isArray is true') | ||
36 | await server.servers.waitUntilLog('storedArrayKey stored value is toto, toto2') | ||
37 | }) | ||
38 | }) | ||
39 | |||
40 | describe('Disk storage', function () { | ||
41 | let dataPath: string | ||
42 | let pluginDataPath: string | ||
43 | |||
44 | async function getFileContent () { | ||
45 | const files = await readdir(pluginDataPath) | ||
46 | expect(files).to.have.lengthOf(1) | ||
47 | |||
48 | return readFile(join(pluginDataPath, files[0]), 'utf8') | ||
49 | } | ||
50 | |||
51 | before(function () { | ||
52 | dataPath = server.servers.buildDirectory('plugins/data') | ||
53 | pluginDataPath = join(dataPath, 'peertube-plugin-test-six') | ||
54 | }) | ||
55 | |||
56 | it('Should have created the directory on install', async function () { | ||
57 | const dataPath = server.servers.buildDirectory('plugins/data') | ||
58 | const pluginDataPath = join(dataPath, 'peertube-plugin-test-six') | ||
59 | |||
60 | expect(await pathExists(dataPath)).to.be.true | ||
61 | expect(await pathExists(pluginDataPath)).to.be.true | ||
62 | expect(await readdir(pluginDataPath)).to.have.lengthOf(0) | ||
63 | }) | ||
64 | |||
65 | it('Should have created a file', async function () { | ||
66 | await makeGetRequest({ | ||
67 | url: server.url, | ||
68 | token: server.accessToken, | ||
69 | path: '/plugins/test-six/router/create-file', | ||
70 | expectedStatus: HttpStatusCode.OK_200 | ||
71 | }) | ||
72 | |||
73 | const content = await getFileContent() | ||
74 | expect(content).to.equal('Prince Ali') | ||
75 | }) | ||
76 | |||
77 | it('Should still have the file after an uninstallation', async function () { | ||
78 | await server.plugins.uninstall({ npmName: 'peertube-plugin-test-six' }) | ||
79 | |||
80 | const content = await getFileContent() | ||
81 | expect(content).to.equal('Prince Ali') | ||
82 | }) | ||
83 | |||
84 | it('Should still have the file after the reinstallation', async function () { | ||
85 | await server.plugins.install({ path: PluginsCommand.getPluginTestPath('-six') }) | ||
86 | |||
87 | const content = await getFileContent() | ||
88 | expect(content).to.equal('Prince Ali') | ||
89 | }) | ||
90 | }) | ||
91 | |||
92 | after(async function () { | ||
93 | await cleanupTests([ server ]) | ||
94 | }) | ||
95 | }) | ||