]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/tests/api/check-params/plugins.ts
Channel sync (#5135)
[github/Chocobozzz/PeerTube.git] / server / tests / api / check-params / plugins.ts
index cf80b35c297e6217c43b02b95df4c6291c677cec..c3f15b86e43bf5ec0830313fa9e6bb76bf09f48e 100644 (file)
@@ -1,26 +1,20 @@
 /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
 
 import 'mocha'
-
+import { checkBadCountPagination, checkBadSortPagination, checkBadStartPagination } from '@server/tests/shared'
+import { HttpStatusCode, PeerTubePlugin, PluginType } from '@shared/models'
 import {
-  checkBadCountPagination,
-  checkBadSortPagination,
-  checkBadStartPagination,
   cleanupTests,
-  createUser,
-  flushAndRunServer,
-  immutableAssign,
-  installPlugin,
-  makeGetRequest, makePostBodyRequest, makePutBodyRequest,
-  ServerInfo,
-  setAccessTokensToServers,
-  userLogin
-} from '../../../../shared/extra-utils'
-import { PluginType } from '../../../../shared/models/plugins/plugin.type'
-import { PeerTubePlugin } from '../../../../shared/models/plugins/peertube-plugin.model'
+  createSingleServer,
+  makeGetRequest,
+  makePostBodyRequest,
+  makePutBodyRequest,
+  PeerTubeServer,
+  setAccessTokensToServers
+} from '@shared/server-commands'
 
 describe('Test server plugins API validators', function () {
-  let server: ServerInfo
+  let server: PeerTubeServer
   let userAccessToken = null
 
   const npmPlugin = 'peertube-plugin-hello-world'
@@ -34,9 +28,9 @@ describe('Test server plugins API validators', function () {
   // ---------------------------------------------------------------
 
   before(async function () {
-    this.timeout(30000)
+    this.timeout(60000)
 
-    server = await flushAndRunServer(1)
+    server = await createSingleServer(1)
 
     await setAccessTokensToServers([ server ])
 
@@ -45,17 +39,17 @@ describe('Test server plugins API validators', function () {
       password: 'password'
     }
 
-    await createUser({ url: server.url, accessToken: server.accessToken, username: user.username, password: user.password })
-    userAccessToken = await userLogin(server, user)
+    await server.users.create({ username: user.username, password: user.password })
+    userAccessToken = await server.login.getAccessToken(user)
 
     {
-      const res = await installPlugin({ url: server.url, accessToken: server.accessToken, npmName: npmPlugin })
+      const res = await server.plugins.install({ npmName: npmPlugin })
       const plugin = res.body as PeerTubePlugin
       npmVersion = plugin.version
     }
 
     {
-      const res = await installPlugin({ url: server.url, accessToken: server.accessToken, npmName: themePlugin })
+      const res = await server.plugins.install({ npmName: themePlugin })
       const plugin = res.body as PeerTubePlugin
       themeVersion = plugin.version
     }
@@ -64,6 +58,7 @@ describe('Test server plugins API validators', function () {
   describe('With static plugin routes', function () {
     it('Should fail with an unknown plugin name/plugin version', async function () {
       const paths = [
+        '/plugins/' + pluginName + '/0.0.1/auth/fake-auth',
         '/plugins/' + pluginName + '/0.0.1/static/images/chocobo.png',
         '/plugins/' + pluginName + '/0.0.1/client-scripts/client/common-client-plugin.js',
         '/themes/' + themeName + '/0.0.1/static/images/chocobo.png',
@@ -72,7 +67,7 @@ describe('Test server plugins API validators', function () {
       ]
 
       for (const p of paths) {
-        await makeGetRequest({ url: server.url, path: p, statusCodeExpected: 404 })
+        await makeGetRequest({ url: server.url, path: p, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
       }
     })
 
@@ -80,12 +75,13 @@ describe('Test server plugins API validators', function () {
       await makeGetRequest({
         url: server.url,
         path: '/themes/' + pluginName + '/' + npmVersion + '/static/images/chocobo.png',
-        statusCodeExpected: 404
+        expectedStatus: HttpStatusCode.NOT_FOUND_404
       })
     })
 
     it('Should fail with invalid versions', async function () {
       const paths = [
+        '/plugins/' + pluginName + '/0.0.1.1/auth/fake-auth',
         '/plugins/' + pluginName + '/0.0.1.1/static/images/chocobo.png',
         '/plugins/' + pluginName + '/0.1/client-scripts/client/common-client-plugin.js',
         '/themes/' + themeName + '/1/static/images/chocobo.png',
@@ -94,7 +90,7 @@ describe('Test server plugins API validators', function () {
       ]
 
       for (const p of paths) {
-        await makeGetRequest({ url: server.url, path: p, statusCodeExpected: 400 })
+        await makeGetRequest({ url: server.url, path: p, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
       }
     })
 
@@ -108,10 +104,16 @@ describe('Test server plugins API validators', function () {
       ]
 
       for (const p of paths) {
-        await makeGetRequest({ url: server.url, path: p, statusCodeExpected: 400 })
+        await makeGetRequest({ url: server.url, path: p, expectedStatus: HttpStatusCode.BAD_REQUEST_400 })
       }
     })
 
+    it('Should fail with an unknown auth name', async function () {
+      const path = '/plugins/' + pluginName + '/' + npmVersion + '/auth/bad-auth'
+
+      await makeGetRequest({ url: server.url, path, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
+    })
+
     it('Should fail with an unknown static file', async function () {
       const paths = [
         '/plugins/' + pluginName + '/' + npmVersion + '/static/fake/chocobo.png',
@@ -121,7 +123,7 @@ describe('Test server plugins API validators', function () {
       ]
 
       for (const p of paths) {
-        await makeGetRequest({ url: server.url, path: p, statusCodeExpected: 404 })
+        await makeGetRequest({ url: server.url, path: p, expectedStatus: HttpStatusCode.NOT_FOUND_404 })
       }
     })
 
@@ -129,7 +131,7 @@ describe('Test server plugins API validators', function () {
       await makeGetRequest({
         url: server.url,
         path: '/themes/' + themeName + '/' + themeVersion + '/css/assets/fake.css',
-        statusCodeExpected: 404
+        expectedStatus: HttpStatusCode.NOT_FOUND_404
       })
     })
 
@@ -143,8 +145,11 @@ describe('Test server plugins API validators', function () {
       ]
 
       for (const p of paths) {
-        await makeGetRequest({ url: server.url, path: p, statusCodeExpected: 200 })
+        await makeGetRequest({ url: server.url, path: p, expectedStatus: HttpStatusCode.OK_200 })
       }
+
+      const authPath = '/plugins/' + pluginName + '/' + npmVersion + '/auth/fake-auth'
+      await makeGetRequest({ url: server.url, path: authPath, expectedStatus: HttpStatusCode.FOUND_302 })
     })
   })
 
@@ -162,7 +167,7 @@ describe('Test server plugins API validators', function () {
         path,
         token: 'fake_token',
         query: baseQuery,
-        statusCodeExpected: 401
+        expectedStatus: HttpStatusCode.UNAUTHORIZED_401
       })
     })
 
@@ -172,7 +177,7 @@ describe('Test server plugins API validators', function () {
         path,
         token: userAccessToken,
         query: baseQuery,
-        statusCodeExpected: 403
+        expectedStatus: HttpStatusCode.FORBIDDEN_403
       })
     })
 
@@ -189,7 +194,7 @@ describe('Test server plugins API validators', function () {
     })
 
     it('Should fail with an invalid plugin type', async function () {
-      const query = immutableAssign(baseQuery, { pluginType: 5 })
+      const query = { ...baseQuery, pluginType: 5 }
 
       await makeGetRequest({
         url: server.url,
@@ -200,7 +205,7 @@ describe('Test server plugins API validators', function () {
     })
 
     it('Should fail with an invalid current peertube engine', async function () {
-      const query = immutableAssign(baseQuery, { currentPeerTubeEngine: '1.0' })
+      const query = { ...baseQuery, currentPeerTubeEngine: '1.0' }
 
       await makeGetRequest({
         url: server.url,
@@ -216,7 +221,7 @@ describe('Test server plugins API validators', function () {
         path,
         token: server.accessToken,
         query: baseQuery,
-        statusCodeExpected: 200
+        expectedStatus: HttpStatusCode.OK_200
       })
     })
   })
@@ -233,7 +238,7 @@ describe('Test server plugins API validators', function () {
         path,
         token: 'fake_token',
         query: baseQuery,
-        statusCodeExpected: 401
+        expectedStatus: HttpStatusCode.UNAUTHORIZED_401
       })
     })
 
@@ -243,7 +248,7 @@ describe('Test server plugins API validators', function () {
         path,
         token: userAccessToken,
         query: baseQuery,
-        statusCodeExpected: 403
+        expectedStatus: HttpStatusCode.FORBIDDEN_403
       })
     })
 
@@ -260,7 +265,7 @@ describe('Test server plugins API validators', function () {
     })
 
     it('Should fail with an invalid plugin type', async function () {
-      const query = immutableAssign(baseQuery, { pluginType: 5 })
+      const query = { ...baseQuery, pluginType: 5 }
 
       await makeGetRequest({
         url: server.url,
@@ -276,7 +281,7 @@ describe('Test server plugins API validators', function () {
         path,
         token: server.accessToken,
         query: baseQuery,
-        statusCodeExpected: 200
+        expectedStatus: HttpStatusCode.OK_200
       })
     })
   })
@@ -290,7 +295,7 @@ describe('Test server plugins API validators', function () {
           url: server.url,
           path: path + suffix,
           token: 'fake_token',
-          statusCodeExpected: 401
+          expectedStatus: HttpStatusCode.UNAUTHORIZED_401
         })
       }
     })
@@ -301,7 +306,7 @@ describe('Test server plugins API validators', function () {
           url: server.url,
           path: path + suffix,
           token: userAccessToken,
-          statusCodeExpected: 403
+          expectedStatus: HttpStatusCode.FORBIDDEN_403
         })
       }
     })
@@ -312,7 +317,7 @@ describe('Test server plugins API validators', function () {
           url: server.url,
           path: path + suffix,
           token: server.accessToken,
-          statusCodeExpected: 400
+          expectedStatus: HttpStatusCode.BAD_REQUEST_400
         })
       }
 
@@ -321,7 +326,7 @@ describe('Test server plugins API validators', function () {
           url: server.url,
           path: path + suffix,
           token: server.accessToken,
-          statusCodeExpected: 400
+          expectedStatus: HttpStatusCode.BAD_REQUEST_400
         })
       }
     })
@@ -332,7 +337,7 @@ describe('Test server plugins API validators', function () {
           url: server.url,
           path: path + suffix,
           token: server.accessToken,
-          statusCodeExpected: 404
+          expectedStatus: HttpStatusCode.NOT_FOUND_404
         })
       }
     })
@@ -343,7 +348,7 @@ describe('Test server plugins API validators', function () {
           url: server.url,
           path: path + suffix,
           token: server.accessToken,
-          statusCodeExpected: 200
+          expectedStatus: HttpStatusCode.OK_200
         })
       }
     })
