Skip to content

Commit 4b0f84e

Browse files
committed
Migrate PushRouter to shared master-key middleware.
1 parent bb58d69 commit 4b0f84e

File tree

2 files changed

+18
-68
lines changed

2 files changed

+18
-68
lines changed

Diff for: spec/PushRouter.spec.js

-34
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,6 @@ var PushRouter = require('../src/Routers/PushRouter').PushRouter;
22
var request = require('request');
33

44
describe('PushRouter', () => {
5-
it('can check valid master key of request', (done) => {
6-
// Make mock request
7-
var request = {
8-
info: {
9-
masterKey: 'masterKey'
10-
},
11-
config: {
12-
masterKey: 'masterKey'
13-
}
14-
}
15-
16-
expect(() => {
17-
PushRouter.validateMasterKey(request);
18-
}).not.toThrow();
19-
done();
20-
});
21-
22-
it('can check invalid master key of request', (done) => {
23-
// Make mock request
24-
var request = {
25-
info: {
26-
masterKey: 'masterKey'
27-
},
28-
config: {
29-
masterKey: 'masterKeyAgain'
30-
}
31-
}
32-
33-
expect(() => {
34-
PushRouter.validateMasterKey(request);
35-
}).toThrow();
36-
done();
37-
});
38-
395
it('can get query condition when channels is set', (done) => {
406
// Make mock request
417
var request = {

Diff for: src/Routers/PushRouter.js

+18-34
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,42 @@
1-
import PushController from '../Controllers/PushController'
21
import PromiseRouter from '../PromiseRouter';
2+
import * as middleware from "../middlewares";
3+
import { Parse } from "parse/node";
34

45
export class PushRouter extends PromiseRouter {
56

67
mountRoutes() {
7-
this.route("POST", "/push", req => { return this.handlePOST(req); });
8-
}
9-
10-
/**
11-
* Check whether the api call has master key or not.
12-
* @param {Object} request A request object
13-
*/
14-
static validateMasterKey(req) {
15-
if (req.info.masterKey !== req.config.masterKey) {
16-
throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED,
17-
'Master key is invalid, you should only use master key to send push');
18-
}
8+
this.route("POST", "/push", middleware.promiseEnforceMasterKeyAccess, PushRouter.handlePOST);
199
}
2010

21-
handlePOST(req) {
22-
// TODO: move to middlewares when support for Promise middlewares
23-
PushRouter.validateMasterKey(req);
24-
11+
static handlePOST(req) {
2512
const pushController = req.config.pushController;
2613
if (!pushController) {
27-
throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED,
28-
'Push controller is not set');
14+
throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED, 'Push controller is not set');
2915
}
3016

31-
var where = PushRouter.getQueryCondition(req);
32-
17+
let where = PushRouter.getQueryCondition(req);
3318
pushController.sendPush(req.body, where, req.config, req.auth);
3419
return Promise.resolve({
35-
response: {
36-
'result': true
37-
}
20+
response: {
21+
'result': true
22+
}
3823
});
3924
}
40-
41-
/**
25+
26+
/**
4227
* Get query condition from the request body.
43-
* @param {Object} request A request object
28+
* @param {Object} req A request object
4429
* @returns {Object} The query condition, the where field in a query api call
4530
*/
4631
static getQueryCondition(req) {
47-
var body = req.body || {};
48-
var hasWhere = typeof body.where !== 'undefined';
49-
var hasChannels = typeof body.channels !== 'undefined';
32+
let body = req.body || {};
33+
let hasWhere = typeof body.where !== 'undefined';
34+
let hasChannels = typeof body.channels !== 'undefined';
5035

51-
var where;
36+
let where;
5237
if (hasWhere && hasChannels) {
5338
throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED,
54-
'Channels and query can not be set at the same time.');
39+
'Channels and query can not be set at the same time.');
5540
} else if (hasWhere) {
5641
where = body.where;
5742
} else if (hasChannels) {
@@ -62,11 +47,10 @@ export class PushRouter extends PromiseRouter {
6247
}
6348
} else {
6449
throw new Parse.Error(Parse.Error.PUSH_MISCONFIGURED,
65-
'Channels and query should be set at least one.');
50+
'Channels and query should be set at least one.');
6651
}
6752
return where;
6853
}
69-
7054
}
7155

7256
export default PushRouter;

0 commit comments

Comments
 (0)