+ getCustomConfig,
+ killallServers,
+ parallelTests,
+ registerUser,
+ reRunServer,
+ ServerInfo,
+ setAccessTokensToServers,
+ updateCustomConfig,
+ uploadVideo
+} from '../../../../shared/extra-utils'
+import { ServerConfig } from '../../../../shared/models'
+import { HttpStatusCode } from '../../../../shared/core-utils/miscs/http-error-codes'
+
+const expect = chai.expect
+
+function checkInitialConfig (server: ServerInfo, data: CustomConfig) {
+ expect(data.instance.name).to.equal('PeerTube')
+ expect(data.instance.shortDescription).to.equal(
+ 'PeerTube, an ActivityPub-federated video streaming platform using P2P directly in your web browser.'
+ )
+ expect(data.instance.description).to.equal('Welcome to this PeerTube instance!')
+
+ expect(data.instance.terms).to.equal('No terms for now.')
+ expect(data.instance.creationReason).to.be.empty
+ expect(data.instance.codeOfConduct).to.be.empty
+ expect(data.instance.moderationInformation).to.be.empty
+ expect(data.instance.administrator).to.be.empty
+ expect(data.instance.maintenanceLifetime).to.be.empty
+ expect(data.instance.businessModel).to.be.empty
+ expect(data.instance.hardwareInformation).to.be.empty
+
+ expect(data.instance.languages).to.have.lengthOf(0)
+ expect(data.instance.categories).to.have.lengthOf(0)
+
+ expect(data.instance.defaultClientRoute).to.equal('/videos/trending')
+ expect(data.instance.isNSFW).to.be.false
+ expect(data.instance.defaultNSFWPolicy).to.equal('display')
+ expect(data.instance.customizations.css).to.be.empty
+ expect(data.instance.customizations.javascript).to.be.empty
+
+ expect(data.services.twitter.username).to.equal('@Chocobozzz')
+ expect(data.services.twitter.whitelisted).to.be.false
+
+ expect(data.cache.previews.size).to.equal(1)
+ expect(data.cache.captions.size).to.equal(1)
+
+ expect(data.signup.enabled).to.be.true
+ expect(data.signup.limit).to.equal(4)
+ expect(data.signup.requiresEmailVerification).to.be.false
+
+ expect(data.admin.email).to.equal('admin' + server.internalServerNumber + '@example.com')
+ expect(data.contactForm.enabled).to.be.true
+
+ expect(data.user.videoQuota).to.equal(5242880)
+ expect(data.user.videoQuotaDaily).to.equal(-1)
+
+ expect(data.transcoding.enabled).to.be.false
+ expect(data.transcoding.allowAdditionalExtensions).to.be.false
+ expect(data.transcoding.allowAudioFiles).to.be.false
+ expect(data.transcoding.threads).to.equal(2)
+ expect(data.transcoding.profile).to.equal('default')
+ expect(data.transcoding.resolutions['240p']).to.be.true
+ expect(data.transcoding.resolutions['360p']).to.be.true
+ expect(data.transcoding.resolutions['480p']).to.be.true
+ expect(data.transcoding.resolutions['720p']).to.be.true
+ expect(data.transcoding.resolutions['1080p']).to.be.true
+ expect(data.transcoding.resolutions['1440p']).to.be.true
+ expect(data.transcoding.resolutions['2160p']).to.be.true
+ expect(data.transcoding.webtorrent.enabled).to.be.true
+ expect(data.transcoding.hls.enabled).to.be.true
+
+ expect(data.live.enabled).to.be.false
+ expect(data.live.allowReplay).to.be.false
+ expect(data.live.maxDuration).to.equal(-1)
+ expect(data.live.maxInstanceLives).to.equal(20)
+ expect(data.live.maxUserLives).to.equal(3)
+ expect(data.live.transcoding.enabled).to.be.false
+ expect(data.live.transcoding.threads).to.equal(2)
+ expect(data.live.transcoding.profile).to.equal('default')
+ expect(data.live.transcoding.resolutions['240p']).to.be.false
+ expect(data.live.transcoding.resolutions['360p']).to.be.false
+ expect(data.live.transcoding.resolutions['480p']).to.be.false
+ expect(data.live.transcoding.resolutions['720p']).to.be.false
+ expect(data.live.transcoding.resolutions['1080p']).to.be.false
+ expect(data.live.transcoding.resolutions['1440p']).to.be.false
+ expect(data.live.transcoding.resolutions['2160p']).to.be.false
+
+ expect(data.import.videos.http.enabled).to.be.true
+ expect(data.import.videos.torrent.enabled).to.be.true
+ expect(data.autoBlacklist.videos.ofUsers.enabled).to.be.false
+
+ expect(data.followers.instance.enabled).to.be.true
+ expect(data.followers.instance.manualApproval).to.be.false
+
+ expect(data.followings.instance.autoFollowBack.enabled).to.be.false
+ expect(data.followings.instance.autoFollowIndex.enabled).to.be.false
+ expect(data.followings.instance.autoFollowIndex.indexUrl).to.equal('')
+
+ expect(data.broadcastMessage.enabled).to.be.false
+ expect(data.broadcastMessage.level).to.equal('info')
+ expect(data.broadcastMessage.message).to.equal('')
+ expect(data.broadcastMessage.dismissable).to.be.false
+}
+
+function checkUpdatedConfig (data: CustomConfig) {
+ expect(data.instance.name).to.equal('PeerTube updated')
+ expect(data.instance.shortDescription).to.equal('my short description')
+ expect(data.instance.description).to.equal('my super description')
+
+ expect(data.instance.terms).to.equal('my super terms')
+ expect(data.instance.creationReason).to.equal('my super creation reason')
+ expect(data.instance.codeOfConduct).to.equal('my super coc')
+ expect(data.instance.moderationInformation).to.equal('my super moderation information')
+ expect(data.instance.administrator).to.equal('Kuja')
+ expect(data.instance.maintenanceLifetime).to.equal('forever')
+ expect(data.instance.businessModel).to.equal('my super business model')
+ expect(data.instance.hardwareInformation).to.equal('2vCore 3GB RAM')
+
+ expect(data.instance.languages).to.deep.equal([ 'en', 'es' ])
+ expect(data.instance.categories).to.deep.equal([ 1, 2 ])
+
+ expect(data.instance.defaultClientRoute).to.equal('/videos/recently-added')
+ expect(data.instance.isNSFW).to.be.true
+ expect(data.instance.defaultNSFWPolicy).to.equal('blur')
+ expect(data.instance.customizations.javascript).to.equal('alert("coucou")')
+ expect(data.instance.customizations.css).to.equal('body { background-color: red; }')
+
+ expect(data.services.twitter.username).to.equal('@Kuja')
+ expect(data.services.twitter.whitelisted).to.be.true
+
+ expect(data.cache.previews.size).to.equal(2)
+ expect(data.cache.captions.size).to.equal(3)
+
+ expect(data.signup.enabled).to.be.false
+ expect(data.signup.limit).to.equal(5)
+ expect(data.signup.requiresEmailVerification).to.be.false
+
+ // We override admin email in parallel tests, so skip this exception
+ if (parallelTests() === false) {
+ expect(data.admin.email).to.equal('superadmin1@example.com')
+ }
+
+ expect(data.contactForm.enabled).to.be.false
+
+ expect(data.user.videoQuota).to.equal(5242881)
+ expect(data.user.videoQuotaDaily).to.equal(318742)
+
+ expect(data.transcoding.enabled).to.be.true
+ expect(data.transcoding.threads).to.equal(1)
+ expect(data.transcoding.allowAdditionalExtensions).to.be.true
+ expect(data.transcoding.allowAudioFiles).to.be.true
+ expect(data.transcoding.profile).to.equal('vod_profile')
+ expect(data.transcoding.resolutions['240p']).to.be.false
+ expect(data.transcoding.resolutions['360p']).to.be.true
+ expect(data.transcoding.resolutions['480p']).to.be.true
+ expect(data.transcoding.resolutions['720p']).to.be.false
+ expect(data.transcoding.resolutions['1080p']).to.be.false
+ expect(data.transcoding.resolutions['2160p']).to.be.false
+ expect(data.transcoding.hls.enabled).to.be.false
+ expect(data.transcoding.webtorrent.enabled).to.be.true
+
+ expect(data.live.enabled).to.be.true
+ expect(data.live.allowReplay).to.be.true
+ expect(data.live.maxDuration).to.equal(5000)
+ expect(data.live.maxInstanceLives).to.equal(-1)
+ expect(data.live.maxUserLives).to.equal(10)
+ expect(data.live.transcoding.enabled).to.be.true
+ expect(data.live.transcoding.threads).to.equal(4)
+ expect(data.live.transcoding.profile).to.equal('live_profile')
+ expect(data.live.transcoding.resolutions['240p']).to.be.true
+ expect(data.live.transcoding.resolutions['360p']).to.be.true
+ expect(data.live.transcoding.resolutions['480p']).to.be.true
+ expect(data.live.transcoding.resolutions['720p']).to.be.true
+ expect(data.live.transcoding.resolutions['1080p']).to.be.true
+ expect(data.live.transcoding.resolutions['2160p']).to.be.true
+
+ expect(data.import.videos.http.enabled).to.be.false
+ expect(data.import.videos.torrent.enabled).to.be.false
+ expect(data.autoBlacklist.videos.ofUsers.enabled).to.be.true
+
+ expect(data.followers.instance.enabled).to.be.false
+ expect(data.followers.instance.manualApproval).to.be.true
+
+ expect(data.followings.instance.autoFollowBack.enabled).to.be.true
+ expect(data.followings.instance.autoFollowIndex.enabled).to.be.true
+ expect(data.followings.instance.autoFollowIndex.indexUrl).to.equal('https://updated.example.com')
+
+ expect(data.broadcastMessage.enabled).to.be.true
+ expect(data.broadcastMessage.level).to.equal('error')
+ expect(data.broadcastMessage.message).to.equal('super bad message')
+ expect(data.broadcastMessage.dismissable).to.be.true
+}