Skip to content

Commit fb4a252

Browse files
committed
Cleanup and use masterkey middleware in FeaturesRouter.
1 parent e58c935 commit fb4a252

File tree

2 files changed

+24
-25
lines changed

2 files changed

+24
-25
lines changed

spec/features.spec.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
var features = require('../src/features')
1+
'use strict';
2+
3+
var features = require('../src/features');
4+
const request = require("request");
25

36
describe('features', () => {
47
it('set and get features', (done) => {
@@ -23,4 +26,19 @@ describe('features', () => {
2326
expect(_features.test).toBeUndefined();
2427
done();
2528
});
29+
30+
it('requires the master key to get all schemas', done => {
31+
request.get({
32+
url: 'http://localhost:8378/1/features',
33+
json: true,
34+
headers: {
35+
'X-Parse-Application-Id': 'test',
36+
'X-Parse-REST-API-Key': 'rest'
37+
}
38+
}, (error, response, body) => {
39+
expect(response.statusCode).toEqual(403);
40+
expect(body.error).toEqual('unauthorized: master key is required');
41+
done();
42+
});
43+
});
2644
});

src/Routers/FeaturesRouter.js

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,13 @@
11
import PromiseRouter from '../PromiseRouter';
2-
import {getFeatures} from '../features';
3-
4-
let masterKeyRequiredResponse = () => {
5-
return Promise.resolve({
6-
status: 401,
7-
response: {error: 'master key not specified'},
8-
})
9-
}
2+
import * as middleware from "../middlewares";
3+
import { getFeatures } from '../features';
104

115
export class FeaturesRouter extends PromiseRouter {
12-
136
mountRoutes() {
14-
this.route('GET','/features', (req) => {
15-
return this.handleGET(req);
16-
});
17-
}
18-
19-
handleGET(req) {
20-
if (!req.auth.isMaster) {
21-
return masterKeyRequiredResponse();
22-
}
23-
24-
return Promise.resolve({
25-
response: {
7+
this.route('GET','/features', middleware.promiseEnforceMasterKeyAccess, () => {
8+
return { response: {
269
results: [getFeatures()]
27-
}
10+
} };
2811
});
2912
}
3013
}
31-
32-
export default FeaturesRouter;

0 commit comments

Comments
 (0)