aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2017-03-10 11:32:39 +0100
committerChocobozzz <florian.bigard@gmail.com>2017-03-10 11:32:39 +0100
commite22528aca6eb58c8f8005790ac6e76ed4f8ad706 (patch)
tree9669efb759249438e2b065171f19f817f7d48440
parenta2457e9de4a598ea34629bc40eb882ce03ec0ede (diff)
downloadPeerTube-e22528aca6eb58c8f8005790ac6e76ed4f8ad706.tar.gz
PeerTube-e22528aca6eb58c8f8005790ac6e76ed4f8ad706.tar.zst
PeerTube-e22528aca6eb58c8f8005790ac6e76ed4f8ad706.zip
Server: add config endpoint
-rw-r--r--config/default.yaml3
-rw-r--r--config/production.yaml.example3
-rw-r--r--config/test.yaml3
-rw-r--r--server/controllers/api/config.js22
-rw-r--r--server/controllers/api/index.js2
-rw-r--r--server/initializers/checker.js2
-rw-r--r--server/initializers/constants.js3
-rw-r--r--server/tests/api/config.js53
-rw-r--r--server/tests/api/index.js1
-rw-r--r--server/tests/utils/config.js24
10 files changed, 115 insertions, 1 deletions
diff --git a/config/default.yaml b/config/default.yaml
index 172bbef1e..a5ac15794 100644
--- a/config/default.yaml
+++ b/config/default.yaml
@@ -25,3 +25,6 @@ storage:
25 25
26admin: 26admin:
27 email: 'admin@example.com' 27 email: 'admin@example.com'
28
29signup:
30 enabled: false
diff --git a/config/production.yaml.example b/config/production.yaml.example
index cbfb0f46c..8e9d4b32d 100644
--- a/config/production.yaml.example
+++ b/config/production.yaml.example
@@ -26,3 +26,6 @@ storage:
26 26
27admin: 27admin:
28 email: 'admin@example.com' 28 email: 'admin@example.com'
29
30signup:
31 enabled: false
diff --git a/config/test.yaml b/config/test.yaml
index 493a23076..1a08d5ed1 100644
--- a/config/test.yaml
+++ b/config/test.yaml
@@ -7,3 +7,6 @@ webserver:
7database: 7database:
8 hostname: 'localhost' 8 hostname: 'localhost'
9 port: 5432 9 port: 5432
10
11signup:
12 enabled: true
diff --git a/server/controllers/api/config.js b/server/controllers/api/config.js
new file mode 100644
index 000000000..8154b6ad0
--- /dev/null
+++ b/server/controllers/api/config.js
@@ -0,0 +1,22 @@
1'use strict'
2
3const express = require('express')
4
5const constants = require('../../initializers/constants')
6
7const router = express.Router()
8
9router.get('/', getConfig)
10
11// Get the client credentials for the PeerTube front end
12function getConfig (req, res, next) {
13 res.json({
14 signup: {
15 enabled: constants.CONFIG.SIGNUP.ENABLED
16 }
17 })
18}
19
20// ---------------------------------------------------------------------------
21
22module.exports = router
diff --git a/server/controllers/api/index.js b/server/controllers/api/index.js
index f13ff922c..6edc089f4 100644
--- a/server/controllers/api/index.js
+++ b/server/controllers/api/index.js
@@ -7,6 +7,7 @@ const utils = require('../../helpers/utils')
7const router = express.Router() 7const router = express.Router()
8 8
9const clientsController = require('./clients') 9const clientsController = require('./clients')
10const configController = require('./config')
10const podsController = require('./pods') 11const podsController = require('./pods')
11const remoteController = require('./remote') 12const remoteController = require('./remote')
12const requestsController = require('./requests') 13const requestsController = require('./requests')
@@ -14,6 +15,7 @@ const usersController = require('./users')
14const videosController = require('./videos') 15const videosController = require('./videos')
15 16
16router.use('/clients', clientsController) 17router.use('/clients', clientsController)
18router.use('/config', configController)
17router.use('/pods', podsController) 19router.use('/pods', podsController)
18router.use('/remote', remoteController) 20router.use('/remote', remoteController)
19router.use('/requests', requestsController) 21router.use('/requests', requestsController)
diff --git a/server/initializers/checker.js b/server/initializers/checker.js
index 7adbbb37a..461a851fe 100644
--- a/server/initializers/checker.js
+++ b/server/initializers/checker.js
@@ -29,7 +29,7 @@ function checkMissedConfig () {
29 'webserver.https', 'webserver.hostname', 'webserver.port', 29 'webserver.https', 'webserver.hostname', 'webserver.port',
30 'database.hostname', 'database.port', 'database.suffix', 'database.username', 'database.password', 30 'database.hostname', 'database.port', 'database.suffix', 'database.username', 'database.password',
31 'storage.certs', 'storage.videos', 'storage.logs', 'storage.thumbnails', 'storage.previews', 31 'storage.certs', 'storage.videos', 'storage.logs', 'storage.thumbnails', 'storage.previews',
32 'admin.email' 32 'admin.email', 'signup.enabled'
33 ] 33 ]
34 const miss = [] 34 const miss = []
35 35
diff --git a/server/initializers/constants.js b/server/initializers/constants.js
index f9247e945..96321b211 100644
--- a/server/initializers/constants.js
+++ b/server/initializers/constants.js
@@ -61,6 +61,9 @@ const CONFIG = {
61 }, 61 },
62 ADMIN: { 62 ADMIN: {
63 EMAIL: config.get('admin.email') 63 EMAIL: config.get('admin.email')
64 },
65 SIGNUP: {
66 ENABLED: config.get('signup.enabled')
64 } 67 }
65} 68}
66CONFIG.WEBSERVER.URL = CONFIG.WEBSERVER.SCHEME + '://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT 69CONFIG.WEBSERVER.URL = CONFIG.WEBSERVER.SCHEME + '://' + CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT
diff --git a/server/tests/api/config.js b/server/tests/api/config.js
new file mode 100644
index 000000000..08f955f2d
--- /dev/null
+++ b/server/tests/api/config.js
@@ -0,0 +1,53 @@
1/* eslint-disable no-unused-expressions */
2
3'use strict'
4
5const chai = require('chai')
6const expect = chai.expect
7const series = require('async/series')
8
9const serversUtils = require('../utils/servers')
10const configUtils = require('../utils/config')
11
12describe('Test config', function () {
13 let server = null
14
15 before(function (done) {
16 this.timeout(20000)
17
18 series([
19 function (next) {
20 serversUtils.flushTests(next)
21 },
22 function (next) {
23 serversUtils.runServer(1, function (server1) {
24 server = server1
25 next()
26 })
27 }
28 ], done)
29 })
30
31 it('Should have a correct config', function (done) {
32 configUtils.getConfig(server.url, function (err, res) {
33 if (err) throw err
34
35 const data = res.body
36
37 expect(data.signup.enabled).to.be.truthy
38
39 done()
40 })
41 })
42
43 after(function (done) {
44 process.kill(-server.app.pid)
45
46 // Keep the logs if the test failed
47 if (this.ok) {
48 serversUtils.flushTests(done)
49 } else {
50 done()
51 }
52 })
53})
diff --git a/server/tests/api/index.js b/server/tests/api/index.js
index 11f49e1e2..dc6ef92ab 100644
--- a/server/tests/api/index.js
+++ b/server/tests/api/index.js
@@ -1,6 +1,7 @@
1'use strict' 1'use strict'
2 2
3// Order of the tests we want to execute 3// Order of the tests we want to execute
4require('./config')
4require('./check-params') 5require('./check-params')
5require('./friends-basic') 6require('./friends-basic')
6require('./users') 7require('./users')
diff --git a/server/tests/utils/config.js b/server/tests/utils/config.js
new file mode 100644
index 000000000..0a507a60f
--- /dev/null
+++ b/server/tests/utils/config.js
@@ -0,0 +1,24 @@
1'use strict'
2
3const request = require('supertest')
4
5const configsUtils = {
6 getConfig
7}
8
9// ---------------------- Export functions --------------------
10
11function getConfig (url, end) {
12 const path = '/api/v1/config'
13
14 request(url)
15 .get(path)
16 .set('Accept', 'application/json')
17 .expect(200)
18 .expect('Content-Type', /json/)
19 .end(end)
20}
21
22// ---------------------------------------------------------------------------
23
24module.exports = configsUtils