@@ -7,8 +7,8 @@ describe('SNSPushAdapter', () => {
7
7
beforeEach ( function ( ) {
8
8
pushConfig = {
9
9
pushTypes : {
10
- ios : "APNS_ID" ,
11
- android : "GCM_ID"
10
+ ios : { ARN : "APNS_ID" , production : false , bundleId : 'com.parseplatform.myapp' } ,
11
+ android : { ARN : "GCM_ID" }
12
12
} ,
13
13
accessKey : "accessKey" ,
14
14
secretKey : "secretKey" ,
@@ -19,10 +19,9 @@ describe('SNSPushAdapter', () => {
19
19
20
20
it ( 'can be initialized' , ( done ) => {
21
21
// Make mock config
22
- var arnMap = snsPushAdapter . arnMap ;
22
+ var snsPushConfig = snsPushAdapter . snsConfig ;
23
23
24
- expect ( arnMap . ios ) . toEqual ( "APNS_ID" ) ;
25
- expect ( arnMap . android ) . toEqual ( "GCM_ID" ) ;
24
+ expect ( snsPushConfig ) . toEqual ( pushConfig . pushTypes ) ;
26
25
27
26
done ( ) ;
28
27
} ) ;
@@ -126,13 +125,17 @@ describe('SNSPushAdapter', () => {
126
125
} ) ;
127
126
128
127
it ( 'can generate the right iOS payload' , ( done ) => {
129
- var data = { "aps" : { "alert" : "Check out these awesome deals!" } } ;
128
+ var data = { data : { "alert" : "Check out these awesome deals!" } } ;
130
129
var pushId = '123' ;
131
130
var timeStamp = 1456728000 ;
132
131
133
- var returnedData = SNSPushAdapter . generateiOSPayload ( data ) ;
132
+ var returnedData = SNSPushAdapter . generateiOSPayload ( data , true ) ;
134
133
var expectedData = { APNS : '{"aps":{"alert":"Check out these awesome deals!"}}' } ;
135
- expect ( returnedData ) . toEqual ( expectedData )
134
+
135
+ var returnedData = SNSPushAdapter . generateiOSPayload ( data , false ) ;
136
+ var expectedData = { APNS_SANDBOX : '{"aps":{"alert":"Check out these awesome deals!"}}' } ;
137
+
138
+ expect ( returnedData ) . toEqual ( expectedData ) ;
136
139
done ( ) ;
137
140
} ) ;
138
141
@@ -153,11 +156,11 @@ describe('SNSPushAdapter', () => {
153
156
callback ( null , { 'EndpointArn' : 'ARN' } ) ;
154
157
} ) ;
155
158
156
- var promise = snsPushAdapter . exchangeTokenPromise ( makeDevice ( "androidToken" ) , "android " ) ;
159
+ var promise = snsPushAdapter . exchangeTokenPromise ( makeDevice ( "androidToken" ) , "GCM_ID " ) ;
157
160
158
161
promise . then ( function ( ) {
159
162
expect ( snsSender . createPlatformEndpoint ) . toHaveBeenCalled ( ) ;
160
- args = snsSender . createPlatformEndpoint . calls . first ( ) . args ;
163
+ var args = snsSender . createPlatformEndpoint . calls . first ( ) . args ;
161
164
expect ( args [ 0 ] . PlatformApplicationArn ) . toEqual ( "GCM_ID" ) ;
162
165
expect ( args [ 0 ] . Token ) . toEqual ( "androidToken" ) ;
163
166
done ( ) ;
@@ -186,7 +189,7 @@ describe('SNSPushAdapter', () => {
186
189
var callback = jasmine . createSpy ( ) ;
187
190
promise . then ( function ( ) {
188
191
expect ( snsSender . publish ) . toHaveBeenCalled ( ) ;
189
- args = snsSender . publish . calls . first ( ) . args ;
192
+ var args = snsSender . publish . calls . first ( ) . args ;
190
193
expect ( args [ 0 ] . MessageStructure ) . toEqual ( "json" ) ;
191
194
expect ( args [ 0 ] . TargetArn ) . toEqual ( "123" ) ;
192
195
expect ( args [ 0 ] . Message ) . toEqual ( '{"test":"hello"}' ) ;
@@ -202,8 +205,10 @@ describe('SNSPushAdapter', () => {
202
205
callback ( "error" , { } ) ;
203
206
} ) ;
204
207
205
- var promise = snsSender . getPlatformArn ( makeDevice ( "android" ) , "android" , function ( err , data ) ) ;
206
- done ( ) ;
208
+ snsPushAdapter . getPlatformArn ( makeDevice ( "android" ) , "android" , function ( err , data ) {
209
+ expect ( err ) . not . toBe ( null ) ;
210
+ done ( ) ;
211
+ } ) ;
207
212
} ) ;
208
213
209
214
it ( 'can send SNS Payload to Android and iOS' , ( done ) => {
@@ -241,6 +246,83 @@ describe('SNSPushAdapter', () => {
241
246
} ) ;
242
247
} ) ;
243
248
249
+ it ( 'can send to APNS with known identifier' , ( done ) => {
250
+ var snsSender = jasmine . createSpyObj ( 'sns' , [ 'publish' , 'createPlatformEndpoint' ] ) ;
251
+
252
+ snsSender . createPlatformEndpoint . and . callFake ( function ( object , callback ) {
253
+ callback ( null , { 'EndpointArn' : 'ARN' } ) ;
254
+ } ) ;
255
+
256
+ snsSender . publish . and . callFake ( function ( object , callback ) {
257
+ callback ( null , '123' ) ;
258
+ } ) ;
259
+
260
+ snsPushAdapter . sns = snsSender ;
261
+
262
+ var promises = snsPushAdapter . sendToAPNS ( { "test" : "hello" } , [ makeDevice ( "ios" , "com.parseplatform.myapp" ) ] ) ;
263
+ expect ( promises . length ) . toEqual ( 1 ) ;
264
+
265
+ Promise . all ( promises ) . then ( function ( ) {
266
+ expect ( snsSender . publish ) . toHaveBeenCalled ( ) ;
267
+ done ( ) ;
268
+ } ) ;
269
+
270
+ } ) ;
271
+
272
+ it ( 'can send to APNS with unknown identifier' , ( done ) => {
273
+ var snsSender = jasmine . createSpyObj ( 'sns' , [ 'publish' , 'createPlatformEndpoint' ] ) ;
274
+
275
+ snsSender . createPlatformEndpoint . and . callFake ( function ( object , callback ) {
276
+ callback ( null , { 'EndpointArn' : 'ARN' } ) ;
277
+ } ) ;
278
+
279
+ snsSender . publish . and . callFake ( function ( object , callback ) {
280
+ callback ( null , '123' ) ;
281
+ } ) ;
282
+
283
+ snsPushAdapter . sns = snsSender ;
284
+
285
+ var promises = snsPushAdapter . sendToAPNS ( { "test" : "hello" } , [ makeDevice ( "ios" , "com.parseplatform.unknown" ) ] ) ;
286
+ expect ( promises . length ) . toEqual ( 0 ) ;
287
+ done ( ) ;
288
+ } ) ;
289
+
290
+ it ( 'can send to APNS with multiple identifiers' , ( done ) => {
291
+ pushConfig = {
292
+ pushTypes : {
293
+ ios : [ { ARN : "APNS_SANDBOX_ID" , production : false , bundleId : 'beta.parseplatform.myapp' } ,
294
+ { ARN : "APNS_PROD_ID" , production : true , bundleId : 'com.parseplatform.myapp' } ] ,
295
+ android : { ARN : "GCM_ID" }
296
+ } ,
297
+ accessKey : "accessKey" ,
298
+ secretKey : "secretKey" ,
299
+ region : "region"
300
+ } ;
301
+
302
+ snsPushAdapter = new SNSPushAdapter ( pushConfig ) ;
303
+
304
+ var snsSender = jasmine . createSpyObj ( 'sns' , [ 'publish' , 'createPlatformEndpoint' ] ) ;
305
+
306
+ snsSender . createPlatformEndpoint . and . callFake ( function ( object , callback ) {
307
+ callback ( null , { 'EndpointArn' : 'APNS_PROD_ID' } ) ;
308
+ } ) ;
309
+
310
+ snsSender . publish . and . callFake ( function ( object , callback ) {
311
+ callback ( null , '123' ) ;
312
+ } ) ;
313
+
314
+ snsPushAdapter . sns = snsSender ;
315
+
316
+ var promises = snsPushAdapter . sendToAPNS ( { "test" : "hello" } , [ makeDevice ( "ios" , "beta.parseplatform.myapp" ) ] ) ;
317
+ expect ( promises . length ) . toEqual ( 1 ) ;
318
+ Promise . all ( promises ) . then ( function ( ) {
319
+ expect ( snsSender . publish ) . toHaveBeenCalled ( ) ;
320
+ var args = snsSender . publish . calls . first ( ) . args [ 0 ] ;
321
+ expect ( args . Message ) . toEqual ( "{\"APNS_SANDBOX\":\"{}\"}" ) ;
322
+ done ( ) ;
323
+ } ) ;
324
+ } ) ;
325
+
244
326
function makeDevice ( deviceToken , appIdentifier ) {
245
327
return {
246
328
deviceToken : deviceToken ,
0 commit comments