From fb4a2524b117ef993d50f372276a230494f91b66 Mon Sep 17 00:00:00 2001 From: Nikita Lutsenko Date: Tue, 1 Mar 2016 16:03:37 -0800 Subject: [PATCH] Cleanup and use masterkey middleware in FeaturesRouter. --- spec/features.spec.js | 20 +++++++++++++++++++- src/Routers/FeaturesRouter.js | 29 +++++------------------------ 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/spec/features.spec.js b/spec/features.spec.js index b0a27459..3ddd7a60 100644 --- a/spec/features.spec.js +++ b/spec/features.spec.js @@ -1,4 +1,7 @@ -var features = require('../src/features') +'use strict'; + +var features = require('../src/features'); +const request = require("request"); describe('features', () => { it('set and get features', (done) => { @@ -23,4 +26,19 @@ describe('features', () => { expect(_features.test).toBeUndefined(); done(); }); + + it('requires the master key to get all schemas', done => { + request.get({ + url: 'http://localhost:8378/1/features', + json: true, + headers: { + 'X-Parse-Application-Id': 'test', + 'X-Parse-REST-API-Key': 'rest' + } + }, (error, response, body) => { + expect(response.statusCode).toEqual(403); + expect(body.error).toEqual('unauthorized: master key is required'); + done(); + }); + }); }); diff --git a/src/Routers/FeaturesRouter.js b/src/Routers/FeaturesRouter.js index 65ca1b71..05ccad5b 100644 --- a/src/Routers/FeaturesRouter.js +++ b/src/Routers/FeaturesRouter.js @@ -1,32 +1,13 @@ import PromiseRouter from '../PromiseRouter'; -import {getFeatures} from '../features'; - -let masterKeyRequiredResponse = () => { - return Promise.resolve({ - status: 401, - response: {error: 'master key not specified'}, - }) -} +import * as middleware from "../middlewares"; +import { getFeatures } from '../features'; export class FeaturesRouter extends PromiseRouter { - mountRoutes() { - this.route('GET','/features', (req) => { - return this.handleGET(req); - }); - } - - handleGET(req) { - if (!req.auth.isMaster) { - return masterKeyRequiredResponse(); - } - - return Promise.resolve({ - response: { + this.route('GET','/features', middleware.promiseEnforceMasterKeyAccess, () => { + return { response: { results: [getFeatures()] - } + } }; }); } } - -export default FeaturesRouter;