Touch up features endpoint

This commit is contained in:
Drew Gross
2016-03-01 15:35:48 -08:00
parent 1bfee45f64
commit 5219e0b1d8
3 changed files with 23 additions and 41 deletions

View File

@@ -5,7 +5,7 @@ const request = require("request");
describe('features', () => { describe('features', () => {
it('set and get features', (done) => { it('set and get features', (done) => {
features.setFeature('users', { features.setFeature('push', {
testOption1: true, testOption1: true,
testOption2: false testOption2: false
}); });
@@ -14,10 +14,10 @@ describe('features', () => {
var expected = { var expected = {
testOption1: true, testOption1: true,
testOption2: false testOption2: false
}; };
expect(_features.users).toEqual(expected); expect(_features.push).toEqual(expected);
done(); done();
}); });

View File

@@ -1,13 +1,11 @@
import PromiseRouter from '../PromiseRouter'; import PromiseRouter from '../PromiseRouter';
import * as middleware from "../middlewares"; import * as middleware from "../middlewares";
import { getFeatures } from '../features'; import { getFeatures } from '../features';
export class FeaturesRouter extends PromiseRouter { export class FeaturesRouter extends PromiseRouter {
mountRoutes() { mountRoutes() {
this.route('GET','/features', middleware.promiseEnforceMasterKeyAccess, () => { this.route('GET','/features', middleware.promiseEnforceMasterKeyAccess, () => {
return { response: { return { response: getFeatures() };
results: [getFeatures()]
} };
}); });
} }
} }

View File

@@ -14,26 +14,18 @@
* Features that use Adapters should specify the feature options through * Features that use Adapters should specify the feature options through
* the setFeature method in your controller and feature * the setFeature method in your controller and feature
* Reference PushController and ParsePushAdapter as an example. * Reference PushController and ParsePushAdapter as an example.
* *
* NOTE: When adding new endpoints be sure to update this list both (features, featureSwitch) * NOTE: When adding new endpoints be sure to update this list both (features, featureSwitch)
* if you are planning to have a UI consume it. * if you are planning to have a UI consume it.
*/ */
// default features // default features
let features = { let features = {
analytics: {
slowQueries: false,
performanceAnalysis: false,
retentionAnalysis: false,
},
classes: {},
files: {},
functions: {},
globalConfig: { globalConfig: {
create: true, create: false,
read: true, read: false,
update: true, update: false,
delete: true, delete: false,
}, },
hooks: { hooks: {
create: false, create: false,
@@ -41,15 +33,19 @@ let features = {
update: false, update: false,
delete: false, delete: false,
}, },
iapValidation: {},
installations: {},
logs: { logs: {
info: true, level: false,
error: true, size: false,
order: false,
until: false,
from: false,
},
push: {
immediatePush: false,
scheduledPush: false,
storedPushData: false,
pushAudiences: false,
}, },
publicAPI: {},
push: {},
roles: {},
schemas: { schemas: {
addField: true, addField: true,
removeField: true, removeField: true,
@@ -58,27 +54,15 @@ let features = {
clearAllDataFromClass: false, clearAllDataFromClass: false,
exportClass: false, exportClass: false,
}, },
sessions: {},
users: {},
}; };
// master switch for features // master switch for features
let featuresSwitch = { let featuresSwitch = {
analytics: true,
classes: true,
files: true,
functions: true,
globalConfig: true, globalConfig: true,
hooks: true, hooks: true,
iapValidation: true,
installations: true,
logs: true, logs: true,
publicAPI: true,
push: true, push: true,
roles: true,
schemas: true, schemas: true,
sessions: true,
users: true,
}; };
/** /**
@@ -94,7 +78,7 @@ function setFeature(key, value) {
function getFeatures() { function getFeatures() {
let result = {}; let result = {};
Object.keys(features).forEach((key) => { Object.keys(features).forEach((key) => {
if (featuresSwitch[key]) { if (featuresSwitch[key] && features[key]) {
result[key] = features[key]; result[key] = features[key];
} }
}); });