1
0
Fork 0

Tests that show the bug.

This commit is contained in:
John Livingston 2021-04-08 17:19:12 +02:00 committed by Chocobozzz
parent dc48fdbe68
commit 4113719209
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
5 changed files with 126 additions and 0 deletions

View File

@ -0,0 +1,2 @@
const d = new Date()
exports.value = d.getTime()

View File

@ -0,0 +1,14 @@
const lib = require('./lib')
async function register ({ getRouter }) {
const router = getRouter()
router.get('/get', (req, res) => res.json({ message: lib.value }))
}
async function unregister () {
}
module.exports = {
register,
unregister
}

View File

@ -0,0 +1,20 @@
{
"name": "peertube-plugin-test-unloading",
"version": "0.0.1",
"description": "Plugin test (modules unloading)",
"engine": {
"peertube": ">=1.3.0"
},
"keywords": [
"peertube",
"plugin"
],
"homepage": "https://github.com/Chocobozzz/PeerTube",
"author": "Chocobozzz",
"bugs": "https://github.com/Chocobozzz/PeerTube/issues",
"library": "./main.js",
"staticDirs": {},
"css": [],
"clientScripts": [],
"translations": {}
}

View File

@ -7,5 +7,6 @@ import './plugin-helpers'
import './plugin-router'
import './plugin-storage'
import './plugin-transcoding'
import './plugin-unloading'
import './translations'
import './video-constants'

View File

@ -0,0 +1,89 @@
/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
import 'mocha'
import {
cleanupTests,
flushAndRunServer,
getPluginTestPath,
makeGetRequest,
installPlugin,
uninstallPlugin,
ServerInfo,
setAccessTokensToServers
} from '../../../shared/extra-utils'
import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
import { expect } from 'chai'
describe('Test plugins module unloading', function () {
let server: ServerInfo = null
const requestPath = '/plugins/test-unloading/router/get'
let value: string = null
before(async function () {
this.timeout(30000)
server = await flushAndRunServer(1)
await setAccessTokensToServers([ server ])
await installPlugin({
url: server.url,
accessToken: server.accessToken,
path: getPluginTestPath('-unloading')
})
})
it('Should return a numeric value', async function () {
const res = await makeGetRequest({
url: server.url,
path: requestPath,
statusCodeExpected: HttpStatusCode.OK_200
})
expect(res.body.message).to.match(/^\d+$/)
value = res.body.message
})
it('Should return the same value the second time', async function () {
const res = await makeGetRequest({
url: server.url,
path: requestPath,
statusCodeExpected: HttpStatusCode.OK_200
})
expect(res.body.message).to.be.equal(value)
})
it('Should uninstall the plugin and free the route', async function () {
await uninstallPlugin({
url: server.url,
accessToken: server.accessToken,
npmName: 'peertube-plugin-test-unloading'
})
await makeGetRequest({
url: server.url,
path: requestPath,
statusCodeExpected: HttpStatusCode.NOT_FOUND_404
})
})
it('Should return a different numeric value', async function () {
await installPlugin({
url: server.url,
accessToken: server.accessToken,
path: getPluginTestPath('-unloading')
})
const res = await makeGetRequest({
url: server.url,
path: requestPath,
statusCodeExpected: HttpStatusCode.OK_200
})
expect(res.body.message).to.match(/^\d+$/)
expect(res.body.message).to.be.not.equal(value)
})
after(async function () {
await cleanupTests([ server ])
})
})