87 lines
2.3 KiB
TypeScript
87 lines
2.3 KiB
TypeScript
/* tslint:disable:no-unused-expression */
|
|
|
|
import 'mocha'
|
|
import {
|
|
cleanupTests,
|
|
execCLI,
|
|
flushAndRunServer,
|
|
getConfig,
|
|
getEnvCli, killallServers,
|
|
reRunServer,
|
|
root,
|
|
ServerInfo,
|
|
setAccessTokensToServers
|
|
} from '../../../shared/extra-utils'
|
|
import { join } from 'path'
|
|
import { ServerConfig } from '../../../shared/models/server'
|
|
import { expect } from 'chai'
|
|
|
|
describe('Test plugin scripts', function () {
|
|
let server: ServerInfo
|
|
|
|
before(async function () {
|
|
this.timeout(30000)
|
|
|
|
server = await flushAndRunServer(1)
|
|
await setAccessTokensToServers([ server ])
|
|
})
|
|
|
|
it('Should install a plugin from stateless CLI', async function () {
|
|
this.timeout(60000)
|
|
|
|
const packagePath = join(root(), 'server', 'tests', 'fixtures', 'peertube-plugin-test')
|
|
|
|
const env = getEnvCli(server)
|
|
await execCLI(`${env} npm run plugin:install -- --plugin-path ${packagePath}`)
|
|
})
|
|
|
|
it('Should install a theme from stateless CLI', async function () {
|
|
this.timeout(60000)
|
|
|
|
const env = getEnvCli(server)
|
|
await execCLI(`${env} npm run plugin:install -- --npm-name peertube-theme-background-red`)
|
|
})
|
|
|
|
it('Should have the theme and the plugin registered when we restart peertube', async function () {
|
|
this.timeout(30000)
|
|
|
|
killallServers([ server ])
|
|
await reRunServer(server)
|
|
|
|
const res = await getConfig(server.url)
|
|
const config: ServerConfig = res.body
|
|
|
|
const plugin = config.plugin.registered
|
|
.find(p => p.name === 'test')
|
|
expect(plugin).to.not.be.undefined
|
|
|
|
const theme = config.theme.registered
|
|
.find(t => t.name === 'background-red')
|
|
expect(theme).to.not.be.undefined
|
|
})
|
|
|
|
it('Should uninstall a plugin from stateless CLI', async function () {
|
|
this.timeout(60000)
|
|
|
|
const env = getEnvCli(server)
|
|
await execCLI(`${env} npm run plugin:uninstall -- --npm-name peertube-plugin-test`)
|
|
})
|
|
|
|
it('Should have removed the plugin on another peertube restart', async function () {
|
|
this.timeout(30000)
|
|
|
|
killallServers([ server ])
|
|
await reRunServer(server)
|
|
|
|
const res = await getConfig(server.url)
|
|
const config: ServerConfig = res.body
|
|
|
|
const plugin = config.plugin.registered
|
|
.find(p => p.name === 'test')
|
|
expect(plugin).to.be.undefined
|
|
})
|
|
|
|
after(async function () {
|
|
await cleanupTests([ server ])
|
|
})
|
|
})
|