]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/api/server/plugins.ts
Merge branch 'master' into release/3.3.0
[github/Chocobozzz/PeerTube.git] / server / tests / api / server / plugins.ts
index ecf7c0d3f7f1ec4a0a7200c1d252b267b5215788..6b61c7c33705384733584872d4fe6d7d7daa62f0 100644 (file)
@@ -2,6 +2,7 @@
 
 import 'mocha'
 import * as chai from 'chai'
+import { HttpStatusCode } from '@shared/core-utils'
 import {
   cleanupTests,
   closeAllSequelize,
@@ -10,7 +11,7 @@ import {
   getMyUserInformation,
   getPlugin,
   getPluginPackageJSON,
-  getPluginRegisteredSettings,
+  getPluginTestPath,
   getPublicSettings,
   installPlugin,
   killallServers,
@@ -20,6 +21,7 @@ import {
   ServerInfo,
   setAccessTokensToServers,
   setPluginVersion,
+  testHelloWorldRegisteredSettings,
   uninstallPlugin,
   updateCustomSubConfig,
   updateMyUser,
@@ -28,15 +30,8 @@ import {
   updatePluginSettings,
   wait,
   waitUntilLog
-} from '../../../../shared/extra-utils'
-import { PeerTubePluginIndex } from '../../../../shared/models/plugins/peertube-plugin-index.model'
-import { PeerTubePlugin } from '../../../../shared/models/plugins/peertube-plugin.model'
-import { PluginPackageJson } from '../../../../shared/models/plugins/plugin-package-json.model'
-import { PluginType } from '../../../../shared/models/plugins/plugin.type'
-import { PublicServerSetting } from '../../../../shared/models/plugins/public-server.setting'
-import { RegisteredServerSettings } from '../../../../shared/models/plugins/register-server-setting.model'
-import { ServerConfig } from '../../../../shared/models/server'
-import { User } from '../../../../shared/models/users'
+} from '@shared/extra-utils'
+import { PeerTubePlugin, PeerTubePluginIndex, PluginPackageJson, PluginType, PublicServerSetting, ServerConfig, User } from '@shared/models'
 
 const expect = chai.expect
 
@@ -209,18 +204,7 @@ describe('Test plugins', function () {
   })
 
   it('Should get registered settings', async function () {
-    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
+    await testHelloWorldRegisteredSettings(server)
   })
 
   it('Should get public settings', async function () {
@@ -302,7 +286,7 @@ describe('Test plugins', function () {
   })
 
   it('Should update the plugin and the theme', async function () {
-    this.timeout(30000)
+    this.timeout(90000)
 
     // Wait the scheduler that get the latest plugins versions
     await wait(6000)
@@ -418,6 +402,36 @@ describe('Test plugins', function () {
     expect((res.body as User).theme).to.equal('instance-default')
   })
 
+  it('Should not install a broken plugin', async function () {
+    this.timeout(60000)
+
+    async function check () {
+      const res = await listPlugins({
+        url: server.url,
+        accessToken: server.accessToken,
+        pluginType: PluginType.PLUGIN
+      })
+
+      const plugins: PeerTubePlugin[] = res.body.data
+
+      expect(plugins.find(p => p.name === 'test-broken')).to.not.exist
+    }
+
+    await installPlugin({
+      url: server.url,
+      accessToken: server.accessToken,
+      path: getPluginTestPath('-broken'),
+      expectedStatus: HttpStatusCode.BAD_REQUEST_400
+    })
+
+    await check()
+
+    killallServers([ server ])
+    await reRunServer(server)
+
+    await check()
+  })
+
   after(async function () {
     await closeAllSequelize([ server ])
     await cleanupTests([ server ])