@@ -230,6 +230,22 @@ public void onFailure(OneSignal.ExternalIdError error) {
230
230
};
231
231
}
232
232
233
+ private static boolean didEmailUpdateSucceed ;
234
+ private static OneSignal .EmailUpdateError lastEmailUpdateFailure ;
235
+ private static OneSignal .EmailUpdateHandler getEmailUpdateHandler () {
236
+ return new OneSignal .EmailUpdateHandler () {
237
+ @ Override
238
+ public void onSuccess () {
239
+ didEmailUpdateSucceed = true ;
240
+ }
241
+
242
+ @ Override
243
+ public void onFailure (OneSignal .EmailUpdateError error ) {
244
+ lastEmailUpdateFailure = error ;
245
+ }
246
+ };
247
+ }
248
+
233
249
private static JSONObject lastGetTags ;
234
250
private static void getGetTagsHandler () {
235
251
OneSignal .getTags (tags -> lastGetTags = tags );
@@ -240,6 +256,8 @@ private static void cleanUp() throws Exception {
240
256
lastGetTags = null ;
241
257
lastExternalUserIdResponse = null ;
242
258
lastExternalUserIdError = null ;
259
+ lastEmailUpdateFailure = null ;
260
+ didEmailUpdateSucceed = false ;
243
261
244
262
ShadowGMSLocationController .reset ();
245
263
@@ -4414,6 +4432,102 @@ public void shouldRemoveExternalUserId() throws Exception {
4414
4432
assertEquals (removeIdRequest .payload .getString ("external_user_id" ), "" );
4415
4433
}
4416
4434
4435
+ @ Test
4436
+ public void shouldRemoveExternalUserIdFromPushWithAuthHash () throws Exception {
4437
+ String testExternalId = "test_ext_id" ;
4438
+ String mockExternalIdHash = new String (new char [64 ]).replace ('\0' , '0' );
4439
+
4440
+ OneSignal .setExternalUserId (testExternalId , mockExternalIdHash , null );
4441
+ OneSignalInit ();
4442
+ threadAndTaskWait ();
4443
+
4444
+ OneSignal .removeExternalUserId (getExternalUserIdUpdateCompletionHandler ());
4445
+ threadAndTaskWait ();
4446
+
4447
+ JSONObject expectedExternalUserIdResponse = new JSONObject (
4448
+ "{" +
4449
+ " \" push\" : {" +
4450
+ " \" success\" : true" +
4451
+ " }" +
4452
+ "}"
4453
+ );
4454
+ assertEquals (expectedExternalUserIdResponse .toString (), lastExternalUserIdResponse .toString ());
4455
+
4456
+ assertEquals (3 , ShadowOneSignalRestClient .networkCallCount );
4457
+
4458
+ ShadowOneSignalRestClient .Request removeIdRequest = ShadowOneSignalRestClient .requests .get (2 );
4459
+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , removeIdRequest .method );
4460
+ assertEquals (removeIdRequest .payload .getString ("external_user_id" ), "" );
4461
+ assertEquals (mockExternalIdHash , removeIdRequest .payload .getString ("external_user_id_auth_hash" ));
4462
+ }
4463
+
4464
+ @ Test
4465
+ public void shouldRemoveExternalUserIdFromEmailWithAuthHash () throws Exception {
4466
+ String testEmail = "test@test.com" ;
4467
+ String mockEmailHash = new String (new char [64 ]).replace ('\0' , '0' );
4468
+
4469
+ OneSignal .setEmail (testEmail , mockEmailHash , getEmailUpdateHandler ());
4470
+ OneSignalInit ();
4471
+ threadAndTaskWait ();
4472
+
4473
+ OneSignal .removeExternalUserId (getExternalUserIdUpdateCompletionHandler ());
4474
+ threadAndTaskWait ();
4475
+
4476
+ JSONObject expectedExternalUserIdResponse = new JSONObject (
4477
+ "{" +
4478
+ " \" push\" : {" +
4479
+ " \" success\" : true" +
4480
+ " }" + ", " +
4481
+ " \" email\" : {" +
4482
+ " \" success\" : true" +
4483
+ " }" +
4484
+ "}"
4485
+ );
4486
+ assertEquals (expectedExternalUserIdResponse .toString (), lastExternalUserIdResponse .toString ());
4487
+ assertTrue (didEmailUpdateSucceed );
4488
+ assertNull (lastEmailUpdateFailure );
4489
+
4490
+ assertEquals (6 , ShadowOneSignalRestClient .networkCallCount );
4491
+
4492
+ ShadowOneSignalRestClient .Request removeIdRequest = ShadowOneSignalRestClient .requests .get (4 );
4493
+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , removeIdRequest .method );
4494
+ assertEquals (removeIdRequest .payload .getString ("external_user_id" ), "" );
4495
+ assertFalse (removeIdRequest .payload .has ("external_user_id_auth_hash" ));
4496
+
4497
+ ShadowOneSignalRestClient .Request removeIdEmailRequest = ShadowOneSignalRestClient .requests .get (5 );
4498
+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , removeIdEmailRequest .method );
4499
+ assertEquals (removeIdEmailRequest .payload .getString ("external_user_id" ), "" );
4500
+ assertEquals (mockEmailHash , removeIdEmailRequest .payload .getString ("email_auth_hash" ));
4501
+ }
4502
+
4503
+ @ Test
4504
+ public void shouldRemoveExternalUserIdFromPushAndEmailWithAuthHash () throws Exception {
4505
+ String testExternalId = "test_ext_id" ;
4506
+ String mockExternalIdHash = new String (new char [64 ]).replace ('\0' , '0' );
4507
+ String testEmail = "test@test.com" ;
4508
+ String mockEmailHash = new String (new char [64 ]).replace ('\0' , '0' );
4509
+
4510
+ OneSignal .setExternalUserId (testExternalId , mockExternalIdHash , null );
4511
+ OneSignal .setEmail (testEmail , mockEmailHash , null );
4512
+ OneSignalInit ();
4513
+ threadAndTaskWait ();
4514
+
4515
+ OneSignal .removeExternalUserId ();
4516
+ threadAndTaskWait ();
4517
+
4518
+ assertEquals (6 , ShadowOneSignalRestClient .networkCallCount );
4519
+
4520
+ ShadowOneSignalRestClient .Request removeIdRequest = ShadowOneSignalRestClient .requests .get (4 );
4521
+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , removeIdRequest .method );
4522
+ assertEquals (removeIdRequest .payload .getString ("external_user_id" ), "" );
4523
+ assertEquals (mockExternalIdHash , removeIdRequest .payload .getString ("external_user_id_auth_hash" ));
4524
+
4525
+ ShadowOneSignalRestClient .Request removeIdEmailRequest = ShadowOneSignalRestClient .requests .get (5 );
4526
+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , removeIdEmailRequest .method );
4527
+ assertEquals (removeIdEmailRequest .payload .getString ("external_user_id" ), "" );
4528
+ assertEquals (mockEmailHash , removeIdEmailRequest .payload .getString ("email_auth_hash" ));
4529
+ }
4530
+
4417
4531
@ Test
4418
4532
public void doesNotSendSameExternalId () throws Exception {
4419
4533
String testExternalId = "test_ext_id" ;
0 commit comments