]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/commitdiff
Introduce config command
authorChocobozzz <me@florianbigard.com>
Wed, 7 Jul 2021 09:51:09 +0000 (11:51 +0200)
committerChocobozzz <me@florianbigard.com>
Tue, 20 Jul 2021 13:27:17 +0000 (15:27 +0200)
36 files changed:
server/tests/api/check-params/live.ts
server/tests/api/check-params/search.ts
server/tests/api/check-params/video-imports.ts
server/tests/api/live/live-constraints.ts
server/tests/api/live/live-permanent.ts
server/tests/api/live/live-save-replay.ts
server/tests/api/live/live-socket-messages.ts
server/tests/api/live/live-views.ts
server/tests/api/live/live.ts
server/tests/api/notifications/moderation-notifications.ts
server/tests/api/search/search-index.ts
server/tests/api/search/search-videos.ts
server/tests/api/server/auto-follows.ts
server/tests/api/server/config.ts
server/tests/api/server/follows-moderation.ts
server/tests/api/server/homepage.ts
server/tests/api/server/plugins.ts
server/tests/api/server/stats.ts
server/tests/api/users/users-verification.ts
server/tests/api/users/users.ts
server/tests/api/videos/video-change-ownership.ts
server/tests/api/videos/video-hls.ts
server/tests/api/videos/video-imports.ts
server/tests/api/videos/video-nsfw.ts
server/tests/api/videos/video-transcoder.ts
server/tests/cli/create-transcoding-job.ts
server/tests/cli/plugins.ts
server/tests/client.ts
server/tests/plugins/external-auth.ts
server/tests/plugins/filter-hooks.ts
server/tests/plugins/id-and-pass-auth.ts
server/tests/plugins/plugin-transcoding.ts
shared/extra-utils/server/config-command.ts [new file with mode: 0644]
shared/extra-utils/server/config.ts [deleted file]
shared/extra-utils/server/index.ts
shared/extra-utils/server/servers.ts

