Refactors configuration management (#4271)

* Adds flow types / Configuration interfaces

* Lets call it options

* Use a single interface to generate the configurations

* Translates options to definitions only if comments are set

* improves logic

* Moves objects around

* Fixes issue affecting logging of circular objects

* fixes undefined env

* Moves all defaults to defaults

* Adds back CLI defaults

* Restored defaults in commander.js

* Merge provided defaults and platform defaults

* Addresses visual nits

* Improves Config.js code

* Adds ability to pass the default value in trailing comments

* Load platform defaults from the definitions file

* proper default values on various options

* Adds ParseServer.start and server.start(options) as quick startup methods

* Moves creating liveQueryServer http into ParseServer.js

* removes dead code

* Adds tests to guarantee we can start a LQ Server from main module

* Fixes incorrect code regading liveQuery init port

* Start a http server for LQ if port is specified

* ensure we dont fail if config.port is not set

* Specify port

* ignore other path skipped in tests

* Adds test for custom middleware setting

* Refactors new Config into Config.get

- Hides AppCache from ParseServer.js, use Config.put which validates

* Extracts controller creation into Controllers/index.js

- This makes the ParseServer init way simpler

* Move serverURL inference into ParseServer

* review nits
This commit is contained in:
Florent Vilmart
2017-10-23 08:43:05 -04:00
committed by GitHub
parent d29a4483d0
commit 9de4b8b2a7
55 changed files with 1462 additions and 874 deletions

View File

@@ -5,7 +5,7 @@ var AudiencesRouter = require('../src/Routers/AudiencesRouter').AudiencesRouter;
describe('AudiencesRouter', () => {
it('uses find condition from request.body', (done) => {
var config = new Config('test');
var config = Config.get('test');
var androidAudienceRequest = {
'name': 'Android Users',
'query': '{ "test": "android" }'
@@ -46,7 +46,7 @@ describe('AudiencesRouter', () => {
});
it('uses find condition from request.query', (done) => {
var config = new Config('test');
var config = Config.get('test');
var androidAudienceRequest = {
'name': 'Android Users',
'query': '{ "test": "android" }'
@@ -87,7 +87,7 @@ describe('AudiencesRouter', () => {
});
it('query installations with limit = 0', (done) => {
var config = new Config('test');
var config = Config.get('test');
var androidAudienceRequest = {
'name': 'Android Users',
'query': '{ "test": "android" }'
@@ -106,7 +106,7 @@ describe('AudiencesRouter', () => {
info: {}
};
new Config('test');
Config.get('test');
var router = new AudiencesRouter();
rest.create(config, auth.nobody(config), '_Audience', androidAudienceRequest)
.then(() => {
@@ -127,7 +127,7 @@ describe('AudiencesRouter', () => {
});
it('query installations with count = 1', done => {
var config = new Config('test');
var config = Config.get('test');
var androidAudienceRequest = {
'name': 'Android Users',
'query': '{ "test": "android" }'
@@ -163,7 +163,7 @@ describe('AudiencesRouter', () => {
});
it('query installations with limit = 0 and count = 1', (done) => {
var config = new Config('test');
var config = Config.get('test');
var androidAudienceRequest = {
'name': 'Android Users',
'query': '{ "test": "android" }'
@@ -286,7 +286,7 @@ describe('AudiencesRouter', () => {
});
it_exclude_dbs(['postgres'])('should support legacy parse.com audience fields', (done) => {
const database = (new Config(Parse.applicationId)).database.adapter.database;
const database = (Config.get(Parse.applicationId)).database.adapter.database;
const now = new Date();
Parse._request('POST', 'push_audiences', { name: 'My Audience', query: JSON.stringify({ deviceType: 'ios' })}, { useMasterKey: true })
.then((audience) => {