Cleanup and use masterkey middleware in FeaturesRouter.

This commit is contained in:
Nikita Lutsenko
2016-03-01 16:03:37 -08:00
parent e58c935f22
commit fb4a2524b1
2 changed files with 24 additions and 25 deletions

View File

@@ -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();
});
});
});

View File

@@ -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;