diff --git a/spec/PushController.spec.js b/spec/PushController.spec.js index 344ffcfd85..e40195daf2 100644 --- a/spec/PushController.spec.js +++ b/spec/PushController.spec.js @@ -397,6 +397,47 @@ describe('PushController', () => { }); }); + it_exclude_dbs(['postgres'])('should support object type for alert', (done) => { + var payload = {data: { + alert: { + 'loc-key': 'hello_world', + }, + }} + + var pushAdapter = { + send: function(body, installations) { + return successfulTransmissions(body, installations); + }, + getValidPushTypes: function() { + return ["ios"]; + } + } + + var config = new Config(Parse.applicationId); + var auth = { + isMaster: true + } + + let where = { + 'deviceToken': { + '$inQuery': { + 'where': { + 'deviceType': 'ios' + }, + className: '_Installation' + } + } + } + + var pushController = new PushController(pushAdapter, Parse.applicationId, defaultConfiguration.push); + pushController.sendPush(payload, where, config, auth).then((result) => { + done(); + }).catch((err) => { + fail('should not fail'); + done(); + }); + }); + it('should flatten', () => { var res = pushStatusHandler.flatten([1, [2], [[3, 4], 5], [[[6]]]]) expect(res).toEqual([1,2,3,4,5,6]); diff --git a/src/pushStatusHandler.js b/src/pushStatusHandler.js index f75660879a..f8c95d635a 100644 --- a/src/pushStatusHandler.js +++ b/src/pushStatusHandler.js @@ -25,6 +25,14 @@ export default function pushStatusHandler(config) { let now = new Date(); let data = body.data || {}; let payloadString = JSON.stringify(data); + let pushHash; + if (typeof data.alert === 'string') { + pushHash = md5Hash(data.alert); + } else if (typeof data.alert === 'object') { + pushHash = md5Hash(JSON.stringify(data.alert)); + } else { + pushHash = 'd41d8cd98f00b204e9800998ecf8427e'; + } let object = { objectId, createdAt: now, @@ -36,7 +44,7 @@ export default function pushStatusHandler(config) { expiry: body.expiration_time, status: "pending", numSent: 0, - pushHash: md5Hash(data.alert || ''), + pushHash, // lockdown! ACL: {} }