/* eslint-disable @typescript-eslint/no-unused-expressions,@typescript-eslint/require-await */
-import 'mocha'
-import * as chai from 'chai'
+import { expect } from 'chai'
+import { parallelTests } from '@shared/core-utils'
+import { CustomConfig, HttpStatusCode } from '@shared/models'
import {
cleanupTests,
createSingleServer,
killallServers,
makeGetRequest,
- parallelTests,
PeerTubeServer,
setAccessTokensToServers
-} from '@shared/extra-utils'
-import { CustomConfig, HttpStatusCode } from '@shared/models'
-
-const expect = chai.expect
+} from '@shared/server-commands'
function checkInitialConfig (server: PeerTubeServer, data: CustomConfig) {
expect(data.instance.name).to.equal('PeerTube')
expect(data.services.twitter.username).to.equal('@Chocobozzz')
expect(data.services.twitter.whitelisted).to.be.false
+ expect(data.client.videos.miniature.preferAuthorDisplayName).to.be.false
+ expect(data.client.menu.login.redirectOnSingleExternalAuth).to.be.false
+
expect(data.cache.previews.size).to.equal(1)
expect(data.cache.captions.size).to.equal(1)
expect(data.cache.torrents.size).to.equal(1)
expect(data.signup.enabled).to.be.true
expect(data.signup.limit).to.equal(4)
expect(data.signup.minimumAge).to.equal(16)
+ expect(data.signup.requiresApproval).to.be.false
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.history.videos.enabled).to.be.true
expect(data.user.videoQuota).to.equal(5242880)
expect(data.user.videoQuotaDaily).to.equal(-1)
+ expect(data.videoChannels.maxPerUser).to.equal(20)
+
expect(data.transcoding.enabled).to.be.false
+ expect(data.transcoding.remoteRunners.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.concurrency).to.equal(2)
expect(data.transcoding.profile).to.equal('default')
+ expect(data.transcoding.resolutions['144p']).to.be.false
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['1080p']).to.be.true
expect(data.transcoding.resolutions['1440p']).to.be.true
expect(data.transcoding.resolutions['2160p']).to.be.true
+ expect(data.transcoding.alwaysTranscodeOriginalResolution).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.latencySetting.enabled).to.be.true
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.remoteRunners.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['144p']).to.be.false
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['1080p']).to.be.false
expect(data.live.transcoding.resolutions['1440p']).to.be.false
expect(data.live.transcoding.resolutions['2160p']).to.be.false
+ expect(data.live.transcoding.alwaysTranscodeOriginalResolution).to.be.true
+
+ expect(data.videoStudio.enabled).to.be.false
expect(data.import.videos.concurrency).to.equal(2)
expect(data.import.videos.http.enabled).to.be.true
expect(data.services.twitter.username).to.equal('@Kuja')
expect(data.services.twitter.whitelisted).to.be.true
+ expect(data.client.videos.miniature.preferAuthorDisplayName).to.be.true
+ expect(data.client.menu.login.redirectOnSingleExternalAuth).to.be.true
+
expect(data.cache.previews.size).to.equal(2)
expect(data.cache.captions.size).to.equal(3)
expect(data.cache.torrents.size).to.equal(4)
expect(data.signup.enabled).to.be.false
expect(data.signup.limit).to.equal(5)
+ expect(data.signup.requiresApproval).to.be.false
expect(data.signup.requiresEmailVerification).to.be.false
expect(data.signup.minimumAge).to.equal(10)
expect(data.contactForm.enabled).to.be.false
+ expect(data.user.history.videos.enabled).to.be.false
expect(data.user.videoQuota).to.equal(5242881)
expect(data.user.videoQuotaDaily).to.equal(318742)
+ expect(data.videoChannels.maxPerUser).to.equal(24)
+
expect(data.transcoding.enabled).to.be.true
+ expect(data.transcoding.remoteRunners.enabled).to.be.true
expect(data.transcoding.threads).to.equal(1)
expect(data.transcoding.concurrency).to.equal(3)
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['144p']).to.be.false
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.alwaysTranscodeOriginalResolution).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.latencySetting.enabled).to.be.false
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.remoteRunners.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['144p']).to.be.true
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.live.transcoding.alwaysTranscodeOriginalResolution).to.be.false
+
+ expect(data.videoStudio.enabled).to.be.true
expect(data.import.videos.concurrency).to.equal(4)
expect(data.import.videos.http.enabled).to.be.false
whitelisted: true
}
},
+ client: {
+ videos: {
+ miniature: {
+ preferAuthorDisplayName: true
+ }
+ },
+ menu: {
+ login: {
+ redirectOnSingleExternalAuth: true
+ }
+ }
+ },
cache: {
previews: {
size: 2
signup: {
enabled: false,
limit: 5,
+ requiresApproval: false,
requiresEmailVerification: false,
minimumAge: 10
},
enabled: false
},
user: {
+ history: {
+ videos: {
+ enabled: false
+ }
+ },
videoQuota: 5242881,
videoQuotaDaily: 318742
},
+ videoChannels: {
+ maxPerUser: 24
+ },
transcoding: {
enabled: true,
+ remoteRunners: {
+ enabled: true
+ },
allowAdditionalExtensions: true,
allowAudioFiles: true,
threads: 1,
profile: 'vod_profile',
resolutions: {
'0p': false,
+ '144p': false,
'240p': false,
'360p': true,
'480p': true,
'1440p': false,
'2160p': false
},
+ alwaysTranscodeOriginalResolution: false,
webtorrent: {
enabled: true
},
live: {
enabled: true,
allowReplay: true,
+ latencySetting: {
+ enabled: false
+ },
maxDuration: 5000,
maxInstanceLives: -1,
maxUserLives: 10,
transcoding: {
enabled: true,
+ remoteRunners: {
+ enabled: true
+ },
threads: 4,
profile: 'live_profile',
resolutions: {
+ '144p': true,
'240p': true,
'360p': true,
'480p': true,
'1080p': true,
'1440p': true,
'2160p': true
- }
+ },
+ alwaysTranscodeOriginalResolution: false
}
},
+ videoStudio: {
+ enabled: true
+ },
import: {
videos: {
concurrency: 4,
torrent: {
enabled: false
}
+ },
+ videoChannelSynchronization: {
+ enabled: false,
+ maxPerUser: 10
}
},
trending: {
videos: {
algorithms: {
- enabled: [ 'best', 'hot', 'most-viewed', 'most-liked' ],
+ enabled: [ 'hot', 'most-viewed', 'most-liked' ],
default: 'hot'
}
}
before(async function () {
this.timeout(30000)
- server = await createSingleServer(1, { webadmin: { configuration: { edit: { allowed: false } } } })
+ server = await createSingleServer(1, { webadmin: { configuration: { edition: { allowed: false } } } })
await setAccessTokensToServers([ server ])
})
it('Should tell the client that edits are not allowed', async function () {
const data = await server.config.getConfig()
- expect(data.allowEdits).to.be.false
+ expect(data.webadmin.configuration.edition.allowed).to.be.false
})
it('Should error when client tries to update', async function () {
await server.config.updateCustomConfig({ newCustomConfig, expectedStatus: 405 })
})
+
+ after(async function () {
+ await cleanupTests([ server ])
+ })
})
describe('Test config', function () {
this.timeout(5000)
await Promise.all([
- server.users.register({ username: 'user1' }),
- server.users.register({ username: 'user2' }),
- server.users.register({ username: 'user3' })
+ server.registrations.register({ username: 'user1' }),
+ server.registrations.register({ username: 'user2' }),
+ server.registrations.register({ username: 'user3' })
])
const data = await server.config.getConfig()
})
it('Should have the correct updated video allowed extensions', async function () {
- this.timeout(10000)
+ this.timeout(30000)
const data = await server.config.getConfig()
})
it('Should remove the custom configuration', async function () {
- this.timeout(10000)
-
await server.config.deleteCustomConfig()
const data = await server.config.getCustomConfig()
checkInitialConfig(server, data)
})
- it('Should enable frameguard', async function () {
+ it('Should enable/disable security headers', async function () {
this.timeout(25000)
{
})
expect(res.headers['x-frame-options']).to.exist
+ expect(res.headers['x-powered-by']).to.equal('PeerTube')
}
await killallServers([ server ])
const config = {
security: {
- frameguard: { enabled: false }
+ frameguard: { enabled: false },
+ powered_by_header: { enabled: false }
}
}
await server.run(config)
})
expect(res.headers['x-frame-options']).to.not.exist
+ expect(res.headers['x-powered-by']).to.not.exist
}
})