-import { makeGetRequest, makePostBodyRequest, makePutBodyRequest } from '../requests/requests'
-import { PluginType } from '../../models/plugins/plugin.type'
-import { PeertubePluginIndexList } from '../../models/plugins/peertube-plugin-index-list.model'
+/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
+
+import { expect } from 'chai'
import { readJSON, writeJSON } from 'fs-extra'
-import { ServerInfo } from './servers'
-import { root } from '../miscs/miscs'
import { join } from 'path'
+import { RegisteredServerSettings } from '@shared/models'
+import { HttpStatusCode } from '../../../shared/core-utils/miscs/http-error-codes'
+import { PeertubePluginIndexList } from '../../models/plugins/plugin-index/peertube-plugin-index-list.model'
+import { PluginType } from '../../models/plugins/plugin.type'
+import { buildServerDirectory, root } from '../miscs/miscs'
+import { makeGetRequest, makePostBodyRequest, makePutBodyRequest } from '../requests/requests'
+import { ServerInfo } from './servers'
function listPlugins (parameters: {
- url: string,
- accessToken: string,
- start?: number,
- count?: number,
- sort?: string,
- pluginType?: PluginType,
- uninstalled?: boolean,
- expectedStatus?: number
+ url: string
+ accessToken: string
+ start?: number
+ count?: number
+ sort?: string
+ pluginType?: PluginType
+ uninstalled?: boolean
+ expectedStatus?: HttpStatusCode
}) {
- const { url, accessToken, start, count, sort, pluginType, uninstalled, expectedStatus = 200 } = parameters
+ const { url, accessToken, start, count, sort, pluginType, uninstalled, expectedStatus = HttpStatusCode.OK_200 } = parameters
const path = '/api/v1/plugins'
return makeGetRequest({
}
function listAvailablePlugins (parameters: {
- url: string,
- accessToken: string,
- start?: number,
- count?: number,
- sort?: string,
- pluginType?: PluginType,
- currentPeerTubeEngine?: string,
+ url: string
+ accessToken: string
+ start?: number
+ count?: number
+ sort?: string
+ pluginType?: PluginType
+ currentPeerTubeEngine?: string
search?: string
- expectedStatus?: number
+ expectedStatus?: HttpStatusCode
}) {
- const { url, accessToken, start, count, sort, pluginType, search, currentPeerTubeEngine, expectedStatus = 200 } = parameters
+ const {
+ url,
+ accessToken,
+ start,
+ count,
+ sort,
+ pluginType,
+ search,
+ currentPeerTubeEngine,
+ expectedStatus = HttpStatusCode.OK_200
+ } = parameters
const path = '/api/v1/plugins/available'
const query: PeertubePluginIndexList = {
}
function getPlugin (parameters: {
- url: string,
- accessToken: string,
- npmName: string,
- expectedStatus?: number
+ url: string
+ accessToken: string
+ npmName: string
+ expectedStatus?: HttpStatusCode
}) {
- const { url, accessToken, npmName, expectedStatus = 200 } = parameters
+ const { url, accessToken, npmName, expectedStatus = HttpStatusCode.OK_200 } = parameters
const path = '/api/v1/plugins/' + npmName
return makeGetRequest({
}
function updatePluginSettings (parameters: {
- url: string,
- accessToken: string,
- npmName: string,
- settings: any,
- expectedStatus?: number
+ url: string
+ accessToken: string
+ npmName: string
+ settings: any
+ expectedStatus?: HttpStatusCode
}) {
- const { url, accessToken, npmName, settings, expectedStatus = 204 } = parameters
+ const { url, accessToken, npmName, settings, expectedStatus = HttpStatusCode.NO_CONTENT_204 } = parameters
const path = '/api/v1/plugins/' + npmName + '/settings'
return makePutBodyRequest({
}
function getPluginRegisteredSettings (parameters: {
- url: string,
- accessToken: string,
- npmName: string,
- expectedStatus?: number
+ url: string
+ accessToken: string
+ npmName: string
+ expectedStatus?: HttpStatusCode
}) {
- const { url, accessToken, npmName, expectedStatus = 200 } = parameters
+ const { url, accessToken, npmName, expectedStatus = HttpStatusCode.OK_200 } = parameters
const path = '/api/v1/plugins/' + npmName + '/registered-settings'
return makeGetRequest({
})
}
+async function testHelloWorldRegisteredSettings (server: ServerInfo) {
+ const res = await getPluginRegisteredSettings({
+ url: server.url,
+ accessToken: server.accessToken,
+ npmName: 'peertube-plugin-hello-world'
+ })
+
+ const registeredSettings = (res.body as RegisteredServerSettings).registeredSettings
+
+ expect(registeredSettings).to.have.length.at.least(1)
+
+ const adminNameSettings = registeredSettings.find(s => s.name === 'admin-name')
+ expect(adminNameSettings).to.not.be.undefined
+}
+
+function getPublicSettings (parameters: {
+ url: string
+ npmName: string
+ expectedStatus?: HttpStatusCode
+}) {
+ const { url, npmName, expectedStatus = HttpStatusCode.OK_200 } = parameters
+ const path = '/api/v1/plugins/' + npmName + '/public-settings'
+
+ return makeGetRequest({
+ url,
+ path,
+ statusCodeExpected: expectedStatus
+ })
+}
+
+function getPluginTranslations (parameters: {
+ url: string
+ locale: string
+ expectedStatus?: HttpStatusCode
+}) {
+ const { url, locale, expectedStatus = HttpStatusCode.OK_200 } = parameters
+ const path = '/plugins/translations/' + locale + '.json'
+
+ return makeGetRequest({
+ url,
+ path,
+ statusCodeExpected: expectedStatus
+ })
+}
+
function installPlugin (parameters: {
- url: string,
- accessToken: string,
- path?: string,
+ url: string
+ accessToken: string
+ path?: string
npmName?: string
- expectedStatus?: number
+ expectedStatus?: HttpStatusCode
}) {
- const { url, accessToken, npmName, path, expectedStatus = 200 } = parameters
+ const { url, accessToken, npmName, path, expectedStatus = HttpStatusCode.OK_200 } = parameters
const apiPath = '/api/v1/plugins/install'
return makePostBodyRequest({
}
function updatePlugin (parameters: {
- url: string,
- accessToken: string,
- path?: string,
+ url: string
+ accessToken: string
+ path?: string
npmName?: string
- expectedStatus?: number
+ expectedStatus?: HttpStatusCode
}) {
- const { url, accessToken, npmName, path, expectedStatus = 200 } = parameters
+ const { url, accessToken, npmName, path, expectedStatus = HttpStatusCode.OK_200 } = parameters
const apiPath = '/api/v1/plugins/update'
return makePostBodyRequest({
}
function uninstallPlugin (parameters: {
- url: string,
- accessToken: string,
+ url: string
+ accessToken: string
npmName: string
- expectedStatus?: number
+ expectedStatus?: HttpStatusCode
}) {
- const { url, accessToken, npmName, expectedStatus = 204 } = parameters
+ const { url, accessToken, npmName, expectedStatus = HttpStatusCode.NO_CONTENT_204 } = parameters
const apiPath = '/api/v1/plugins/uninstall'
return makePostBodyRequest({
return makeGetRequest({
url,
path,
- statusCodeExpected: 200
+ statusCodeExpected: HttpStatusCode.OK_200
})
}
function getPackageJSONPath (server: ServerInfo, npmName: string) {
- return join(root(), 'test' + server.internalServerNumber, 'plugins', 'node_modules', npmName, 'package.json')
+ return buildServerDirectory(server, join('plugins', 'node_modules', npmName, 'package.json'))
}
function updatePluginPackageJSON (server: ServerInfo, npmName: string, json: any) {
return readJSON(path)
}
+function getPluginTestPath (suffix = '') {
+ return join(root(), 'server', 'tests', 'fixtures', 'peertube-plugin-test' + suffix)
+}
+
+function getExternalAuth (options: {
+ url: string
+ npmName: string
+ npmVersion: string
+ authName: string
+ query?: any
+ statusCodeExpected?: HttpStatusCode
+}) {
+ const { url, npmName, npmVersion, authName, statusCodeExpected, query } = options
+
+ const path = '/plugins/' + npmName + '/' + npmVersion + '/auth/' + authName
+
+ return makeGetRequest({
+ url,
+ path,
+ query,
+ statusCodeExpected: statusCodeExpected || HttpStatusCode.OK_200,
+ redirects: 0
+ })
+}
+
export {
listPlugins,
listAvailablePlugins,
installPlugin,
+ getPluginTranslations,
getPluginsCSS,
updatePlugin,
getPlugin,
uninstallPlugin,
+ testHelloWorldRegisteredSettings,
updatePluginSettings,
getPluginRegisteredSettings,
getPackageJSONPath,
updatePluginPackageJSON,
- getPluginPackageJSON
+ getPluginPackageJSON,
+ getPluginTestPath,
+ getPublicSettings,
+ getExternalAuth
}