@@ -223,6 +223,22 @@ public void onComplete(JSONObject results) {
223223 };
224224 }
225225
226+ private static boolean didEmailUpdateSucceed ;
227+ private static OneSignal .EmailUpdateError lastEmailUpdateFailure ;
228+ private static OneSignal .EmailUpdateHandler getEmailUpdateHandler () {
229+ return new OneSignal .EmailUpdateHandler () {
230+ @ Override
231+ public void onSuccess () {
232+ didEmailUpdateSucceed = true ;
233+ }
234+
235+ @ Override
236+ public void onFailure (OneSignal .EmailUpdateError error ) {
237+ lastEmailUpdateFailure = error ;
238+ }
239+ };
240+ }
241+
226242 private static void GetTags () {
227243 OneSignal .getTags (new OneSignal .GetTagsHandler () {
228244 @ Override
@@ -237,7 +253,9 @@ private static void cleanUp() throws Exception {
237253
238254 notificationOpenedMessage = null ;
239255 lastGetTags = null ;
240- lastExternalUserIdResponse = null ;;
256+ lastExternalUserIdResponse = null ;
257+ lastEmailUpdateFailure = null ;
258+ didEmailUpdateSucceed = false ;
241259
242260 ShadowGMSLocationController .reset ();
243261 TestHelpers .beforeTestInitAndCleanup ();
@@ -4202,7 +4220,7 @@ public void shouldAlwaysSetExternalIdWithAuthHashAAfterRegistration() throws Exc
42024220 }
42034221
42044222 @ Test
4205- public void shouldAlwaysSetExternalIdAndEmailWithAuthHashAAfterRegistration () throws Exception {
4223+ public void shouldAlwaysSetExternalIdAndEmailWithAuthHashAfterRegistration () throws Exception {
42064224 OneSignalInit ();
42074225 threadAndTaskWait ();
42084226
@@ -4260,6 +4278,102 @@ public void shouldRemoveExternalUserId() throws Exception {
42604278 assertEquals (removeIdRequest .payload .getString ("external_user_id" ), "" );
42614279 }
42624280
4281+ @ Test
4282+ public void shouldRemoveExternalUserIdFromPushWithAuthHash () throws Exception {
4283+ String testExternalId = "test_ext_id" ;
4284+ String mockExternalIdHash = new String (new char [64 ]).replace ('\0' , '0' );
4285+
4286+ OneSignal .setExternalUserId (testExternalId , mockExternalIdHash , null );
4287+ OneSignalInit ();
4288+ threadAndTaskWait ();
4289+
4290+ OneSignal .removeExternalUserId (getExternalUserIdUpdateCompletionHandler ());
4291+ threadAndTaskWait ();
4292+
4293+ JSONObject expectedExternalUserIdResponse = new JSONObject (
4294+ "{" +
4295+ " \" push\" : {" +
4296+ " \" success\" : true" +
4297+ " }" +
4298+ "}"
4299+ );
4300+ assertEquals (expectedExternalUserIdResponse .toString (), lastExternalUserIdResponse .toString ());
4301+
4302+ assertEquals (3 , ShadowOneSignalRestClient .networkCallCount );
4303+
4304+ ShadowOneSignalRestClient .Request removeIdRequest = ShadowOneSignalRestClient .requests .get (2 );
4305+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , removeIdRequest .method );
4306+ assertEquals (removeIdRequest .payload .getString ("external_user_id" ), "" );
4307+ assertEquals (mockExternalIdHash , removeIdRequest .payload .getString ("external_user_id_auth_hash" ));
4308+ }
4309+
4310+ @ Test
4311+ public void shouldRemoveExternalUserIdFromEmailWithAuthHash () throws Exception {
4312+ String testEmail =
"[email protected] " ;
4313+ String mockEmailHash = new String (new char [64 ]).replace ('\0' , '0' );
4314+
4315+ OneSignal .setEmail (testEmail , mockEmailHash , getEmailUpdateHandler ());
4316+ OneSignalInit ();
4317+ threadAndTaskWait ();
4318+
4319+ OneSignal .removeExternalUserId (getExternalUserIdUpdateCompletionHandler ());
4320+ threadAndTaskWait ();
4321+
4322+ JSONObject expectedExternalUserIdResponse = new JSONObject (
4323+ "{" +
4324+ " \" push\" : {" +
4325+ " \" success\" : true" +
4326+ " }" + ", " +
4327+ " \" email\" : {" +
4328+ " \" success\" : true" +
4329+ " }" +
4330+ "}"
4331+ );
4332+ assertEquals (expectedExternalUserIdResponse .toString (), lastExternalUserIdResponse .toString ());
4333+ assertTrue (didEmailUpdateSucceed );
4334+ assertNull (lastEmailUpdateFailure );
4335+
4336+ assertEquals (6 , ShadowOneSignalRestClient .networkCallCount );
4337+
4338+ ShadowOneSignalRestClient .Request removeIdRequest = ShadowOneSignalRestClient .requests .get (4 );
4339+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , removeIdRequest .method );
4340+ assertEquals (removeIdRequest .payload .getString ("external_user_id" ), "" );
4341+ assertFalse (removeIdRequest .payload .has ("external_user_id_auth_hash" ));
4342+
4343+ ShadowOneSignalRestClient .Request removeIdEmailRequest = ShadowOneSignalRestClient .requests .get (5 );
4344+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , removeIdEmailRequest .method );
4345+ assertEquals (removeIdEmailRequest .payload .getString ("external_user_id" ), "" );
4346+ assertEquals (mockEmailHash , removeIdEmailRequest .payload .getString ("email_auth_hash" ));
4347+ }
4348+
4349+ @ Test
4350+ public void shouldRemoveExternalUserIdFromPushAndEmailWithAuthHash () throws Exception {
4351+ String testExternalId = "test_ext_id" ;
4352+ String mockExternalIdHash = new String (new char [64 ]).replace ('\0' , '0' );
4353+ String testEmail =
"[email protected] " ;
4354+ String mockEmailHash = new String (new char [64 ]).replace ('\0' , '0' );
4355+
4356+ OneSignal .setExternalUserId (testExternalId , mockExternalIdHash , null );
4357+ OneSignal .setEmail (testEmail , mockEmailHash , null );
4358+ OneSignalInit ();
4359+ threadAndTaskWait ();
4360+
4361+ OneSignal .removeExternalUserId ();
4362+ threadAndTaskWait ();
4363+
4364+ assertEquals (6 , ShadowOneSignalRestClient .networkCallCount );
4365+
4366+ ShadowOneSignalRestClient .Request removeIdRequest = ShadowOneSignalRestClient .requests .get (4 );
4367+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , removeIdRequest .method );
4368+ assertEquals (removeIdRequest .payload .getString ("external_user_id" ), "" );
4369+ assertEquals (mockExternalIdHash , removeIdRequest .payload .getString ("external_user_id_auth_hash" ));
4370+
4371+ ShadowOneSignalRestClient .Request removeIdEmailRequest = ShadowOneSignalRestClient .requests .get (5 );
4372+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , removeIdEmailRequest .method );
4373+ assertEquals (removeIdEmailRequest .payload .getString ("external_user_id" ), "" );
4374+ assertEquals (mockEmailHash , removeIdEmailRequest .payload .getString ("email_auth_hash" ));
4375+ }
4376+
42634377 @ Test
42644378 public void doesNotSendSameExternalId () throws Exception {
42654379 String testExternalId = "test_ext_id" ;
0 commit comments