@@ -359,7 +364,7 @@ describe('Test server plugins API validators', function () {
         path: path + npmPlugin + '/settings',
         fields: { settings },
         token: 'fake_token',
-        statusCodeExpected: 401
+        expectedStatus: HttpStatusCode.UNAUTHORIZED_401
       })
     })
 
@@ -369,7 +374,7 @@ describe('Test server plugins API validators', function () {
         path: path + npmPlugin + '/settings',
         fields: { settings },
         token: userAccessToken,
-        statusCodeExpected: 403
+        expectedStatus: HttpStatusCode.FORBIDDEN_403
       })
     })
 
@@ -379,7 +384,7 @@ describe('Test server plugins API validators', function () {
         path: path + 'toto/settings',
         fields: { settings },
         token: server.accessToken,
-        statusCodeExpected: 400
+        expectedStatus: HttpStatusCode.BAD_REQUEST_400
       })
 
       await makePutBodyRequest({
@@ -387,7 +392,7 @@ describe('Test server plugins API validators', function () {
         path: path + 'peertube-plugin-TOTO/settings',
         fields: { settings },
         token: server.accessToken,
-        statusCodeExpected: 400
+        expectedStatus: HttpStatusCode.BAD_REQUEST_400
       })
     })
 
@@ -397,7 +402,7 @@ describe('Test server plugins API validators', function () {
         path: path + 'peertube-plugin-toto/settings',
         fields: { settings },
         token: server.accessToken,
-        statusCodeExpected: 404
+        expectedStatus: HttpStatusCode.NOT_FOUND_404
       })
     })
 
