From fca23a73c11fafd165de2b30814ab774d63059b8 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Sun, 26 Feb 2017 20:59:32 +0100 Subject: [PATCH 01/19] add macos and tvos types --- src/APNS.js | 4 ++-- src/ParsePushAdapter.js | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/APNS.js b/src/APNS.js index fee8b237..3becbbff 100644 --- a/src/APNS.js +++ b/src/APNS.js @@ -74,7 +74,7 @@ function APNS(args) { notification: notification, transmitted: true, device: { - deviceType: 'ios', + deviceType: device.deviceType, // TODO check deviceToken: device.token.toString('hex') } }); @@ -115,7 +115,7 @@ APNS.prototype.send = function(data, devices) { transmitted: false, device: { deviceToken: device.deviceToken, - deviceType: 'ios' + deviceType: device.deviceType }, result: {error: 'No connection available'} }); diff --git a/src/ParsePushAdapter.js b/src/ParsePushAdapter.js index 0b30a16c..cf999798 100644 --- a/src/ParsePushAdapter.js +++ b/src/ParsePushAdapter.js @@ -12,7 +12,7 @@ export class ParsePushAdapter { supportsPushTracking = true; constructor(pushConfig = {}) { - this.validPushTypes = ['ios', 'android', 'fcm']; + this.validPushTypes = ['ios', 'osx', 'tvos', 'android', 'fcm']; this.senderMap = {}; // used in PushController for Dashboard Features this.feature = { @@ -27,6 +27,8 @@ export class ParsePushAdapter { } switch (pushType) { case 'ios': + case 'tvos': + case 'osx': this.senderMap[pushType] = new APNS(pushConfig[pushType]); break; case 'android': From 6d8e1f71356527b5b71d096cf9af50f3676947fb Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Sun, 26 Feb 2017 21:16:14 +0100 Subject: [PATCH 02/19] return device type --- src/APNS.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/APNS.js b/src/APNS.js index 3becbbff..1ac0cdf1 100644 --- a/src/APNS.js +++ b/src/APNS.js @@ -177,7 +177,7 @@ function handleTransmissionError(conns, errCode, notification, apnDevice) { status: errCode, transmitted: false, device: { - deviceType: 'ios', + deviceType: apnDevice.deviceType, deviceToken: apnDevice.token.toString('hex') } }); From 077d5d99ff7f8f91afa59a479f38cf87a4f6719a Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Sun, 26 Feb 2017 21:28:54 +0100 Subject: [PATCH 03/19] reuse ios configuration for tvos pushes --- src/ParsePushAdapter.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/ParsePushAdapter.js b/src/ParsePushAdapter.js index cf999798..d2a2252a 100644 --- a/src/ParsePushAdapter.js +++ b/src/ParsePushAdapter.js @@ -51,8 +51,19 @@ export class ParsePushAdapter { let deviceMap = classifyInstallations(installations, this.validPushTypes); let sendPromises = []; for (let pushType in deviceMap) { - let sender = this.senderMap[pushType]; + var sender = this.senderMap[pushType]; let devices = deviceMap[pushType]; + + if (!sender) { + if (pushType == 'tvos') { + // if there is only an ios push configuration available reuse it for tvos + sender = this.senderMap['ios']; + } else if (pushType == 'ios') { + // if there is only a tvos push configuration available reuse it for ios + sender = this.senderMap['tvos']; + } + } + if(Array.isArray(devices) && devices.length > 0) { if (!sender) { From 98149176f4a8bb30edbd535079f4b0a8bf840cbd Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Sun, 26 Feb 2017 21:34:30 +0100 Subject: [PATCH 04/19] add osx and tvos to some of the specs --- spec/ParsePushAdapter.spec.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index 69712ef4..e6a2dca5 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -54,13 +54,13 @@ describe('ParsePushAdapter', () => { it('can get valid push types', (done) => { var parsePushAdapter = new ParsePushAdapter(); - expect(parsePushAdapter.getValidPushTypes()).toEqual(['ios', 'android', 'fcm']); + expect(parsePushAdapter.getValidPushTypes()).toEqual(['ios', 'osx', 'tvos', 'android', 'fcm']); done(); }); it('can classify installation', (done) => { // Mock installations - var validPushTypes = ['ios', 'android', 'fcm']; + var validPushTypes = ['ios', 'osx', 'tvos', 'android', 'fcm']; var installations = [ { deviceType: 'android', @@ -70,6 +70,14 @@ describe('ParsePushAdapter', () => { deviceType: 'ios', deviceToken: 'iosToken' }, + { + deviceType: 'tvos', + deviceToken: 'tvosToken' + }, + { + deviceType: 'osx', + deviceToken: 'osxToken' + }, { deviceType: 'win', deviceToken: 'winToken' @@ -83,6 +91,8 @@ describe('ParsePushAdapter', () => { var deviceMap = ParsePushAdapter.classifyInstallations(installations, validPushTypes); expect(deviceMap['android']).toEqual([makeDevice('androidToken', 'android')]); expect(deviceMap['ios']).toEqual([makeDevice('iosToken', 'ios')]); + expect(deviceMap['osx']).toEqual([makeDevice('osxToken', 'osx')]); + expect(deviceMap['tvos']).toEqual([makeDevice('tvosToken', 'tvos')]); expect(deviceMap['win']).toBe(undefined); done(); }); From 7136707b158aded7b1d1ac19f4d7ab9e566482f4 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 09:09:31 +0100 Subject: [PATCH 05/19] add more specs --- spec/ParsePushAdapter.spec.js | 48 +++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index e6a2dca5..cf4e012a 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -100,14 +100,18 @@ describe('ParsePushAdapter', () => { it('can send push notifications', (done) => { var parsePushAdapter = new ParsePushAdapter(); - // Mock android ios senders + // Mock senders var androidSender = { send: jasmine.createSpy('send') }; var iosSender = { send: jasmine.createSpy('send') }; + var osxSender = { + send: jasmine.createSpy('send') + } var senderMap = { + osx: osxSender, ios: iosSender, android: androidSender }; @@ -122,6 +126,14 @@ describe('ParsePushAdapter', () => { deviceType: 'ios', deviceToken: 'iosToken' }, + { + deviceType: 'tvos', + deviceToken: 'tvosToken' + }, + { + deviceType: 'osx', + deviceToken: 'osxToken' + }, { deviceType: 'win', deviceToken: 'winToken' @@ -146,14 +158,22 @@ describe('ParsePushAdapter', () => { args = iosSender.send.calls.first().args; expect(args[0]).toEqual(data); expect(args[1]).toEqual([ - makeDevice('iosToken', 'ios') + makeDevice('iosToken', 'ios'), + makeDevice('tvosToken', 'tvos') + ]); + // Check osx sender + expect(osxSender.send).toHaveBeenCalled(); + args = osxSender.send.calls.first().args; + expect(args[0]).toEqual(data); + expect(args[1]).toEqual([ + makeDevice('osxToken', 'osx') ]); done(); }); it('can send push notifications by pushType and failback by deviceType', (done) => { var parsePushAdapter = new ParsePushAdapter(); - // Mock android ios senders + // Mock senders var androidSender = { send: jasmine.createSpy('send') }; @@ -245,6 +265,14 @@ describe('ParsePushAdapter', () => { production: false, bundleId: 'bundleId' } + ], + osx: [ + { + cert: 'cert.cer', + key: 'key.pem', + production: false, + bundleId: 'bundleId' + } ] }; var installations = [ @@ -262,6 +290,16 @@ describe('ParsePushAdapter', () => { deviceToken: 'c5ee8fae0a1c5805e731cf15496d5b2b3f9b9c577353d3239429d3faaee01c79', appIdentifier: 'anotherBundle' }, + { + deviceType: 'osx', + deviceToken: 'c5ee8fae0a1c5805e731cf15496d5b2b3f9b9c577353d3239429d3faaee01c79', + appIdentifier: 'anotherBundle' + }, + { + deviceType: 'tvos', + deviceToken: 'c5ee8fae0a1c5805e731cf15496d5b2b3f9b9c577353d3239429d3faaee01c79', + appIdentifier: 'anotherBundle' + }, { deviceType: 'win', deviceToken: 'winToken' @@ -276,8 +314,8 @@ describe('ParsePushAdapter', () => { parsePushAdapter.send({data: {alert: 'some'}}, installations).then((results) => { expect(Array.isArray(results)).toBe(true); - // 2x iOS, 1x android - expect(results.length).toBe(3); + // 2x iOS, 1x android, 1x osx, 1x tvos + expect(results.length).toBe(5); results.forEach((result) => { expect(result.transmitted).toBe(false); expect(typeof result.device).toBe('object'); From 027ca49d1af97ed968bfef6d7b49b9a2061ae6bd Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 09:19:07 +0100 Subject: [PATCH 06/19] fix spec --- spec/ParsePushAdapter.spec.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index cf4e012a..42340eaf 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -159,8 +159,14 @@ describe('ParsePushAdapter', () => { expect(args[0]).toEqual(data); expect(args[1]).toEqual([ makeDevice('iosToken', 'ios'), - makeDevice('tvosToken', 'tvos') ]); + // ios sender should be reused for tvos as no tvos sender is present + args = iosSender.send.calls[1].args; + expect(args[0]).toEqual(data); + expect(args[1]).toEqual([ + makeDevice('tvosToken', 'tvos'), + ]); + // Check osx sender expect(osxSender.send).toHaveBeenCalled(); args = osxSender.send.calls.first().args; From a0cca1481cc119e42b3c4a37d4e6a356f6193d16 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 09:25:21 +0100 Subject: [PATCH 07/19] test for tvos and ios sender reuse in separate test cases --- spec/ParsePushAdapter.spec.js | 94 +++++++++++++++++++++++++++++++---- 1 file changed, 84 insertions(+), 10 deletions(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index 42340eaf..0bb01ba0 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -126,10 +126,6 @@ describe('ParsePushAdapter', () => { deviceType: 'ios', deviceToken: 'iosToken' }, - { - deviceType: 'tvos', - deviceToken: 'tvosToken' - }, { deviceType: 'osx', deviceToken: 'osxToken' @@ -160,19 +156,97 @@ describe('ParsePushAdapter', () => { expect(args[1]).toEqual([ makeDevice('iosToken', 'ios'), ]); - // ios sender should be reused for tvos as no tvos sender is present - args = iosSender.send.calls[1].args; + // Check osx sender + expect(osxSender.send).toHaveBeenCalled(); + args = osxSender.send.calls.first().args; + expect(args[0]).toEqual(data); + expect(args[1]).toEqual([ + makeDevice('osxToken', 'osx') + ]); + done(); + }); + + it('does use ios and tvos senders if both are configured', (done) => { + var parsePushAdapter = new ParsePushAdapter(); + // Mock senders + var iosSender = { + send: jasmine.createSpy('send') + }; + var tvosSender = { + send: jasmine.createSpy('send') + }; + var senderMap = { + ios: iosSender, + tvos: tvosSender + }; + parsePushAdapter.senderMap = senderMap; + // Mock installations + var installations = [ + { + deviceType: 'ios', + deviceToken: 'iosToken' + }, + { + deviceType: 'tvos', + deviceToken: 'tvosToken' + } + ]; + var data = {}; + + parsePushAdapter.send(data, installations); + // Check ios sender + expect(iosSender.send).toHaveBeenCalled(); + args = iosSender.send.calls.first().args; + expect(args[0]).toEqual(data); + expect(args[1]).toEqual([ + makeDevice('iosToken', 'ios'), + ]); + // Check ios sender + expect(tvosSender.send).toHaveBeenCalled(); + args = tvosSender.send.calls.first().args; expect(args[0]).toEqual(data); expect(args[1]).toEqual([ makeDevice('tvosToken', 'tvos'), ]); + done(); + }); - // Check osx sender - expect(osxSender.send).toHaveBeenCalled(); - args = osxSender.send.calls.first().args; + it('does use ios sender for tvos of no tvos sender is configured', (done) => { + var parsePushAdapter = new ParsePushAdapter(); + // Mock senders + var iosSender = { + send: jasmine.createSpy('send') + }; + var senderMap = { + ios: iosSender, + }; + parsePushAdapter.senderMap = senderMap; + // Mock installations + var installations = [ + { + deviceType: 'ios', + deviceToken: 'iosToken' + }, + { + deviceType: 'tvos', + deviceToken: 'tvosToken' + } + ]; + var data = {}; + + parsePushAdapter.send(data, installations); + + expect(iosSender.send).toHaveBeenCalled(); + args = iosSender.send.calls.first().args; expect(args[0]).toEqual(data); expect(args[1]).toEqual([ - makeDevice('osxToken', 'osx') + makeDevice('iosToken', 'ios'), + ]); + // ios sender should be reused for tvos as no tvos sender is present + args = iosSender.send.calls[1].args; + expect(args[0]).toEqual(data); + expect(args[1]).toEqual([ + makeDevice('tvosToken', 'tvos'), ]); done(); }); From 84b8a68ba7381a5c3f4dc6f8bc836e1e1d02cd25 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 09:35:04 +0100 Subject: [PATCH 08/19] fix typo --- spec/ParsePushAdapter.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index 0bb01ba0..f3b08934 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -211,7 +211,7 @@ describe('ParsePushAdapter', () => { done(); }); - it('does use ios sender for tvos of no tvos sender is configured', (done) => { + it('does use ios sender for tvos if no tvos sender is configured', (done) => { var parsePushAdapter = new ParsePushAdapter(); // Mock senders var iosSender = { From b8562ff33b67f0b17d59ac990d153fbf42461215 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 09:35:19 +0100 Subject: [PATCH 09/19] fix spec --- spec/ParsePushAdapter.spec.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index f3b08934..848e2e45 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -195,14 +195,14 @@ describe('ParsePushAdapter', () => { parsePushAdapter.send(data, installations); // Check ios sender - expect(iosSender.send).toHaveBeenCalled(); + expect(iosSender.send.count()).toEqual(1); args = iosSender.send.calls.first().args; expect(args[0]).toEqual(data); expect(args[1]).toEqual([ makeDevice('iosToken', 'ios'), ]); // Check ios sender - expect(tvosSender.send).toHaveBeenCalled(); + expect(tvosSender.send.count()).toEqual(1); args = tvosSender.send.calls.first().args; expect(args[0]).toEqual(data); expect(args[1]).toEqual([ @@ -235,15 +235,15 @@ describe('ParsePushAdapter', () => { var data = {}; parsePushAdapter.send(data, installations); - - expect(iosSender.send).toHaveBeenCalled(); - args = iosSender.send.calls.first().args; + + expect(iosSender.send.count()).toEqual(2); + args = iosSender.send.calls.argsFor(0); expect(args[0]).toEqual(data); expect(args[1]).toEqual([ makeDevice('iosToken', 'ios'), ]); // ios sender should be reused for tvos as no tvos sender is present - args = iosSender.send.calls[1].args; + args = iosSender.send.calls.argsFor(1); expect(args[0]).toEqual(data); expect(args[1]).toEqual([ makeDevice('tvosToken', 'tvos'), From d53e537ca7bae3d4c26e6a45adcc458ad9e64e4a Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 09:40:59 +0100 Subject: [PATCH 10/19] fix spec --- spec/ParsePushAdapter.spec.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index 848e2e45..07a90418 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -195,14 +195,14 @@ describe('ParsePushAdapter', () => { parsePushAdapter.send(data, installations); // Check ios sender - expect(iosSender.send.count()).toEqual(1); + expect(iosSender.send.calls.count()).toEqual(1); args = iosSender.send.calls.first().args; expect(args[0]).toEqual(data); expect(args[1]).toEqual([ makeDevice('iosToken', 'ios'), ]); // Check ios sender - expect(tvosSender.send.count()).toEqual(1); + expect(tvosSender.send.calls.count()).toEqual(1); args = tvosSender.send.calls.first().args; expect(args[0]).toEqual(data); expect(args[1]).toEqual([ @@ -236,7 +236,7 @@ describe('ParsePushAdapter', () => { parsePushAdapter.send(data, installations); - expect(iosSender.send.count()).toEqual(2); + expect(iosSender.send.calls.count()).toEqual(2); args = iosSender.send.calls.argsFor(0); expect(args[0]).toEqual(data); expect(args[1]).toEqual([ From 9bff36f174aac5b2410fb56adf41db78ae26d944 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 09:48:40 +0100 Subject: [PATCH 11/19] fix define args --- spec/ParsePushAdapter.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index 07a90418..d88edb3a 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -196,7 +196,7 @@ describe('ParsePushAdapter', () => { parsePushAdapter.send(data, installations); // Check ios sender expect(iosSender.send.calls.count()).toEqual(1); - args = iosSender.send.calls.first().args; + var args = iosSender.send.calls.first().args; expect(args[0]).toEqual(data); expect(args[1]).toEqual([ makeDevice('iosToken', 'ios'), @@ -237,7 +237,7 @@ describe('ParsePushAdapter', () => { parsePushAdapter.send(data, installations); expect(iosSender.send.calls.count()).toEqual(2); - args = iosSender.send.calls.argsFor(0); + var args = iosSender.send.calls.argsFor(0); expect(args[0]).toEqual(data); expect(args[1]).toEqual([ makeDevice('iosToken', 'ios'), From ad8dee4df6f0096989fc3176e5ed2affa859826c Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 10:31:55 +0100 Subject: [PATCH 12/19] remove comment --- src/APNS.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/APNS.js b/src/APNS.js index 1ac0cdf1..e0434b1f 100644 --- a/src/APNS.js +++ b/src/APNS.js @@ -20,7 +20,6 @@ const LOG_PREFIX = 'parse-server-push-adapter APNS'; * @param {Boolean} args.production Specifies which environment to connect to: Production (if true) or Sandbox */ function APNS(args) { - // Since for ios, there maybe multiple cert/key pairs, // typePushConfig can be an array. let apnsArgsList = []; if (Array.isArray(args)) { From 7d27b0cc5aab64c967f3f154baf2506f16337772 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 10:32:07 +0100 Subject: [PATCH 13/19] update spec --- spec/ParsePushAdapter.spec.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index d88edb3a..1a86c610 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -343,7 +343,7 @@ describe('ParsePushAdapter', () => { cert: 'cert.cer', key: 'key.pem', production: false, - bundleId: 'bundleId' + bundleId: 'iosbundleId' } ], osx: [ @@ -351,7 +351,7 @@ describe('ParsePushAdapter', () => { cert: 'cert.cer', key: 'key.pem', production: false, - bundleId: 'bundleId' + bundleId: 'osxbundleId' } ] }; @@ -362,23 +362,23 @@ describe('ParsePushAdapter', () => { }, { deviceType: 'ios', - deviceToken: 'c5ee8fae0a1c', - appIdentifier: 'anotherBundle' + deviceToken: '0d72a1baa92a2febd9a254cbd6584f750c70b2350af5fc9052d1d12584b738e6', + appIdentifier: 'iosbundleId' }, { deviceType: 'ios', - deviceToken: 'c5ee8fae0a1c5805e731cf15496d5b2b3f9b9c577353d3239429d3faaee01c79', - appIdentifier: 'anotherBundle' + deviceToken: 'ff3943ed0b2090c47e5d6f07d8f202a10427941d7897fda5a6b18c6d9fd07d48', + appIdentifier: 'iosbundleId' }, { deviceType: 'osx', - deviceToken: 'c5ee8fae0a1c5805e731cf15496d5b2b3f9b9c577353d3239429d3faaee01c79', - appIdentifier: 'anotherBundle' + deviceToken: '5cda62a8d88eb48d9111a6c436f2e326a053eb0cd72dfc3a0893089342602235', + appIdentifier: 'osxbundleId' }, { deviceType: 'tvos', - deviceToken: 'c5ee8fae0a1c5805e731cf15496d5b2b3f9b9c577353d3239429d3faaee01c79', - appIdentifier: 'anotherBundle' + deviceToken: '0d72a1baa92a2febd9a254cbd6584f750c70b2350af5fc9052d1d12584b738e6', + appIdentifier: 'iosbundleId' // ios and tvos share the same bundleid }, { deviceType: 'win', From 133d149d4c10b0c78fd11bad4eca6473ac5c3e42 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 10:45:39 +0100 Subject: [PATCH 14/19] remove todo --- src/APNS.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/APNS.js b/src/APNS.js index e0434b1f..37f41c98 100644 --- a/src/APNS.js +++ b/src/APNS.js @@ -73,7 +73,7 @@ function APNS(args) { notification: notification, transmitted: true, device: { - deviceType: device.deviceType, // TODO check + deviceType: device.deviceType, deviceToken: device.token.toString('hex') } }); From 539549e80c8e6ca4cd33a7cd76cff971ea52cb89 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Mon, 27 Feb 2017 10:45:58 +0100 Subject: [PATCH 15/19] change device token --- spec/ParsePushAdapter.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index 1a86c610..4dfccba7 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -377,7 +377,7 @@ describe('ParsePushAdapter', () => { }, { deviceType: 'tvos', - deviceToken: '0d72a1baa92a2febd9a254cbd6584f750c70b2350af5fc9052d1d12584b738e6', + deviceToken: '3e72a1baa92a2febd9a254cbd6584f750c70b2350af5fc9052d1d12584b738e6', appIdentifier: 'iosbundleId' // ios and tvos share the same bundleid }, { From a4bb2ea8ccbf2aa447f61d988eebe904524aebc2 Mon Sep 17 00:00:00 2001 From: Florent Vilmart Date: Sun, 5 Mar 2017 16:09:37 -0500 Subject: [PATCH 16/19] Update ParsePushAdapter.spec.js --- spec/ParsePushAdapter.spec.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index 4dfccba7..eaf81b62 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -363,22 +363,22 @@ describe('ParsePushAdapter', () => { { deviceType: 'ios', deviceToken: '0d72a1baa92a2febd9a254cbd6584f750c70b2350af5fc9052d1d12584b738e6', - appIdentifier: 'iosbundleId' + appIdentifier: 'invalidiosbundleId' }, { deviceType: 'ios', deviceToken: 'ff3943ed0b2090c47e5d6f07d8f202a10427941d7897fda5a6b18c6d9fd07d48', - appIdentifier: 'iosbundleId' + appIdentifier: 'invalidiosbundleId' }, { deviceType: 'osx', deviceToken: '5cda62a8d88eb48d9111a6c436f2e326a053eb0cd72dfc3a0893089342602235', - appIdentifier: 'osxbundleId' + appIdentifier: 'invalidosxbundleId' }, { deviceType: 'tvos', deviceToken: '3e72a1baa92a2febd9a254cbd6584f750c70b2350af5fc9052d1d12584b738e6', - appIdentifier: 'iosbundleId' // ios and tvos share the same bundleid + appIdentifier: 'invalidiosbundleId' // ios and tvos share the same bundleid }, { deviceType: 'win', From 7daa4f587d24dcade82759ba3013cc4996b5ebec Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Tue, 14 Mar 2017 10:31:19 +0100 Subject: [PATCH 17/19] remove redundancy in push configuration --- spec/ParsePushAdapter.spec.js | 85 ----------------------------------- src/ParsePushAdapter.js | 10 ----- 2 files changed, 95 deletions(-) diff --git a/spec/ParsePushAdapter.spec.js b/spec/ParsePushAdapter.spec.js index eaf81b62..a2af8ad3 100644 --- a/spec/ParsePushAdapter.spec.js +++ b/spec/ParsePushAdapter.spec.js @@ -166,91 +166,6 @@ describe('ParsePushAdapter', () => { done(); }); - it('does use ios and tvos senders if both are configured', (done) => { - var parsePushAdapter = new ParsePushAdapter(); - // Mock senders - var iosSender = { - send: jasmine.createSpy('send') - }; - var tvosSender = { - send: jasmine.createSpy('send') - }; - var senderMap = { - ios: iosSender, - tvos: tvosSender - }; - parsePushAdapter.senderMap = senderMap; - // Mock installations - var installations = [ - { - deviceType: 'ios', - deviceToken: 'iosToken' - }, - { - deviceType: 'tvos', - deviceToken: 'tvosToken' - } - ]; - var data = {}; - - parsePushAdapter.send(data, installations); - // Check ios sender - expect(iosSender.send.calls.count()).toEqual(1); - var args = iosSender.send.calls.first().args; - expect(args[0]).toEqual(data); - expect(args[1]).toEqual([ - makeDevice('iosToken', 'ios'), - ]); - // Check ios sender - expect(tvosSender.send.calls.count()).toEqual(1); - args = tvosSender.send.calls.first().args; - expect(args[0]).toEqual(data); - expect(args[1]).toEqual([ - makeDevice('tvosToken', 'tvos'), - ]); - done(); - }); - - it('does use ios sender for tvos if no tvos sender is configured', (done) => { - var parsePushAdapter = new ParsePushAdapter(); - // Mock senders - var iosSender = { - send: jasmine.createSpy('send') - }; - var senderMap = { - ios: iosSender, - }; - parsePushAdapter.senderMap = senderMap; - // Mock installations - var installations = [ - { - deviceType: 'ios', - deviceToken: 'iosToken' - }, - { - deviceType: 'tvos', - deviceToken: 'tvosToken' - } - ]; - var data = {}; - - parsePushAdapter.send(data, installations); - - expect(iosSender.send.calls.count()).toEqual(2); - var args = iosSender.send.calls.argsFor(0); - expect(args[0]).toEqual(data); - expect(args[1]).toEqual([ - makeDevice('iosToken', 'ios'), - ]); - // ios sender should be reused for tvos as no tvos sender is present - args = iosSender.send.calls.argsFor(1); - expect(args[0]).toEqual(data); - expect(args[1]).toEqual([ - makeDevice('tvosToken', 'tvos'), - ]); - done(); - }); - it('can send push notifications by pushType and failback by deviceType', (done) => { var parsePushAdapter = new ParsePushAdapter(); // Mock senders diff --git a/src/ParsePushAdapter.js b/src/ParsePushAdapter.js index d2a2252a..2f16c6da 100644 --- a/src/ParsePushAdapter.js +++ b/src/ParsePushAdapter.js @@ -53,16 +53,6 @@ export class ParsePushAdapter { for (let pushType in deviceMap) { var sender = this.senderMap[pushType]; let devices = deviceMap[pushType]; - - if (!sender) { - if (pushType == 'tvos') { - // if there is only an ios push configuration available reuse it for tvos - sender = this.senderMap['ios']; - } else if (pushType == 'ios') { - // if there is only a tvos push configuration available reuse it for ios - sender = this.senderMap['tvos']; - } - } if(Array.isArray(devices) && devices.length > 0) { From 02b951a471b2dfe47fe6cd395819380b526aa17f Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Tue, 14 Mar 2017 10:31:45 +0100 Subject: [PATCH 18/19] fix code style --- src/ParsePushAdapter.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/ParsePushAdapter.js b/src/ParsePushAdapter.js index 2f16c6da..4bc7172b 100644 --- a/src/ParsePushAdapter.js +++ b/src/ParsePushAdapter.js @@ -54,8 +54,7 @@ export class ParsePushAdapter { var sender = this.senderMap[pushType]; let devices = deviceMap[pushType]; - if(Array.isArray(devices) && devices.length > 0) - { + if(Array.isArray(devices) && devices.length > 0) { if (!sender) { log.verbose(LOG_PREFIX, `Can not find sender for push type ${pushType}, ${data}`) let results = devices.map((device) => { From 8752872fcd6e5b45e643b1cb4a6c4692712c7437 Mon Sep 17 00:00:00 2001 From: Stefan Trauth Date: Tue, 14 Mar 2017 10:40:45 +0100 Subject: [PATCH 19/19] change var back to let --- src/ParsePushAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ParsePushAdapter.js b/src/ParsePushAdapter.js index 4bc7172b..c3a007e2 100644 --- a/src/ParsePushAdapter.js +++ b/src/ParsePushAdapter.js @@ -51,7 +51,7 @@ export class ParsePushAdapter { let deviceMap = classifyInstallations(installations, this.validPushTypes); let sendPromises = []; for (let pushType in deviceMap) { - var sender = this.senderMap[pushType]; + let sender = this.senderMap[pushType]; let devices = deviceMap[pushType]; if(Array.isArray(devices) && devices.length > 0) {