index 933d8abf2c615c5b889d3ace38582d78a50c6018..7a623c169222e9e0985957e5d09306936958e3d4 100644 (file)
@@ -19,7 +19,6 @@ import {
   ServerInfo,
   setAccessTokensToServers,
   stopFfmpeg,
-  updateCustomSubConfig,
   updateLive,
   uploadVideoAndGetId,
   userLogin,
@@ -43,12 +42,14 @@ describe('Test video lives API validator', function () {
 
     await setAccessTokensToServers([ server ])
 
-    await updateCustomSubConfig(server.url, server.accessToken, {
-      live: {
-        enabled: true,
-        maxInstanceLives: 20,
-        maxUserLives: 20,
-        allowReplay: true
+    await server.configCommand.updateCustomSubConfig({
+      newConfig: {
+        live: {
+          enabled: true,
+          maxInstanceLives: 20,
+          maxUserLives: 20,
+          allowReplay: true
+        }
       }
     })
 
@@ -234,9 +235,11 @@ describe('Test video lives API validator', function () {
     })
 
     it('Should forbid if live is disabled', async function () {
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        live: {
-          enabled: false
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          live: {
+            enabled: false
+          }
         }
       })
 
@@ -252,10 +255,12 @@ describe('Test video lives API validator', function () {
     it('Should forbid to save replay if not enabled by the admin', async function () {
       const fields = immutableAssign(baseCorrectParams, { saveReplay: true })
 
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        live: {
-          enabled: true,
-          allowReplay: false
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          live: {
+            enabled: true,
+            allowReplay: false
+          }
         }
       })
 
@@ -271,10 +276,12 @@ describe('Test video lives API validator', function () {
     it('Should allow to save replay if enabled by the admin', async function () {
       const fields = immutableAssign(baseCorrectParams, { saveReplay: true })
 
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        live: {
-          enabled: true,
-          allowReplay: true
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          live: {
+            enabled: true,
+            allowReplay: true
+          }
         }
       })
 
@@ -288,10 +295,12 @@ describe('Test video lives API validator', function () {
     })
 
     it('Should not allow live if max instance lives is reached', async function () {
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        live: {
-          enabled: true,
-          maxInstanceLives: 1
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          live: {
+            enabled: true,
+            maxInstanceLives: 1
+          }
         }
       })
 
@@ -305,11 +314,13 @@ describe('Test video lives API validator', function () {
     })
 
     it('Should not allow live if max user lives is reached', async function () {
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        live: {
-          enabled: true,
-          maxInstanceLives: 20,
-          maxUserLives: 1
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          live: {
+            enabled: true,
+            maxInstanceLives: 20,
+            maxUserLives: 1
+          }
         }
       })
 
@@ -393,10 +404,12 @@ describe('Test video lives API validator', function () {
     })
 
     it('Should fail to update replay status if replay is not allowed on the instance', async function () {
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        live: {
-          enabled: true,
-          allowReplay: false
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          live: {
+            enabled: true,
+            allowReplay: false
+          }
         }
       })
 
index 20ad46cff1228d9ccd72a2b58174b40645824b20..4a2fc1197db03e2cc78e11e5761c90ab3d533470 100644 (file)
@@ -1,28 +1,27 @@
 /* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
 
 import 'mocha'
+import { HttpStatusCode } from '@shared/core-utils'
 import {
+  checkBadCountPagination,
+  checkBadSortPagination,
+  checkBadStartPagination,
   cleanupTests,
   flushAndRunServer,
   immutableAssign,
   makeGetRequest,
   ServerInfo,
-  updateCustomSubConfig,
   setAccessTokensToServers
-} from '../../../../shared/extra-utils'
-import {
-  checkBadCountPagination,
-  checkBadSortPagination,
-  checkBadStartPagination
-} from '../../../../shared/extra-utils/requests/check-api-params'
-import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
+} from '@shared/extra-utils'
 
 function updateSearchIndex (server: ServerInfo, enabled: boolean, disableLocalSearch = false) {
-  return updateCustomSubConfig(server.url, server.accessToken, {
-    search: {
-      searchIndex: {
-        enabled,
-        disableLocalSearch
+  return server.configCommand.updateCustomSubConfig({
+    newConfig: {
+      search: {
+        searchIndex: {
+          enabled,
+          disableLocalSearch
+        }
       }
     }
   })
index a27b624d0fde8ec09137d66758f2986658b39e1f..dae3860efc016ef6c8a40232536086da51a97cd6 100644 (file)
@@ -2,9 +2,12 @@
 
 import 'mocha'
 import { omit } from 'lodash'
-import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
+import { HttpStatusCode } from '@shared/core-utils'
 import {
   buildAbsoluteFixturePath,
+  checkBadCountPagination,
+  checkBadSortPagination,
+  checkBadStartPagination,
   cleanupTests,
   createUser,
   flushAndRunServer,
@@ -15,16 +18,10 @@ import {
   makeUploadRequest,
   ServerInfo,
   setAccessTokensToServers,
-  updateCustomSubConfig,
   userLogin
-} from '../../../../shared/extra-utils'
-import {
-  checkBadCountPagination,
-  checkBadSortPagination,
-  checkBadStartPagination
-} from '../../../../shared/extra-utils/requests/check-api-params'
-import { getGoodVideoUrl, getMagnetURI } from '../../../../shared/extra-utils/videos/video-imports'
-import { VideoPrivacy } from '../../../../shared/models/videos/video-privacy.enum'
+} from '@shared/extra-utils'
+import { getGoodVideoUrl, getMagnetURI } from '@shared/extra-utils/videos/video-imports'
+import { VideoPrivacy } from '@shared/models'
 
 describe('Test video imports API validator', function () {
   const path = '/api/v1/videos/imports'
@@ -263,14 +260,16 @@ describe('Test video imports API validator', function () {
     })
 
     it('Should forbid to import http videos', async function () {
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        import: {
-          videos: {
-            http: {
-              enabled: false
-            },
-            torrent: {
-              enabled: true
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          import: {
+            videos: {
+              http: {
+                enabled: false
+              },
+              torrent: {
+                enabled: true
+              }
             }
           }
         }
@@ -286,14 +285,16 @@ describe('Test video imports API validator', function () {
     })
 
     it('Should forbid to import torrent videos', async function () {
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        import: {
-          videos: {
-            http: {
-              enabled: true
-            },
-            torrent: {
-              enabled: false
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          import: {
+            videos: {
+              http: {
+                enabled: true
+              },
+              torrent: {
+                enabled: false
+              }
             }
           }
         }
index cc635de339d2102858ffbcfc08cf225187e98d97..c64d10dcd8df02a59b9dd5a248c9a120e1efe45a 100644 (file)
@@ -6,17 +6,16 @@ import { VideoDetails, VideoPrivacy } from '@shared/models'
 import {
   checkLiveCleanup,
   cleanupTests,
+  ConfigCommand,
   createLive,
   doubleFollow,
   flushAndRunMultipleServers,
   generateUser,
-  getCustomConfigResolutions,
   getVideo,
   runAndTestFfmpegStreamError,
   ServerInfo,
   setAccessTokensToServers,
   setDefaultVideoChannel,
-  updateCustomSubConfig,
   updateUser,
   wait,
   waitJobs,
@@ -80,12 +79,14 @@ describe('Test live constraints', function () {
     await setAccessTokensToServers(servers)
     await setDefaultVideoChannel(servers)
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      live: {
-        enabled: true,
-        allowReplay: true,
-        transcoding: {
-          enabled: false
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        live: {
+          enabled: true,
+          allowReplay: true,
+          transcoding: {
+            enabled: false
+          }
         }
       }
     })
@@ -157,14 +158,16 @@ describe('Test live constraints', function () {
   it('Should have max duration limit', async function () {
     this.timeout(60000)
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      live: {
-        enabled: true,
-        allowReplay: true,
-        maxDuration: 1,
-        transcoding: {
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        live: {
           enabled: true,
-          resolutions: getCustomConfigResolutions(true)
+          allowReplay: true,
+          maxDuration: 1,
+          transcoding: {
+            enabled: true,
+            resolutions: ConfigCommand.getCustomConfigResolutions(true)
+          }
         }
       }
     })
index 71b7d28a885c23232943468e8a017d7ecb2bced1..b9e37c834478e2ce89e16f177d48b27d6220a4dc 100644 (file)
@@ -5,10 +5,10 @@ import * as chai from 'chai'
 import { LiveVideoCreate, VideoDetails, VideoPrivacy, VideoState } from '@shared/models'
 import {
   cleanupTests,
+  ConfigCommand,
   createLive,
   doubleFollow,
   flushAndRunMultipleServers,
-  getCustomConfigResolutions,
   getLive,
   getPlaylistsCount,
   getVideo,
@@ -17,7 +17,6 @@ import {
   setAccessTokensToServers,
   setDefaultVideoChannel,
   stopFfmpeg,
-  updateCustomSubConfig,
   updateLive,
   wait,
   waitJobs,
@@ -63,14 +62,16 @@ describe('Permanent live', function () {
     // Server 1 and server 2 follow each other
     await doubleFollow(servers[0], servers[1])
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      live: {
-        enabled: true,
-        allowReplay: true,
-        maxDuration: -1,
-        transcoding: {
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        live: {
           enabled: true,
-          resolutions: getCustomConfigResolutions(true)
+          allowReplay: true,
+          maxDuration: -1,
+          transcoding: {
+            enabled: true,
+            resolutions: ConfigCommand.getCustomConfigResolutions(true)
+          }
         }
       }
     })
@@ -145,14 +146,16 @@ describe('Permanent live', function () {
   it('Should be able to stream again in the permanent live', async function () {
     this.timeout(20000)
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      live: {
-        enabled: true,
-        allowReplay: true,
-        maxDuration: -1,
-        transcoding: {
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        live: {
           enabled: true,
-          resolutions: getCustomConfigResolutions(false)
+          allowReplay: true,
+          maxDuration: -1,
+          transcoding: {
+            enabled: true,
+            resolutions: ConfigCommand.getCustomConfigResolutions(false)
+          }
         }
       }
     })
index 3d4736c8fb65e635de22779547b5f3b2bea44b7b..e74bc3e8d4ca6c95c3602cc58dd5a9d276bb7856 100644 (file)
@@ -9,10 +9,10 @@ import {
   addVideoToBlacklist,
   checkLiveCleanup,
   cleanupTests,
+  ConfigCommand,
   createLive,
   doubleFollow,
   flushAndRunMultipleServers,
-  getCustomConfigResolutions,
   getVideo,
   getVideosList,
   removeVideo,
@@ -22,7 +22,6 @@ import {
   setDefaultVideoChannel,
   stopFfmpeg,
   testFfmpegStreamError,
-  updateCustomSubConfig,
   updateVideo,
   wait,
   waitJobs,
@@ -102,14 +101,16 @@ describe('Save replay setting', function () {
     // Server 1 and server 2 follow each other
     await doubleFollow(servers[0], servers[1])
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      live: {
-        enabled: true,
-        allowReplay: true,
-        maxDuration: -1,
-        transcoding: {
-          enabled: false,
-          resolutions: getCustomConfigResolutions(true)
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        live: {
+          enabled: true,
+          allowReplay: true,
+          maxDuration: -1,
+          transcoding: {
+            enabled: false,
+            resolutions: ConfigCommand.getCustomConfigResolutions(true)
+          }
         }
       }
     })
index e00909ade3e666b3ee87f7f8adde0668e93d8781..0159d5199ba1693a063a1f101898693bce2302ca 100644 (file)
@@ -15,7 +15,6 @@ import {
   setAccessTokensToServers,
   setDefaultVideoChannel,
   stopFfmpeg,
-  updateCustomSubConfig,
   viewVideo,
   wait,
   waitJobs,
@@ -37,12 +36,14 @@ describe('Test live', function () {
     await setAccessTokensToServers(servers)
     await setDefaultVideoChannel(servers)
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      live: {
-        enabled: true,
-        allowReplay: true,
-        transcoding: {
-          enabled: false
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        live: {
+          enabled: true,
+          allowReplay: true,
+          transcoding: {
+            enabled: false
+          }
         }
       }
     })
index a44d21ffa45cd7c4503a48130f3806e7e67fdac4..ca571c9620281ddb4f54fd832f4add21a6069a27 100644 (file)
@@ -15,7 +15,6 @@ import {
   setAccessTokensToServers,
   setDefaultVideoChannel,
   stopFfmpeg,
-  updateCustomSubConfig,
   viewVideo,
   wait,
   waitJobs,
@@ -36,12 +35,14 @@ describe('Test live', function () {
     await setAccessTokensToServers(servers)
     await setDefaultVideoChannel(servers)
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      live: {
-        enabled: true,
-        allowReplay: true,
-        transcoding: {
-          enabled: false
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        live: {
+          enabled: true,
+          allowReplay: true,
+          transcoding: {
+            enabled: false
+          }
         }
       }
     })
index 50397924e0417f3556ee717a773f123adbd87010..2c3102994994ef4ee14c143f0dcc6db4ab43e583 100644 (file)
@@ -34,7 +34,6 @@ import {
   stopFfmpeg,
   testFfmpegStreamError,
   testImage,
-  updateCustomSubConfig,
   updateLive,
   uploadVideoAndGetId,
   wait,
@@ -59,12 +58,14 @@ describe('Test live', function () {
     await setAccessTokensToServers(servers)
     await setDefaultVideoChannel(servers)
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      live: {
-        enabled: true,
-        allowReplay: true,
-        transcoding: {
-          enabled: false
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        live: {
+          enabled: true,
+          allowReplay: true,
+          transcoding: {
+            enabled: false
+          }
         }
       }
     })
@@ -422,20 +423,22 @@ describe('Test live', function () {
     }
 
     function updateConf (resolutions: number[]) {
-      return updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-        live: {
-          enabled: true,
-          allowReplay: true,
-          maxDuration: -1,
-          transcoding: {
+      return servers[0].configCommand.updateCustomSubConfig({
+        newConfig: {
+          live: {
             enabled: true,
-            resolutions: {
-              '240p': resolutions.includes(240),
-              '360p': resolutions.includes(360),
-              '480p': resolutions.includes(480),
-              '720p': resolutions.includes(720),
-              '1080p': resolutions.includes(1080),
-              '2160p': resolutions.includes(2160)
+            allowReplay: true,
+            maxDuration: -1,
+            transcoding: {
+              enabled: true,
+              resolutions: {
+                '240p': resolutions.includes(240),
+                '360p': resolutions.includes(360),
+                '480p': resolutions.includes(480),
+                '720p': resolutions.includes(720),
+                '1080p': resolutions.includes(1080),
+                '2160p': resolutions.includes(2160)
+              }
             }
           }
         }
index 9a93ce401bd225c83bb67ded30982276b03ce216..3e66e7517e4243c8bdf25e9f25fb9bf7ad007c36 100644 (file)
@@ -23,7 +23,6 @@ import {
   createUser,
   generateUserAccessToken,
   getAccount,
-  getCustomConfig,
   getVideoCommentThreads,
   getVideoIdFromUUID,
   immutableAssign,
@@ -34,8 +33,6 @@ import {
   removeUserSubscription,
   removeVideoFromBlacklist,
   ServerInfo,
-  updateCustomConfig,
-  updateCustomSubConfig,
   uploadVideo,
   wait,
   waitJobs
@@ -407,7 +404,7 @@ describe('Test moderation notifications', function () {
           }
         }
       }
-      await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+      await servers[0].configCommand.updateCustomSubConfig({ newConfig: config })
 
       await servers[2].followsCommand.follow({ targets: [ servers[0].url ] })
 
@@ -421,7 +418,7 @@ describe('Test moderation notifications', function () {
       await checkAutoInstanceFollowing(immutableAssign(baseParams, userOverride), followerHost, followingHost, 'absence')
 
       config.followings.instance.autoFollowBack.enabled = false
-      await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+      await servers[0].configCommand.updateCustomSubConfig({ newConfig: config })
       await servers[0].followsCommand.unfollow({ target: servers[2] })
       await servers[2].followsCommand.unfollow({ target: servers[0] })
     })
@@ -430,7 +427,7 @@ describe('Test moderation notifications', function () {
       this.timeout(30000)
       await servers[0].followsCommand.unfollow({ target: servers[1] })
 
-      await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+      await servers[0].configCommand.updateCustomSubConfig({ newConfig: config })
 
       await wait(5000)
       await waitJobs(servers)
@@ -440,7 +437,7 @@ describe('Test moderation notifications', function () {
       await checkAutoInstanceFollowing(baseParams, followerHost, followingHost, 'presence')
 
       config.followings.instance.autoFollowIndex.enabled = false
-      await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+      await servers[0].configCommand.updateCustomSubConfig({ newConfig: config })
       await servers[0].followsCommand.unfollow({ target: servers[1] })
     })
   })
@@ -476,8 +473,8 @@ describe('Test moderation notifications', function () {
         token: userAccessToken
       }
 
-      const resCustomConfig = await getCustomConfig(servers[0].url, servers[0].accessToken)
-      currentCustomConfig = resCustomConfig.body
+      currentCustomConfig = await servers[0].configCommand.getCustomConfig()
+
       const autoBlacklistTestsCustomConfig = immutableAssign(currentCustomConfig, {
         autoBlacklist: {
           videos: {
@@ -487,9 +484,10 @@ describe('Test moderation notifications', function () {
           }
         }
       })
+
       // enable transcoding otherwise own publish notification after transcoding not expected
       autoBlacklistTestsCustomConfig.transcoding.enabled = true
-      await updateCustomConfig(servers[0].url, servers[0].accessToken, autoBlacklistTestsCustomConfig)
+      await servers[0].configCommand.updateCustomConfig({ newCustomConfig: autoBlacklistTestsCustomConfig })
 
       await addUserSubscription(servers[0].url, servers[0].accessToken, 'user_1_channel@localhost:' + servers[0].port)
       await addUserSubscription(servers[1].url, servers[1].accessToken, 'user_1_channel@localhost:' + servers[0].port)
@@ -612,7 +610,7 @@ describe('Test moderation notifications', function () {
     })
 
     after(async () => {
-      await updateCustomConfig(servers[0].url, servers[0].accessToken, currentCustomConfig)
+      await servers[0].configCommand.updateCustomConfig({ newCustomConfig: currentCustomConfig })
 
       await removeUserSubscription(servers[0].url, servers[0].accessToken, 'user_1_channel@localhost:' + servers[0].port)
       await removeUserSubscription(servers[1].url, servers[1].accessToken, 'user_1_channel@localhost:' + servers[0].port)
index b2c0857a7f6fa007edd84897ece39b806cb0ca9a..e4c5f5796e8c23f02e42a4dc67f1fe7571339984 100644 (file)
@@ -9,7 +9,6 @@ import {
   SearchCommand,
   ServerInfo,
   setAccessTokensToServers,
-  updateCustomSubConfig,
   uploadVideo
 } from '@shared/extra-utils'
 import { VideoPlaylistPrivacy, VideoPlaylistType, VideosSearchQuery } from '@shared/models'
@@ -39,12 +38,14 @@ describe('Test videos search', function () {
     it('Should make a local videos search by default', async function () {
       this.timeout(10000)
 
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        search: {
-          searchIndex: {
-            enabled: true,
-            isDefaultSearch: false,
-            disableLocalSearch: false
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          search: {
+            searchIndex: {
+              enabled: true,
+              isDefaultSearch: false,
+              disableLocalSearch: false
+            }
           }
         }
       })
@@ -64,12 +65,14 @@ describe('Test videos search', function () {
     })
 
     it('Should make an index videos search by default', async function () {
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        search: {
-          searchIndex: {
-            enabled: true,
-            isDefaultSearch: true,
-            disableLocalSearch: false
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          search: {
+            searchIndex: {
+              enabled: true,
+              isDefaultSearch: true,
+              disableLocalSearch: false
+            }
           }
         }
       })
@@ -84,12 +87,14 @@ describe('Test videos search', function () {
     })
 
     it('Should make an index videos search if local search is disabled', async function () {
-      await updateCustomSubConfig(server.url, server.accessToken, {
-        search: {
-          searchIndex: {
-            enabled: true,
-            isDefaultSearch: false,
-            disableLocalSearch: true
+      await server.configCommand.updateCustomSubConfig({
+        newConfig: {
+          search: {
+            searchIndex: {
+              enabled: true,
+              isDefaultSearch: false,
+              disableLocalSearch: true
+            }
           }
         }
       })
@@ -216,7 +221,11 @@ describe('Test videos search', function () {
       let nsfwUUID: string
 
       {
-        await updateCustomSubConfig(server.url, server.accessToken, { instance: { defaultNSFWPolicy: 'display' } })
+        await server.configCommand.updateCustomSubConfig({
+          newConfig: {
+            instance: { defaultNSFWPolicy: 'display' }
+          }
+        })
 
         const body = await command.searchVideos({ search: 'NSFW search index', sort: '-match' })
         expect(body.data).to.have.length.greaterThan(0)
@@ -228,7 +237,11 @@ describe('Test videos search', function () {
       }
 
       {
-        await updateCustomSubConfig(server.url, server.accessToken, { instance: { defaultNSFWPolicy: 'do_not_list' } })
+        await server.configCommand.updateCustomSubConfig({
+          newConfig: {
+            instance: { defaultNSFWPolicy: 'do_not_list' }
+          }
+        })
 
         const body = await command.searchVideos({ search: 'NSFW search index', sort: '-match' })
 
index f0482c7e0908730f3c7edc913b6adfe2a1cbf603..7dc89c447046eeb9209b73b32f3976087e101968 100644 (file)
@@ -14,7 +14,6 @@ import {
   setAccessTokensToServers,
   setDefaultVideoChannel,
   stopFfmpeg,
-  updateCustomSubConfig,
   uploadVideo,
   wait,
   waitUntilLivePublished
@@ -486,13 +485,13 @@ describe('Test videos search', function () {
     this.timeout(30000)
 
     {
-      const options = {
+      const newConfig = {
         search: {
           searchIndex: { enabled: false }
         },
         live: { enabled: true }
       }
-      await updateCustomSubConfig(server.url, server.accessToken, options)
+      await server.configCommand.updateCustomSubConfig({ newConfig })
     }
 
     {
index 02389b1e98cad2f22e1b5220e17c0f97994262e2..34c4f6882639bdf2f935b703a5c19d9be6d66feb 100644 (file)
@@ -8,7 +8,6 @@ import {
   MockInstancesIndex,
   ServerInfo,
   setAccessTokensToServers,
-  updateCustomSubConfig,
   wait,
   waitJobs
 } from '@shared/extra-utils'
@@ -87,7 +86,7 @@ describe('Test auto follows', function () {
           }
         }
       }
-      await updateCustomSubConfig(servers[1].url, servers[1].accessToken, config)
+      await servers[1].configCommand.updateCustomSubConfig({ newConfig: config })
 
       await server1Follows2(servers)
 
@@ -112,7 +111,7 @@ describe('Test auto follows', function () {
           }
         }
       }
-      await updateCustomSubConfig(servers[1].url, servers[1].accessToken, config)
+      await servers[1].configCommand.updateCustomSubConfig({ newConfig: config })
 
       await server1Follows2(servers)
 
@@ -129,7 +128,7 @@ describe('Test auto follows', function () {
 
       config.followings.instance.autoFollowBack.enabled = false
       config.followers.instance.manualApproval = false
-      await updateCustomSubConfig(servers[1].url, servers[1].accessToken, config)
+      await servers[1].configCommand.updateCustomSubConfig({ newConfig: config })
     })
   })
 
@@ -166,7 +165,7 @@ describe('Test auto follows', function () {
           }
         }
       }
-      await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+      await servers[0].configCommand.updateCustomSubConfig({ newConfig: config })
 
       await wait(5000)
       await waitJobs(servers)
index 19bf9582c68e3fdd08ad4feda1e824d934d5c3fb..037628c9d661426561b6c8335727c46554811b7d 100644 (file)
@@ -2,15 +2,10 @@
 
 import 'mocha'
 import * as chai from 'chai'
-import { About } from '../../../../shared/models/server/about.model'
-import { CustomConfig } from '../../../../shared/models/server/custom-config.model'
+import { HttpStatusCode } from '@shared/core-utils'
 import {
   cleanupTests,
-  deleteCustomConfig,
   flushAndRunServer,
-  getAbout,
-  getConfig,
-  getCustomConfig,
   killallServers,
   makeGetRequest,
   parallelTests,
@@ -18,11 +13,9 @@ import {
   reRunServer,
   ServerInfo,
   setAccessTokensToServers,
-  updateCustomConfig,
   uploadVideo
-} from '../../../../shared/extra-utils'
-import { ServerConfig } from '../../../../shared/models'
-import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
+} from '@shared/extra-utils'
+import { CustomConfig } from '@shared/models'
 
 const expect = chai.expect
 
@@ -213,7 +206,7 @@ function checkUpdatedConfig (data: CustomConfig) {
 }
 
 describe('Test config', function () {
-  let server = null
+  let server: ServerInfo = null
 
   before(async function () {
     this.timeout(30000)
@@ -223,8 +216,7 @@ describe('Test config', function () {
   })
 
   it('Should have a correct config on a server with registration enabled', async function () {
-    const res = await getConfig(server.url)
-    const data: ServerConfig = res.body
+    const data = await server.configCommand.getConfig()
 
     expect(data.signup.allowed).to.be.true
   })
@@ -238,15 +230,13 @@ describe('Test config', function () {
       registerUser(server.url, 'user3', 'super password')
     ])
 
-    const res = await getConfig(server.url)
-    const data: ServerConfig = res.body
+    const data = await server.configCommand.getConfig()
 
     expect(data.signup.allowed).to.be.false
   })
 
   it('Should have the correct video allowed extensions', async function () {
-    const res = await getConfig(server.url)
-    const data: ServerConfig = res.body
+    const data = await server.configCommand.getConfig()
 
     expect(data.video.file.extensions).to.have.lengthOf(3)
     expect(data.video.file.extensions).to.contain('.mp4')
@@ -260,8 +250,7 @@ describe('Test config', function () {
   })
 
   it('Should get the customized configuration', async function () {
-    const res = await getCustomConfig(server.url, server.accessToken)
-    const data = res.body as CustomConfig
+    const data = await server.configCommand.getCustomConfig()
 
     checkInitialConfig(server, data)
   })
@@ -438,19 +427,16 @@ describe('Test config', function () {
         }
       }
     }
-    await updateCustomConfig(server.url, server.accessToken, newCustomConfig)
-
-    const res = await getCustomConfig(server.url, server.accessToken)
-    const data = res.body
+    await server.configCommand.updateCustomConfig({ newCustomConfig })
 
+    const data = await server.configCommand.getCustomConfig()
     checkUpdatedConfig(data)
   })
 
   it('Should have the correct updated video allowed extensions', async function () {
     this.timeout(10000)
 
-    const res = await getConfig(server.url)
-    const data: ServerConfig = res.body
+    const data = await server.configCommand.getConfig()
 
     expect(data.video.file.extensions).to.have.length.above(4)
     expect(data.video.file.extensions).to.contain('.mp4')
@@ -474,15 +460,13 @@ describe('Test config', function () {
 
     await reRunServer(server)
 
-    const res = await getCustomConfig(server.url, server.accessToken)
-    const data = res.body
+    const data = await server.configCommand.getCustomConfig()
 
     checkUpdatedConfig(data)
   })
 
   it('Should fetch the about information', async function () {
-    const res = await getAbout(server.url)
-    const data: About = res.body
+    const data = await server.configCommand.getAbout()
 
     expect(data.instance.name).to.equal('PeerTube updated')
     expect(data.instance.shortDescription).to.equal('my short description')
@@ -504,11 +488,9 @@ describe('Test config', function () {
   it('Should remove the custom configuration', async function () {
     this.timeout(10000)
 
-    await deleteCustomConfig(server.url, server.accessToken)
-
-    const res = await getCustomConfig(server.url, server.accessToken)
-    const data = res.body
+    await server.configCommand.deleteCustomConfig()
 
+    const data = await server.configCommand.getCustomConfig()
     checkInitialConfig(server, data)
   })
 
index 4853b647da3465be852ad2bb48bac8f00ab127f3..6d6eca9a8452a5d3a7ad663e45807d224b65f01f 100644 (file)
@@ -8,7 +8,6 @@ import {
   FollowsCommand,
   ServerInfo,
   setAccessTokensToServers,
-  updateCustomSubConfig,
   waitJobs
 } from '@shared/extra-utils'
 
@@ -94,7 +93,7 @@ describe('Test follows moderation', function () {
       }
     }
 
-    await updateCustomSubConfig(servers[1].url, servers[1].accessToken, subConfig)
+    await servers[1].configCommand.updateCustomSubConfig({ newConfig: subConfig })
 
     await commands[0].follow({ targets: [ servers[1].url ] })
     await waitJobs(servers)
@@ -114,7 +113,7 @@ describe('Test follows moderation', function () {
       }
     }
 
-    await updateCustomSubConfig(servers[1].url, servers[1].accessToken, subConfig)
+    await servers[1].configCommand.updateCustomSubConfig({ newConfig: subConfig })
 
     await commands[0].follow({ targets: [ servers[1].url ] })
     await waitJobs(servers)
@@ -137,8 +136,8 @@ describe('Test follows moderation', function () {
       }
     }
 
-    await updateCustomSubConfig(servers[1].url, servers[1].accessToken, subConfig)
-    await updateCustomSubConfig(servers[2].url, servers[2].accessToken, subConfig)
+    await servers[1].configCommand.updateCustomSubConfig({ newConfig: subConfig })
+    await servers[2].configCommand.updateCustomSubConfig({ newConfig: subConfig })
 
     await commands[0].follow({ targets: [ servers[1].url ] })
     await waitJobs(servers)
index 4a3ec0479d386f3d054c72cf898297a962ebd1f8..c08067f3c9540e48cff738468fec7bc93fa6f458 100644 (file)
@@ -3,12 +3,10 @@
 import 'mocha'
 import * as chai from 'chai'
 import { HttpStatusCode } from '@shared/core-utils'
-import { ServerConfig } from '@shared/models'
 import {
   cleanupTests,
   CustomPagesCommand,
   flushAndRunServer,
-  getConfig,
   killallServers,
   reRunServer,
   ServerInfo,
@@ -18,9 +16,8 @@ import {
 const expect = chai.expect
 
 async function getHomepageState (server: ServerInfo) {
-  const res = await getConfig(server.url)
+  const config = await server.configCommand.getConfig()
 
-  const config = res.body as ServerConfig
   return config.homepage.enabled
 }
 
index 1536997d5fdabb041c36ddde158f21297d0632e0..528bbbe58ed5c66aedf7c7b961a2be8fa708cfa3 100644 (file)
@@ -7,7 +7,6 @@ import {
   cleanupTests,
   closeAllSequelize,
   flushAndRunServer,
-  getConfig,
   getMyUserInformation,
   killallServers,
   PluginsCommand,
@@ -16,12 +15,11 @@ import {
   setAccessTokensToServers,
   setPluginVersion,
   testHelloWorldRegisteredSettings,
-  updateCustomSubConfig,
   updateMyUser,
   wait,
   waitUntilLog
 } from '@shared/extra-utils'
-import { PluginType, ServerConfig, User } from '@shared/models'
+import { PluginType, User } from '@shared/models'
 
 const expect = chai.expect
 
@@ -102,8 +100,7 @@ describe('Test plugins', function () {
   })
 
   it('Should have the plugin loaded in the configuration', async function () {
-    const res = await getConfig(server.url)
-    const config: ServerConfig = res.body
+    const config = await server.configCommand.getConfig()
 
     const theme = config.theme.registered.find(r => r.name === 'background-red')
     expect(theme).to.not.be.undefined
@@ -113,11 +110,13 @@ describe('Test plugins', function () {
   })
 
   it('Should update the default theme in the configuration', async function () {
-    await updateCustomSubConfig(server.url, server.accessToken, { theme: { default: 'background-red' } })
-
-    const res = await getConfig(server.url)
-    const config: ServerConfig = res.body
+    await server.configCommand.updateCustomSubConfig({
+      newConfig: {
+        theme: { default: 'background-red' }
+      }
+    })
 
+    const config = await server.configCommand.getConfig()
     expect(config.theme.default).to.equal('background-red')
   })
 
@@ -302,9 +301,7 @@ describe('Test plugins', function () {
   })
 
   it('Should have updated the configuration', async function () {
-    // get /config (default theme + registered themes + registered plugins)
-    const res = await getConfig(server.url)
-    const config: ServerConfig = res.body
+    const config = await server.configCommand.getConfig()
 
     expect(config.theme.default).to.equal('default')
 
index 36114a2970d88f17542387f439d36478363396c6..f01188d678555432d622b54957e2ffe74e7fb059 100644 (file)
@@ -12,7 +12,6 @@ import {
   flushAndRunMultipleServers,
   ServerInfo,
   setAccessTokensToServers,
-  updateCustomSubConfig,
   uploadVideo,
   userLogin,
   viewVideo,
@@ -197,24 +196,26 @@ describe('Test stats (excluding redundancy)', function () {
   it('Should correctly count video file sizes if transcoding is enabled', async function () {
     this.timeout(60000)
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      transcoding: {
-        enabled: true,
-        webtorrent: {
-          enabled: true
-        },
-        hls: {
-          enabled: true
-        },
-        resolutions: {
-          '0p': false,
-          '240p': false,
-          '360p': false,
-          '480p': false,
-          '720p': false,
-          '1080p': false,
-          '1440p': false,
-          '2160p': false
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        transcoding: {
+          enabled: true,
+          webtorrent: {
+            enabled: true
+          },
+          hls: {
+            enabled: true
+          },
+          resolutions: {
+            '0p': false,
+            '240p': false,
+            '360p': false,
+            '480p': false,
+            '720p': false,
+            '1080p': false,
+            '1440p': false,
+            '2160p': false
+          }
         }
       }
     })
@@ -238,9 +239,11 @@ describe('Test stats (excluding redundancy)', function () {
   it('Should have the correct AP stats', async function () {
     this.timeout(60000)
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      transcoding: {
-        enabled: false
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        transcoding: {
+          enabled: false
+        }
       }
     })
 
index 265cd6050aa4756533c734f66b8d11a3f9d7c53a..23f81d804c2d90e3c67a3ba7a8f19318410f2c81 100644 (file)
@@ -11,7 +11,6 @@ import {
   login,
   registerUser,
   ServerInfo,
-  updateCustomSubConfig,
   updateMyUser,
   userLogin,
   verifyEmail
@@ -58,11 +57,13 @@ describe('Test users account verification', function () {
   it('Should register user and send verification email if verification required', async function () {
     this.timeout(30000)
 
-    await updateCustomSubConfig(server.url, server.accessToken, {
-      signup: {
-        enabled: true,
-        requiresEmailVerification: true,
-        limit: 10
+    await server.configCommand.updateCustomSubConfig({
+      newConfig: {
+        signup: {
+          enabled: true,
+          requiresEmailVerification: true,
+          limit: 10
+        }
       }
     })
 
@@ -148,11 +149,13 @@ describe('Test users account verification', function () {
 
   it('Should register user not requiring email verification if setting not enabled', async function () {
     this.timeout(5000)
-    await updateCustomSubConfig(server.url, server.accessToken, {
-      signup: {
-        enabled: true,
-        requiresEmailVerification: false,
-        limit: 10
+    await server.configCommand.updateCustomSubConfig({
+      newConfig: {
+        signup: {
+          enabled: true,
+          requiresEmailVerification: false,
+          limit: 10
+        }
       }
     })
 
@@ -168,11 +171,13 @@ describe('Test users account verification', function () {
   })
 
   it('Should allow login for user with unverified email when setting later enabled', async function () {
-    await updateCustomSubConfig(server.url, server.accessToken, {
-      signup: {
-        enabled: true,
-        requiresEmailVerification: true,
-        limit: 10
+    await server.configCommand.updateCustomSubConfig({
+      newConfig: {
+        signup: {
+          enabled: true,
+          requiresEmailVerification: true,
+          limit: 10
+        }
       }
     })
 
index ba4183e083b0d5e466518f19609f7f637e00d9d0..33bcc8701eccf717585ac3ed2109d762f306631e 100644 (file)
@@ -13,7 +13,6 @@ import {
   flushAndRunServer,
   getAccountRatings,
   getBlacklistedVideosList,
-  getCustomConfig,
   getMyUserInformation,
   getMyUserVideoQuotaUsed,
   getMyUserVideoRating,
@@ -38,7 +37,6 @@ import {
   setTokenField,
   testImage,
   unblockUser,
-  updateCustomSubConfig,
   updateMyAvatar,
   updateMyUser,
   updateUser,
@@ -46,7 +44,7 @@ import {
   userLogin,
   waitJobs
 } from '@shared/extra-utils'
-import { AbuseState, CustomConfig, MyUser, OAuth2ErrorCode, User, UserAdminFlag, UserRole, Video, VideoPlaylistType } from '@shared/models'
+import { AbuseState, MyUser, OAuth2ErrorCode, User, UserAdminFlag, UserRole, Video, VideoPlaylistType } from '@shared/models'
 
 const expect = chai.expect
 
@@ -418,12 +416,11 @@ describe('Test users', function () {
       this.timeout(60000)
 
       {
-        const res = await getCustomConfig(server.url, server.accessToken)
-        const config = res.body as CustomConfig
+        const config = await server.configCommand.getCustomConfig()
         config.transcoding.webtorrent.enabled = false
         config.transcoding.hls.enabled = true
         config.transcoding.enabled = true
-        await updateCustomSubConfig(server.url, server.accessToken, config)
+        await server.configCommand.updateCustomSubConfig({ newConfig: config })
       }
 
       {
index a3384851b72a2cf4c69448bcfd38de213cbc1f45..89dba14b1e64a17a0c25e369468f04c496962f23 100644 (file)
@@ -20,7 +20,6 @@ import {
   ServerInfo,
   setAccessTokensToServers,
   setDefaultVideoChannel,
-  updateCustomSubConfig,
   uploadVideo,
   userLogin
 } from '../../../../shared/extra-utils'
@@ -58,12 +57,14 @@ describe('Test video change ownership - nominal', function () {
     await setAccessTokensToServers(servers)
     await setDefaultVideoChannel(servers)
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      transcoding: {
-        enabled: false
-      },
-      live: {
-        enabled: true
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        transcoding: {
+          enabled: false
+        },
+        live: {
+          enabled: true
+        }
       }
     })
 
index 03ac3f32166ec146dcae63a21a85a49cce205906..3821cfed03ba2b9cd1704b04f95536c19ffbddc2 100644 (file)
@@ -3,6 +3,7 @@
 import 'mocha'
 import * as chai from 'chai'
 import { join } from 'path'
+import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
 import {
   checkDirectoryIsEmpty,
   checkResolutionsInMasterPlaylist,
@@ -17,7 +18,6 @@ import {
   removeVideo,
   ServerInfo,
   setAccessTokensToServers,
-  updateCustomSubConfig,
   updateVideo,
   uploadVideo,
   waitJobs,
@@ -26,7 +26,6 @@ import {
 import { VideoDetails } from '../../../../shared/models/videos'
 import { VideoStreamingPlaylistType } from '../../../../shared/models/videos/video-streaming-playlist.type'
 import { DEFAULT_AUDIO_RESOLUTION } from '../../../initializers/constants'
-import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
 
 const expect = chai.expect
 
@@ -192,24 +191,26 @@ describe('Test HLS videos', function () {
   describe('With only HLS enabled', function () {
 
     before(async function () {
-      await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-        transcoding: {
-          enabled: true,
-          allowAudioFiles: true,
-          resolutions: {
-            '240p': true,
-            '360p': true,
-            '480p': true,
-            '720p': true,
-            '1080p': true,
-            '1440p': true,
-            '2160p': true
-          },
-          hls: {
-            enabled: true
-          },
-          webtorrent: {
-            enabled: false
+      await servers[0].configCommand.updateCustomSubConfig({
+        newConfig: {
+          transcoding: {
+            enabled: true,
+            allowAudioFiles: true,
+            resolutions: {
+              '240p': true,
+              '360p': true,
+              '480p': true,
+              '720p': true,
+              '1080p': true,
+              '1440p': true,
+              '2160p': true
+            },
+            hls: {
+              enabled: true
+            },
+            webtorrent: {
+              enabled: false
+            }
           }
         }
       })
index 80834ca86ccc7c560ff58c343d06ffba31fd8093..a4a9132b44a5226fe738a7a8d942414d7dc9e68e 100644 (file)
@@ -14,8 +14,7 @@ import {
   listVideoCaptions,
   ServerInfo,
   setAccessTokensToServers,
-  testCaptionFile,
-  updateCustomSubConfig
+  testCaptionFile
 } from '../../../../shared/extra-utils'
 import { areHttpImportTestsDisabled, testImage } from '../../../../shared/extra-utils/miscs/miscs'
 import { waitJobs } from '../../../../shared/extra-utils/server/jobs'
@@ -333,7 +332,7 @@ Ajouter un sous-titre est vraiment facile`)
         }
       }
     }
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+    await servers[0].configCommand.updateCustomSubConfig({ newConfig: config })
 
     const attributes = {
       name: 'hdr video',
index 24a4c61525f062c6ea2bd6c3f413287b40adf8c1..65813517dac272f91595208f137233568bedc122 100644 (file)
@@ -7,8 +7,6 @@ import {
   createUser,
   flushAndRunServer,
   getAccountVideos,
-  getConfig,
-  getCustomConfig,
   getMyUserInformation,
   getMyVideos,
   getVideoChannelVideos,
@@ -16,12 +14,11 @@ import {
   getVideosListWithToken,
   ServerInfo,
   setAccessTokensToServers,
-  updateCustomConfig,
   updateMyUser,
   uploadVideo,
   userLogin
 } from '@shared/extra-utils'
-import { BooleanBothQuery, CustomConfig, ServerConfig, User, VideosOverview } from '@shared/models'
+import { BooleanBothQuery, CustomConfig, User, VideosOverview } from '@shared/models'
 
 const expect = chai.expect
 
@@ -97,16 +94,12 @@ describe('Test video NSFW policy', function () {
       await uploadVideo(server.url, server.accessToken, attributes)
     }
 
-    {
-      const res = await getCustomConfig(server.url, server.accessToken)
-      customConfig = res.body
-    }
+    customConfig = await server.configCommand.getCustomConfig()
   })
 
   describe('Instance default NSFW policy', function () {
     it('Should display NSFW videos with display default NSFW policy', async function () {
-      const resConfig = await getConfig(server.url)
-      const serverConfig: ServerConfig = resConfig.body
+      const serverConfig = await server.configCommand.getConfig()
       expect(serverConfig.instance.defaultNSFWPolicy).to.equal('display')
 
       for (const res of await getVideosFunctions()) {
@@ -121,10 +114,9 @@ describe('Test video NSFW policy', function () {
 
     it('Should not display NSFW videos with do_not_list default NSFW policy', async function () {
       customConfig.instance.defaultNSFWPolicy = 'do_not_list'
-      await updateCustomConfig(server.url, server.accessToken, customConfig)
+      await server.configCommand.updateCustomConfig({ newCustomConfig: customConfig })
 
-      const resConfig = await getConfig(server.url)
-      const serverConfig: ServerConfig = resConfig.body
+      const serverConfig = await server.configCommand.getConfig()
       expect(serverConfig.instance.defaultNSFWPolicy).to.equal('do_not_list')
 
       for (const res of await getVideosFunctions()) {
@@ -138,10 +130,9 @@ describe('Test video NSFW policy', function () {
 
     it('Should display NSFW videos with blur default NSFW policy', async function () {
       customConfig.instance.defaultNSFWPolicy = 'blur'
-      await updateCustomConfig(server.url, server.accessToken, customConfig)
+      await server.configCommand.updateCustomConfig({ newCustomConfig: customConfig })
 
-      const resConfig = await getConfig(server.url)
-      const serverConfig: ServerConfig = resConfig.body
+      const serverConfig = await server.configCommand.getConfig()
       expect(serverConfig.instance.defaultNSFWPolicy).to.equal('blur')
 
       for (const res of await getVideosFunctions()) {
@@ -172,7 +163,7 @@ describe('Test video NSFW policy', function () {
 
     it('Should display NSFW videos with blur user NSFW policy', async function () {
       customConfig.instance.defaultNSFWPolicy = 'do_not_list'
-      await updateCustomConfig(server.url, server.accessToken, customConfig)
+      await server.configCommand.updateCustomConfig({ newCustomConfig: customConfig })
 
       for (const res of await getVideosFunctions(userAccessToken)) {
         expect(res.body.total).to.equal(2)
index c95053a294bb8e1d4970c0c5ba58e33577498988..e74fb5bef4b5c27c4f978c5bd9a62c44a9e700a9 100644 (file)
@@ -5,7 +5,6 @@ import * as chai from 'chai'
 import { FfprobeData } from 'fluent-ffmpeg'
 import { omit } from 'lodash'
 import { join } from 'path'
-import { Job } from '@shared/models'
 import { VIDEO_TRANSCODING_FPS } from '../../../../server/initializers/constants'
 import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
 import {
@@ -24,7 +23,6 @@ import {
   makeGetRequest,
   ServerInfo,
   setAccessTokensToServers,
-  updateCustomSubConfig,
   uploadVideo,
   uploadVideoAndGetId,
   waitJobs,
@@ -43,22 +41,24 @@ import {
 const expect = chai.expect
 
 function updateConfigForTranscoding (server: ServerInfo) {
-  return updateCustomSubConfig(server.url, server.accessToken, {
-    transcoding: {
-      enabled: true,
-      allowAdditionalExtensions: true,
-      allowAudioFiles: true,
-      hls: { enabled: true },
-      webtorrent: { enabled: true },
-      resolutions: {
-        '0p': false,
-        '240p': true,
-        '360p': true,
-        '480p': true,
-        '720p': true,
-        '1080p': true,
-        '1440p': true,
-        '2160p': true
+  return server.configCommand.updateCustomSubConfig({
+    newConfig: {
+      transcoding: {
+        enabled: true,
+        allowAdditionalExtensions: true,
+        allowAudioFiles: true,
+        hls: { enabled: true },
+        webtorrent: { enabled: true },
+        resolutions: {
+          '0p': false,
+          '240p': true,
+          '360p': true,
+          '480p': true,
+          '720p': true,
+          '1080p': true,
+          '1440p': true,
+          '2160p': true
+        }
       }
     }
   })
@@ -363,19 +363,21 @@ describe('Test video transcoding', function () {
     function runSuite (mode: 'legacy' | 'resumable') {
 
       before(async function () {
-        await updateCustomSubConfig(servers[1].url, servers[1].accessToken, {
-          transcoding: {
-            hls: { enabled: true },
-            webtorrent: { enabled: true },
-            resolutions: {
-              '0p': false,
-              '240p': false,
-              '360p': false,
-              '480p': false,
-              '720p': false,
-              '1080p': false,
-              '1440p': false,
-              '2160p': false
+        await servers[1].configCommand.updateCustomSubConfig({
+          newConfig: {
+            transcoding: {
+              hls: { enabled: true },
+              webtorrent: { enabled: true },
+              resolutions: {
+                '0p': false,
+                '240p': false,
+                '360p': false,
+                '480p': false,
+                '720p': false,
+                '1080p': false,
+                '1440p': false,
+                '2160p': false
+              }
             }
           }
         })
@@ -434,14 +436,16 @@ describe('Test video transcoding', function () {
       it('Should upload an audio file and create an audio version only', async function () {
         this.timeout(60_000)
 
-        await updateCustomSubConfig(servers[1].url, servers[1].accessToken, {
-          transcoding: {
-            hls: { enabled: true },
-            webtorrent: { enabled: true },
-            resolutions: {
-              '0p': true,
-              '240p': false,
-              '360p': false
+        await servers[1].configCommand.updateCustomSubConfig({
+          newConfig: {
+            transcoding: {
+              hls: { enabled: true },
+              webtorrent: { enabled: true },
+              resolutions: {
+                '0p': true,
+                '240p': false,
+                '360p': false
+              }
             }
           }
         })
@@ -601,7 +605,7 @@ describe('Test video transcoding', function () {
     it('Should not transcode to an higher bitrate than the original file', async function () {
       this.timeout(160_000)
 
-      const config = {
+      const newConfig = {
         transcoding: {
           enabled: true,
           resolutions: {
@@ -617,7 +621,7 @@ describe('Test video transcoding', function () {
           hls: { enabled: true }
         }
       }
-      await updateCustomSubConfig(servers[1].url, servers[1].accessToken, config)
+      await servers[1].configCommand.updateCustomSubConfig({ newConfig })
 
       const videoAttributes = {
         name: 'low bitrate',
index be46dec2548d1820c50ba1f9763624148a583f0f..e3211882dd921fb4d76b036234468d4caa4928f5 100644 (file)
@@ -10,7 +10,6 @@ import {
   getVideosList,
   ServerInfo,
   setAccessTokensToServers,
-  updateCustomSubConfig,
   uploadVideo
 } from '../../../shared/extra-utils'
 import { waitJobs } from '../../../shared/extra-utils/server/jobs'
@@ -47,7 +46,7 @@ describe('Test create transcoding jobs', function () {
     servers = await flushAndRunMultipleServers(2)
     await setAccessTokensToServers(servers)
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+    await servers[0].configCommand.updateCustomSubConfig({ newConfig: config })
 
     await doubleFollow(servers[0], servers[1])
 
@@ -199,7 +198,7 @@ describe('Test create transcoding jobs', function () {
     this.timeout(120000)
 
     config.transcoding.hls.enabled = true
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, config)
+    await servers[0].configCommand.updateCustomSubConfig({ newConfig: config })
 
     await servers[0].cliCommand.execWithEnv(`npm run create-transcoding-job -- -v ${videosUUID[4]}`)
 
index 7b8746a5d64089301cf2fc563534ca6c154121a0..e5efae36bcfab54d8004b962c9a7223be2bd21db 100644 (file)
@@ -5,14 +5,12 @@ import { expect } from 'chai'
 import {
   cleanupTests,
   flushAndRunServer,
-  getConfig,
   killallServers,
   PluginsCommand,
   reRunServer,
   ServerInfo,
   setAccessTokensToServers
 } from '../../../shared/extra-utils'
-import { ServerConfig } from '../../../shared/models/server'
 
 describe('Test plugin scripts', function () {
   let server: ServerInfo
@@ -44,8 +42,7 @@ describe('Test plugin scripts', function () {
     killallServers([ server ])
     await reRunServer(server)
 
-    const res = await getConfig(server.url)
-    const config: ServerConfig = res.body
+    const config = await server.configCommand.getConfig()
 
     const plugin = config.plugin.registered
                          .find(p => p.name === 'test')
@@ -68,8 +65,7 @@ describe('Test plugin scripts', function () {
     killallServers([ server ])
     await reRunServer(server)
 
-    const res = await getConfig(server.url)
-    const config: ServerConfig = res.body
+    const config = await server.configCommand.getConfig()
 
     const plugin = config.plugin.registered
                          .find(p => p.name === 'test')
index 7c4fb4e46c0976d66c382015dea09ddb8886305e..be7ce18b4b9bcf35348e03d2cea3e0c6893c564b 100644 (file)
@@ -4,7 +4,7 @@ import 'mocha'
 import * as chai from 'chai'
 import { omit } from 'lodash'
 import { HttpStatusCode } from '@shared/core-utils/miscs/http-error-codes'
-import { Account, CustomConfig, HTMLServerConfig, ServerConfig, VideoPlaylistCreateResult, VideoPlaylistPrivacy } from '@shared/models'
+import { Account, HTMLServerConfig, ServerConfig, VideoPlaylistCreateResult, VideoPlaylistPrivacy } from '@shared/models'
 import {
   addVideoInPlaylist,
   cleanupTests,
@@ -12,16 +12,12 @@ import {
   doubleFollow,
   flushAndRunMultipleServers,
   getAccount,
-  getConfig,
-  getCustomConfig,
   getVideosList,
   makeGetRequest,
   makeHTMLRequest,
   ServerInfo,
   setAccessTokensToServers,
   setDefaultVideoChannel,
-  updateCustomConfig,
-  updateCustomSubConfig,
   updateMyUser,
   updateVideoChannel,
   uploadVideo,
@@ -307,14 +303,13 @@ describe('Test a client controllers', function () {
     describe('Whitelisted', function () {
 
       before(async function () {
-        const res = await getCustomConfig(servers[0].url, servers[0].accessToken)
-        const config = res.body as CustomConfig
+        const config = await servers[0].configCommand.getCustomConfig()
         config.services.twitter = {
           username: '@Kuja',
           whitelisted: true
         }
 
-        await updateCustomConfig(servers[0].url, servers[0].accessToken, config)
+        await servers[0].configCommand.updateCustomConfig({ newCustomConfig: config })
       })
 
       async function accountPageTest (path: string) {
@@ -382,40 +377,42 @@ describe('Test a client controllers', function () {
   describe('Index HTML', function () {
 
     it('Should have valid index html tags (title, description...)', async function () {
-      const resConfig = await getConfig(servers[0].url)
+      const config = await servers[0].configCommand.getConfig()
       const res = await makeHTMLRequest(servers[0].url, '/videos/trending')
 
       const description = 'PeerTube, an ActivityPub-federated video streaming platform using P2P directly in your web browser.'
-      checkIndexTags(res.text, 'PeerTube', description, '', resConfig.body)
+      checkIndexTags(res.text, 'PeerTube', description, '', config)
     })
 
     it('Should update the customized configuration and have the correct index html tags', async function () {
-      await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-        instance: {
-          name: 'PeerTube updated',
-          shortDescription: 'my short description',
-          description: 'my super description',
-          terms: 'my super terms',
-          defaultNSFWPolicy: 'blur',
-          defaultClientRoute: '/videos/recently-added',
-          customizations: {
-            javascript: 'alert("coucou")',
-            css: 'body { background-color: red; }'
+      await servers[0].configCommand.updateCustomSubConfig({
+        newConfig: {
+          instance: {
+            name: 'PeerTube updated',
+            shortDescription: 'my short description',
+            description: 'my super description',
+            terms: 'my super terms',
+            defaultNSFWPolicy: 'blur',
+            defaultClientRoute: '/videos/recently-added',
+            customizations: {
+              javascript: 'alert("coucou")',
+              css: 'body { background-color: red; }'
+            }
           }
         }
       })
 
-      const resConfig = await getConfig(servers[0].url)
+      const config = await servers[0].configCommand.getConfig()
       const res = await makeHTMLRequest(servers[0].url, '/videos/trending')
 
-      checkIndexTags(res.text, 'PeerTube updated', 'my short description', 'body { background-color: red; }', resConfig.body)
+      checkIndexTags(res.text, 'PeerTube updated', 'my short description', 'body { background-color: red; }', config)
     })
 
     it('Should have valid index html updated tags (title, description...)', async function () {
-      const resConfig = await getConfig(servers[0].url)
+      const config = await servers[0].configCommand.getConfig()
       const res = await makeHTMLRequest(servers[0].url, '/videos/trending')
 
-      checkIndexTags(res.text, 'PeerTube updated', 'my short description', 'body { background-color: red; }', resConfig.body)
+      checkIndexTags(res.text, 'PeerTube updated', 'my short description', 'body { background-color: red; }', config)
     })
 
     it('Should use the original video URL for the canonical tag', async function () {
@@ -428,7 +425,7 @@ describe('Test a client controllers', function () {
     })
 
     it('Should use the original account URL for the canonical tag', async function () {
-      const accountURLtest = (res) => {
+      const accountURLtest = res => {
         expect(res.text).to.contain(`<link rel="canonical" href="${servers[0].url}/accounts/root" />`)
       }
 
@@ -438,7 +435,7 @@ describe('Test a client controllers', function () {
     })
 
     it('Should use the original channel URL for the canonical tag', async function () {
-      const channelURLtests = (res) => {
+      const channelURLtests = res => {
         expect(res.text).to.contain(`<link rel="canonical" href="${servers[0].url}/video-channels/root_channel" />`)
       }
 
@@ -460,10 +457,10 @@ describe('Test a client controllers', function () {
   describe('Embed HTML', function () {
 
     it('Should have the correct embed html tags', async function () {
-      const resConfig = await getConfig(servers[0].url)
+      const config = await servers[0].configCommand.getConfig()
       const res = await makeHTMLRequest(servers[0].url, servers[0].video.embedPath)
 
-      checkIndexTags(res.text, 'PeerTube updated', 'my short description', 'body { background-color: red; }', resConfig.body)
+      checkIndexTags(res.text, 'PeerTube updated', 'my short description', 'body { background-color: red; }', config)
     })
   })
 
index 4243027863956535cbb2348b0e98633a61ff3534..09a107ca2ea0497f19944d35bfb0c22a85cd6db7 100644 (file)
@@ -8,7 +8,6 @@ import {
   createUser,
   decodeQueryString,
   flushAndRunServer,
-  getConfig,
   getMyUserInformation,
   loginUsingExternalToken,
   logout,
@@ -21,7 +20,7 @@ import {
   wait,
   waitUntilLog
 } from '@shared/extra-utils'
-import { ServerConfig, User, UserRole } from '@shared/models'
+import { User, UserRole } from '@shared/models'
 
 async function loginExternal (options: {
   server: ServerInfo
@@ -78,9 +77,7 @@ describe('Test external auth plugins', function () {
   })
 
   it('Should display the correct configuration', async function () {
-    const res = await getConfig(server.url)
-
-    const config: ServerConfig = res.body
+    const config = await server.configCommand.getConfig()
 
     const auths = config.plugin.registeredExternalAuths
     expect(auths).to.have.lengthOf(8)
@@ -288,9 +285,7 @@ describe('Test external auth plugins', function () {
   })
 
   it('Should have disabled this auth', async function () {
-    const res = await getConfig(server.url)
-
-    const config: ServerConfig = res.body
+    const config = await server.configCommand.getConfig()
 
     const auths = config.plugin.registeredExternalAuths
     expect(auths).to.have.lengthOf(7)
@@ -354,9 +349,7 @@ describe('Test external auth plugins', function () {
   })
 
   it('Should display the correct configuration', async function () {
-    const res = await getConfig(server.url)
-
-    const config: ServerConfig = res.body
+    const config = await server.configCommand.getConfig()
 
     const auths = config.plugin.registeredExternalAuths
     expect(auths).to.have.lengthOf(6)
index c51e96ab78829610873b62930044a94ceb0e6a63..e254046bf08a6695607bde2b4a2e93d15a2e84c0 100644 (file)
@@ -12,7 +12,6 @@ import {
   doubleFollow,
   flushAndRunMultipleServers,
   getAccountVideos,
-  getConfig,
   getMyVideos,
   getVideo,
   getVideoChannelVideos,
@@ -28,7 +27,6 @@ import {
   ServerInfo,
   setAccessTokensToServers,
   setDefaultVideoChannel,
-  updateCustomSubConfig,
   updateVideo,
   uploadVideo,
   uploadVideoAndGetId,
@@ -37,7 +35,6 @@ import {
 } from '@shared/extra-utils'
 import { getGoodVideoUrl, getMyVideoImports, importVideo } from '@shared/extra-utils/videos/video-imports'
 import {
-  ServerConfig,
   VideoCommentThreadTree,
   VideoDetails,
   VideoImport,
@@ -72,13 +69,15 @@ describe('Test plugin filter hooks', function () {
     const res = await getVideosList(servers[0].url)
     videoUUID = res.body.data[0].uuid
 
-    await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-      live: { enabled: true },
-      signup: { enabled: true },
-      import: {
-        videos: {
-          http: { enabled: true },
-          torrent: { enabled: true }
+    await servers[0].configCommand.updateCustomSubConfig({
+      newConfig: {
+        live: { enabled: true },
+        signup: { enabled: true },
+        import: {
+          videos: {
+            http: { enabled: true },
+            torrent: { enabled: true }
+          }
         }
       }
     })
@@ -344,8 +343,8 @@ describe('Test plugin filter hooks', function () {
   describe('Should run filter:api.user.signup.allowed.result', function () {
 
     it('Should run on config endpoint', async function () {
-      const res = await getConfig(servers[0].url)
-      expect((res.body as ServerConfig).signup.allowed).to.be.true
+      const body = await servers[0].configCommand.getConfig()
+      expect(body.signup.allowed).to.be.true
     })
 
     it('Should allow a signup', async function () {
@@ -365,13 +364,15 @@ describe('Test plugin filter hooks', function () {
     before(async function () {
       this.timeout(120000)
 
-      await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-        transcoding: {
-          webtorrent: {
-            enabled: true
-          },
-          hls: {
-            enabled: true
+      await servers[0].configCommand.updateCustomSubConfig({
+        newConfig: {
+          transcoding: {
+            webtorrent: {
+              enabled: true
+            },
+            hls: {
+              enabled: true
+            }
           }
         }
       })
@@ -427,9 +428,11 @@ describe('Test plugin filter hooks', function () {
     before(async function () {
       this.timeout(60000)
 
-      await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-        transcoding: {
-          enabled: false
+      await servers[0].configCommand.updateCustomSubConfig({
+        newConfig: {
+          transcoding: {
+            enabled: false
+          }
         }
       })
 
@@ -464,12 +467,14 @@ describe('Test plugin filter hooks', function () {
   describe('Search filters', function () {
 
     before(async function () {
-      await updateCustomSubConfig(servers[0].url, servers[0].accessToken, {
-        search: {
-          searchIndex: {
-            enabled: true,
-            isDefaultSearch: false,
-            disableLocalSearch: false
+      await servers[0].configCommand.updateCustomSubConfig({
+        newConfig: {
+          search: {
+            searchIndex: {
+              enabled: true,
+              isDefaultSearch: false,
+              disableLocalSearch: false
+            }
           }
         }
       })
index 545968040fdefc67a30ff78aeb52949e55df5f65..99de28d3f87cddeb371b54a52054123c2024952e 100644 (file)
@@ -5,7 +5,6 @@ import { expect } from 'chai'
 import {
   cleanupTests,
   flushAndRunServer,
-  getConfig,
   getMyUserInformation,
   getUsersList,
   login,
@@ -19,7 +18,7 @@ import {
   wait,
   waitUntilLog
 } from '@shared/extra-utils'
-import { ServerConfig, User, UserRole } from '@shared/models'
+import { User, UserRole } from '@shared/models'
 
 describe('Test id and pass auth plugins', function () {
   let server: ServerInfo
@@ -42,9 +41,7 @@ describe('Test id and pass auth plugins', function () {
   })
 
   it('Should display the correct configuration', async function () {
-    const res = await getConfig(server.url)
-
-    const config: ServerConfig = res.body
+    const config = await server.configCommand.getConfig()
 
     const auths = config.plugin.registeredIdAndPassAuths
     expect(auths).to.have.lengthOf(8)
@@ -190,9 +187,7 @@ describe('Test id and pass auth plugins', function () {
   })
 
   it('Should have disabled this auth', async function () {
-    const res = await getConfig(server.url)
-
-    const config: ServerConfig = res.body
+    const config = await server.configCommand.getConfig()
 
     const auths = config.plugin.registeredIdAndPassAuths
     expect(auths).to.have.lengthOf(7)
@@ -208,9 +203,7 @@ describe('Test id and pass auth plugins', function () {
   })
 
   it('Should display the correct configuration', async function () {
-    const res = await getConfig(server.url)
-
-    const config: ServerConfig = res.body
+    const config = await server.configCommand.getConfig()
 
     const auths = config.plugin.registeredIdAndPassAuths
     expect(auths).to.have.lengthOf(6)
index f1ff9107778232ea3ec192264711a884f460369e..71c2adc72016bbffe9760f91cdbab26159ecc9cf 100644 (file)
@@ -9,7 +9,6 @@ import {
   cleanupTests,
   createLive,
   flushAndRunServer,
-  getConfig,
   getVideo,
   PluginsCommand,
   sendRTMPStreamInVideo,
@@ -17,12 +16,11 @@ import {
   setAccessTokensToServers,
   setDefaultVideoChannel,
   testFfmpegStreamError,
-  updateCustomSubConfig,
   uploadVideoAndGetId,
   waitJobs,
   waitUntilLivePublished
 } from '@shared/extra-utils'
-import { ServerConfig, VideoDetails, VideoPrivacy } from '@shared/models'
+import { VideoDetails, VideoPrivacy } from '@shared/models'
 
 async function createLiveWrapper (server: ServerInfo) {
   const liveAttributes = {
@@ -36,33 +34,35 @@ async function createLiveWrapper (server: ServerInfo) {
 }
 
 function updateConf (server: ServerInfo, vodProfile: string, liveProfile: string) {
-  return updateCustomSubConfig(server.url, server.accessToken, {
-    transcoding: {
-      enabled: true,
-      profile: vodProfile,
-      hls: {
-        enabled: true
-      },
-      webtorrent: {
-        enabled: true
-      },
-      resolutions: {
-        '240p': true,
-        '360p': false,
-        '480p': false,
-        '720p': true
-      }
-    },
-    live: {
+  return server.configCommand.updateCustomSubConfig({
+    newConfig: {
       transcoding: {
-        profile: liveProfile,
         enabled: true,
+        profile: vodProfile,
+        hls: {
+          enabled: true
+        },
+        webtorrent: {
+          enabled: true
+        },
         resolutions: {
           '240p': true,
           '360p': false,
           '480p': false,
           '720p': true
         }
+      },
+      live: {
+        transcoding: {
+          profile: liveProfile,
+          enabled: true,
+          resolutions: {
+            '240p': true,
+            '360p': false,
+            '480p': false,
+            '720p': true
+          }
+        }
       }
     }
   })
@@ -113,8 +113,7 @@ describe('Test transcoding plugins', function () {
     })
 
     it('Should have the appropriate available profiles', async function () {
-      const res = await getConfig(server.url)
-      const config = res.body as ServerConfig
+      const config = await server.configCommand.getConfig()
 
       expect(config.transcoding.availableProfiles).to.have.members([ 'default', 'low-vod', 'input-options-vod', 'bad-scale-vod' ])
       expect(config.live.transcoding.availableProfiles).to.have.members([ 'default', 'low-live', 'input-options-live', 'bad-scale-live' ])
@@ -223,8 +222,7 @@ describe('Test transcoding plugins', function () {
 
       await server.pluginsCommand.uninstall({ npmName: 'peertube-plugin-test-transcoding-one' })
 
-      const res = await getConfig(server.url)
-      const config = res.body as ServerConfig
+      const config = await server.configCommand.getConfig()
 
       expect(config.transcoding.availableProfiles).to.deep.equal([ 'default' ])
       expect(config.live.transcoding.availableProfiles).to.deep.equal([ 'default' ])
diff --git a/shared/extra-utils/server/config-command.ts b/shared/extra-utils/server/config-command.ts
new file mode 100644 (file)
index 0000000..9598487
--- /dev/null
@@ -0,0 +1,260 @@
+import { merge } from 'lodash'
+import { DeepPartial, HttpStatusCode } from '@shared/core-utils'
+import { About, ServerConfig } from '@shared/models'
+import { CustomConfig } from '../../models/server/custom-config.model'
+import { AbstractCommand, OverrideCommandOptions } from '../shared'
+
+export class ConfigCommand extends AbstractCommand {
+
+  static getCustomConfigResolutions (enabled: boolean) {
+    return {
+      '240p': enabled,
+      '360p': enabled,
+      '480p': enabled,
+      '720p': enabled,
+      '1080p': enabled,
+      '1440p': enabled,
+      '2160p': enabled
+    }
+  }
+
+  getConfig (options: OverrideCommandOptions = {}) {
+    const path = '/api/v1/config'
+
+    return this.getRequestBody<ServerConfig>({
+      ...options,
+
+      token: null,
+      path,
+      defaultExpectedStatus: HttpStatusCode.OK_200
+    })
+  }
+
+  getAbout (options: OverrideCommandOptions = {}) {
+    const path = '/api/v1/config/about'
+
+    return this.getRequestBody<About>({
+      ...options,
+
+      token: null,
+      path,
+      defaultExpectedStatus: HttpStatusCode.OK_200
+    })
+  }
+
+  getCustomConfig (options: OverrideCommandOptions = {}) {
+    const path = '/api/v1/config/custom'
+
+    return this.getRequestBody<CustomConfig>({
+      ...options,
+
+      path,
+      defaultExpectedStatus: HttpStatusCode.OK_200
+    })
+  }
+
+  updateCustomConfig (options: OverrideCommandOptions & {
+    newCustomConfig: CustomConfig
+  }) {
+    const path = '/api/v1/config/custom'
+
+    return this.putBodyRequest({
+      ...options,
+
+      path,
+      fields: options.newCustomConfig,
+      defaultExpectedStatus: HttpStatusCode.OK_200
+    })
+  }
+
+  deleteCustomConfig (options: OverrideCommandOptions = {}) {
+    const path = '/api/v1/config/custom'
+
+    return this.deleteRequest({
+      ...options,
+
+      path,
+      defaultExpectedStatus: HttpStatusCode.OK_200
+    })
+  }
+
+  updateCustomSubConfig (options: OverrideCommandOptions & {
+    newConfig: DeepPartial<CustomConfig>
+  }) {
+    const newCustomConfig: CustomConfig = {
+      instance: {
+        name: 'PeerTube updated',
+        shortDescription: 'my short description',
+        description: 'my super description',
+        terms: 'my super terms',
+        codeOfConduct: 'my super coc',
+
+        creationReason: 'my super creation reason',
+        moderationInformation: 'my super moderation information',
+        administrator: 'Kuja',
+        maintenanceLifetime: 'forever',
+        businessModel: 'my super business model',
+        hardwareInformation: '2vCore 3GB RAM',
+
+        languages: [ 'en', 'es' ],
+        categories: [ 1, 2 ],
+
+        isNSFW: true,
+        defaultNSFWPolicy: 'blur',
+
+        defaultClientRoute: '/videos/recently-added',
+
+        customizations: {
+          javascript: 'alert("coucou")',
+          css: 'body { background-color: red; }'
+        }
+      },
+      theme: {
+        default: 'default'
+      },
+      services: {
+        twitter: {
+          username: '@MySuperUsername',
+          whitelisted: true
+        }
+      },
+      cache: {
+        previews: {
+          size: 2
+        },
+        captions: {
+          size: 3
+        },
+        torrents: {
+          size: 4
+        }
+      },
+      signup: {
+        enabled: false,
+        limit: 5,
+        requiresEmailVerification: false,
+        minimumAge: 16
+      },
+      admin: {
+        email: 'superadmin1@example.com'
+      },
+      contactForm: {
+        enabled: true
+      },
+      user: {
+        videoQuota: 5242881,
+        videoQuotaDaily: 318742
+      },
+      transcoding: {
+        enabled: true,
+        allowAdditionalExtensions: true,
+        allowAudioFiles: true,
+        threads: 1,
+        concurrency: 3,
+        profile: 'default',
+        resolutions: {
+          '0p': false,
+          '240p': false,
+          '360p': true,
+          '480p': true,
+          '720p': false,
+          '1080p': false,
+          '1440p': false,
+          '2160p': false
+        },
+        webtorrent: {
+          enabled: true
+        },
+        hls: {
+          enabled: false
+        }
+      },
+      live: {
+        enabled: true,
+        allowReplay: false,
+        maxDuration: -1,
+        maxInstanceLives: -1,
+        maxUserLives: 50,
+        transcoding: {
+          enabled: true,
+          threads: 4,
+          profile: 'default',
+          resolutions: {
+            '240p': true,
+            '360p': true,
+            '480p': true,
+            '720p': true,
+            '1080p': true,
+            '1440p': true,
+            '2160p': true
+          }
+        }
+      },
+      import: {
+        videos: {
+          concurrency: 3,
+          http: {
+            enabled: false
+          },
+          torrent: {
+            enabled: false
+          }
+        }
+      },
+      trending: {
+        videos: {
+          algorithms: {
+            enabled: [ 'best', 'hot', 'most-viewed', 'most-liked' ],
+            default: 'hot'
+          }
+        }
+      },
+      autoBlacklist: {
+        videos: {
+          ofUsers: {
+            enabled: false
+          }
+        }
+      },
+      followers: {
+        instance: {
+          enabled: true,
+          manualApproval: false
+        }
+      },
+      followings: {
+        instance: {
+          autoFollowBack: {
+            enabled: false
+          },
+          autoFollowIndex: {
+            indexUrl: 'https://instances.joinpeertube.org/api/v1/instances/hosts',
+            enabled: false
+          }
+        }
+      },
+      broadcastMessage: {
+        enabled: true,
+        level: 'warning',
+        message: 'hello',
+        dismissable: true
+      },
+      search: {
+        remoteUri: {
+          users: true,
+          anonymous: true
+        },
+        searchIndex: {
+          enabled: true,
+          url: 'https://search.joinpeertube.org',
+          disableLocalSearch: true,
+          isDefaultSearch: true
+        }
+      }
+    }
+
+    merge(newCustomConfig, options.newConfig)
+
+    return this.updateCustomConfig({ ...options, newCustomConfig })
+  }
+}
diff --git a/shared/extra-utils/server/config.ts b/shared/extra-utils/server/config.ts
deleted file mode 100644 (file)
index 9fcfb31..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-import { makeDeleteRequest, makeGetRequest, makePutBodyRequest } from '../requests/requests'
-import { CustomConfig } from '../../models/server/custom-config.model'
-import { DeepPartial, HttpStatusCode } from '@shared/core-utils'
-import { merge } from 'lodash'
-
-function getConfig (url: string) {
-  const path = '/api/v1/config'
-
-  return makeGetRequest({
-    url,
-    path,
-    statusCodeExpected: HttpStatusCode.OK_200
-  })
-}
-
-function getAbout (url: string) {
-  const path = '/api/v1/config/about'
-
-  return makeGetRequest({
-    url,
-    path,
-    statusCodeExpected: HttpStatusCode.OK_200
-  })
-}
-
-function getCustomConfig (url: string, token: string, statusCodeExpected = HttpStatusCode.OK_200) {
-  const path = '/api/v1/config/custom'
-
-  return makeGetRequest({
-    url,
-    token,
-    path,
-    statusCodeExpected
-  })
-}
-
-function updateCustomConfig (url: string, token: string, newCustomConfig: CustomConfig, statusCodeExpected = HttpStatusCode.OK_200) {
-  const path = '/api/v1/config/custom'
-
-  return makePutBodyRequest({
-    url,
-    token,
-    path,
-    fields: newCustomConfig,
-    statusCodeExpected
-  })
-}
-
-function updateCustomSubConfig (url: string, token: string, newConfig: DeepPartial<CustomConfig>) {
-  const updateParams: CustomConfig = {
-    instance: {
-      name: 'PeerTube updated',
-      shortDescription: 'my short description',
-      description: 'my super description',
-      terms: 'my super terms',
-      codeOfConduct: 'my super coc',
-
-      creationReason: 'my super creation reason',
-      moderationInformation: 'my super moderation information',
-      administrator: 'Kuja',
-      maintenanceLifetime: 'forever',
-      businessModel: 'my super business model',
-      hardwareInformation: '2vCore 3GB RAM',
-
-      languages: [ 'en', 'es' ],
-      categories: [ 1, 2 ],
-
-      isNSFW: true,
-      defaultNSFWPolicy: 'blur',
-
-      defaultClientRoute: '/videos/recently-added',
-
-      customizations: {
-        javascript: 'alert("coucou")',
-        css: 'body { background-color: red; }'
-      }
-    },
-    theme: {
-      default: 'default'
-    },
-    services: {
-      twitter: {
-        username: '@MySuperUsername',
-        whitelisted: true
-      }
-    },
-    cache: {
-      previews: {
-        size: 2
-      },
-      captions: {
-        size: 3
-      },
-      torrents: {
-        size: 4
-      }
-    },
-    signup: {
-      enabled: false,
-      limit: 5,
-      requiresEmailVerification: false,
-      minimumAge: 16
-    },
-    admin: {
-      email: 'superadmin1@example.com'
-    },
-    contactForm: {
-      enabled: true
-    },
-    user: {
-      videoQuota: 5242881,
-      videoQuotaDaily: 318742
-    },
-    transcoding: {
-      enabled: true,
-      allowAdditionalExtensions: true,
-      allowAudioFiles: true,
-      threads: 1,
-      concurrency: 3,
-      profile: 'default',
-      resolutions: {
-        '0p': false,
-        '240p': false,
-        '360p': true,
-        '480p': true,
-        '720p': false,
-        '1080p': false,
-        '1440p': false,
-        '2160p': false
-      },
-      webtorrent: {
-        enabled: true
-      },
-      hls: {
-        enabled: false
-      }
-    },
-    live: {
-      enabled: true,
-      allowReplay: false,
-      maxDuration: -1,
-      maxInstanceLives: -1,
-      maxUserLives: 50,
-      transcoding: {
-        enabled: true,
-        threads: 4,
-        profile: 'default',
-        resolutions: {
-          '240p': true,
-          '360p': true,
-          '480p': true,
-          '720p': true,
-          '1080p': true,
-          '1440p': true,
-          '2160p': true
-        }
-      }
-    },
-    import: {
-      videos: {
-        concurrency: 3,
-        http: {
-          enabled: false
-        },
-        torrent: {
-          enabled: false
-        }
-      }
-    },
-    trending: {
-      videos: {
-        algorithms: {
-          enabled: [ 'best', 'hot', 'most-viewed', 'most-liked' ],
-          default: 'hot'
-        }
-      }
-    },
-    autoBlacklist: {
-      videos: {
-        ofUsers: {
-          enabled: false
-        }
-      }
-    },
-    followers: {
-      instance: {
-        enabled: true,
-        manualApproval: false
-      }
-    },
-    followings: {
-      instance: {
-        autoFollowBack: {
-          enabled: false
-        },
-        autoFollowIndex: {
-          indexUrl: 'https://instances.joinpeertube.org/api/v1/instances/hosts',
-          enabled: false
-        }
-      }
-    },
-    broadcastMessage: {
-      enabled: true,
-      level: 'warning',
-      message: 'hello',
-      dismissable: true
-    },
-    search: {
-      remoteUri: {
-        users: true,
-        anonymous: true
-      },
-      searchIndex: {
-        enabled: true,
-        url: 'https://search.joinpeertube.org',
-        disableLocalSearch: true,
-        isDefaultSearch: true
-      }
-    }
-  }
-
-  merge(updateParams, newConfig)
-
-  return updateCustomConfig(url, token, updateParams)
-}
-
-function getCustomConfigResolutions (enabled: boolean) {
-  return {
-    '240p': enabled,
-    '360p': enabled,
-    '480p': enabled,
-    '720p': enabled,
-    '1080p': enabled,
-    '1440p': enabled,
-    '2160p': enabled
-  }
-}
-
-function deleteCustomConfig (url: string, token: string, statusCodeExpected = HttpStatusCode.OK_200) {
-  const path = '/api/v1/config/custom'
-
-  return makeDeleteRequest({
-    url,
-    token,
-    path,
-    statusCodeExpected
-  })
-}
-
-// ---------------------------------------------------------------------------
-
-export {
-  getConfig,
-  getCustomConfig,
-  updateCustomConfig,
-  getAbout,
-  deleteCustomConfig,
-  updateCustomSubConfig,
-  getCustomConfigResolutions
-}
index d37f463216032d170266ef0d157ddec7c84f0dd0..03c3b0123b60b4e2436d99012ea8a03784031c0d 100644 (file)
@@ -1,4 +1,4 @@
-export * from './config'
+export * from './config-command'
 export * from './contact-form-command'
 export * from './debug-command'
 export * from './follows-command'
index 4603cf62e13c71b47deddc0982bb73b27868e8d3..c33b68316beced95c9c8bf96b7c6f1aa24dc9e48 100644 (file)
@@ -16,6 +16,7 @@ import { AbusesCommand } from '../moderation'
 import { OverviewsCommand } from '../overviews'
 import { makeGetRequest } from '../requests/requests'
 import { SearchCommand } from '../search'
+import { ConfigCommand } from './config-command'
 import { ContactFormCommand } from './contact-form-command'
 import { DebugCommand } from './debug-command'
 import { FollowsCommand } from './follows-command'
@@ -91,6 +92,7 @@ interface ServerInfo {
   pluginsCommand?: PluginsCommand
   redundancyCommand?: RedundancyCommand
   statsCommand?: StatsCommand
+  configCommand?: ConfigCommand
 }
 
 function parallelTests () {
@@ -311,6 +313,7 @@ async function runServer (server: ServerInfo, configOverrideArg?: any, args = []
       server.pluginsCommand = new PluginsCommand(server)
       server.redundancyCommand = new RedundancyCommand(server)
       server.statsCommand = new StatsCommand(server)
+      server.configCommand = new ConfigCommand(server)
 
       res(server)
     })