@@ -407,7 +412,7 @@ describe('Test server plugins API validators', function () {
         path: path + npmPlugin + '/settings',
         fields: { settings },
         token: server.accessToken,
-        statusCodeExpected: 204
+        expectedStatus: HttpStatusCode.NO_CONTENT_204
       })
     })
   })
@@ -422,7 +427,7 @@ describe('Test server plugins API validators', function () {
           path: path + suffix,
           fields: { npmName: npmPlugin },
           token: 'fake_token',
-          statusCodeExpected: 401
+          expectedStatus: HttpStatusCode.UNAUTHORIZED_401
         })
       }
     })
@@ -434,7 +439,7 @@ describe('Test server plugins API validators', function () {
           path: path + suffix,
           fields: { npmName: npmPlugin },
           token: userAccessToken,
-          statusCodeExpected: 403
+          expectedStatus: HttpStatusCode.FORBIDDEN_403
         })
       }
     })
@@ -446,7 +451,7 @@ describe('Test server plugins API validators', function () {
           path: path + suffix,
           fields: { npmName: 'toto' },
           token: server.accessToken,
-          statusCodeExpected: 400
+          expectedStatus: HttpStatusCode.BAD_REQUEST_400
         })
       }
 
@@ -456,16 +461,18 @@ describe('Test server plugins API validators', function () {
           path: path + suffix,
           fields: { npmName: 'peertube-plugin-TOTO' },
           token: server.accessToken,
-          statusCodeExpected: 400
+          expectedStatus: HttpStatusCode.BAD_REQUEST_400
         })
       }
     })
 
     it('Should succeed with the correct parameters', async function () {
+      this.timeout(10000)
+
       const it = [
-        { suffix: 'install', status: 200 },
-        { suffix: 'update', status: 200 },
-        { suffix: 'uninstall', status: 204 }
+        { suffix: 'install', status: HttpStatusCode.OK_200 },
+        { suffix: 'update', status: HttpStatusCode.OK_200 },
+        { suffix: 'uninstall', status: HttpStatusCode.NO_CONTENT_204 }
       ]
 
       for (const obj of it) {
@@ -474,7 +481,7 @@ describe('Test server plugins API validators', function () {
           path: path + obj.suffix,
           fields: { npmName: npmPlugin },
           token: server.accessToken,
-          statusCodeExpected: obj.status
+          expectedStatus: obj.status
         })
       }
     })