@@ -544,6 +544,26 @@ public void onFailure(OneSignal.EmailUpdateError error) {
544
544
}
545
545
}
546
546
547
+ /**
548
+ * @see #shouldSetExternalUserId_inOnSuccessOfEmailUpdate
549
+ */
550
+ private class TestEmailUpdateHandler_onSuccess_callSetExternalUserId implements OneSignal .EmailUpdateHandler {
551
+ boolean emailFiredSuccess = false ;
552
+ OneSignal .EmailUpdateError emailFiredFailure = null ;
553
+ String testExternalId = "test_ext_id" ;
554
+
555
+ @ Override
556
+ public void onSuccess () {
557
+ emailFiredSuccess = true ;
558
+ OneSignal .setExternalUserId (testExternalId , getExternalUserIdUpdateCompletionHandler ());
559
+ }
560
+
561
+ @ Override
562
+ public void onFailure (OneSignal .EmailUpdateError error ) {
563
+ emailFiredFailure = error ;
564
+ }
565
+ }
566
+
547
567
private class TestSMSUpdateHandler implements OneSignal .OSSMSUpdateHandler {
548
568
JSONObject smsResult = null ;
549
569
OneSignal .OSSMSUpdateError smsFiredFailure = null ;
@@ -559,6 +579,26 @@ public void onFailure(OneSignal.OSSMSUpdateError error) {
559
579
}
560
580
}
561
581
582
+ /**
583
+ * @see #shouldSetExternalUserId_inOnSuccessOfSMSUpdate
584
+ */
585
+ private class TestSMSUpdateHandler_onSuccess_callSetExternalUserId implements OneSignal .OSSMSUpdateHandler {
586
+ JSONObject smsResult = null ;
587
+ OneSignal .OSSMSUpdateError smsFiredFailure = null ;
588
+ String testExternalId = "test_ext_id" ;
589
+
590
+ @ Override
591
+ public void onSuccess (JSONObject result ) {
592
+ smsResult = result ;
593
+ OneSignal .setExternalUserId (testExternalId , getExternalUserIdUpdateCompletionHandler ());
594
+ }
595
+
596
+ @ Override
597
+ public void onFailure (OneSignal .OSSMSUpdateError error ) {
598
+ smsFiredFailure = error ;
599
+ }
600
+ }
601
+
562
602
@ Test
563
603
public void shouldFireOnSuccessOfEmailUpdate () throws Exception {
564
604
OneSignalInit ();
@@ -2019,6 +2059,61 @@ public void sendExternalUserId_withFailure_withCompletionHandler() throws Except
2019
2059
assertEquals (expectedExternalUserIdResponse .toString (), lastExternalUserIdResponse .toString ());
2020
2060
}
2021
2061
2062
+ /**
2063
+ * This test calls setExternalUserId in the onSuccess callback of setEmail.
2064
+ * By the time this callback is invoked, setting EUID should update the email player.
2065
+ */
2066
+ @ Test
2067
+ public void shouldSetExternalUserId_inOnSuccessOfEmailUpdate () throws Exception {
2068
+ // 1. Init OneSignal
2069
+ OneSignalInit ();
2070
+
2071
+ // 2. Create an EmailUpdateHandler whose onSuccess callback calls setExternalUserId
2072
+ TestEmailUpdateHandler_onSuccess_callSetExternalUserId testEmailUpdateHandler = new
2073
+ TestEmailUpdateHandler_onSuccess_callSetExternalUserId ();
2074
+
2075
+ // 3. Attempt to set email using this email update handler
2076
+ OneSignal .setEmail (ONESIGNAL_EMAIL_ADDRESS , testEmailUpdateHandler );
2077
+ threadAndTaskWait ();
2078
+
2079
+ // 4. Check that the email callback is successful
2080
+ assertTrue (testEmailUpdateHandler .emailFiredSuccess );
2081
+ assertNull (testEmailUpdateHandler .emailFiredFailure );
2082
+
2083
+ // 5. Make sure that the external ID request is sent for email
2084
+ ShadowOneSignalRestClient .Request setExternalIdOnEmailChannel = ShadowOneSignalRestClient .requests .get (3 );
2085
+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , setExternalIdOnEmailChannel .method );
2086
+ assertEquals ("players/" + ShadowOneSignalRestClient .emailUserId , setExternalIdOnEmailChannel .url );
2087
+ assertEquals (testEmailUpdateHandler .testExternalId , setExternalIdOnEmailChannel .payload .get ("external_user_id" ));
2088
+ }
2089
+
2090
+ /**
2091
+ * This test calls setExternalUserId in the onSuccess callback of setSMSNumber.
2092
+ * By the time this callback is invoked, setting EUID should update the SMS player.
2093
+ */
2094
+ @ Test
2095
+ public void shouldSetExternalUserId_inOnSuccessOfSMSUpdate () throws Exception {
2096
+ // 1. Init OneSignal
2097
+ OneSignalInit ();
2098
+
2099
+ // 2. Create an SMSUpdateHandler whose onSuccess callback calls setExternalUserId
2100
+ TestSMSUpdateHandler_onSuccess_callSetExternalUserId testSMSUpdateHandler = new
2101
+ TestSMSUpdateHandler_onSuccess_callSetExternalUserId ();
2102
+
2103
+ // 3. Attempt to set SMS using this SMS update handler
2104
+ OneSignal .setSMSNumber (ONESIGNAL_SMS_NUMBER , testSMSUpdateHandler );
2105
+ threadAndTaskWait ();
2106
+
2107
+ // 4. Check that the sms callback is invoked
2108
+ assertNotNull (testSMSUpdateHandler .smsResult );
2109
+
2110
+ // 5. Make sure that the external ID request is sent for sms
2111
+ ShadowOneSignalRestClient .Request setExternalIdOnSMSChannel = ShadowOneSignalRestClient .requests .get (3 );
2112
+ assertEquals (ShadowOneSignalRestClient .REST_METHOD .PUT , setExternalIdOnSMSChannel .method );
2113
+ assertEquals ("players/" + ShadowOneSignalRestClient .smsUserId , setExternalIdOnSMSChannel .url );
2114
+ assertEquals (testSMSUpdateHandler .testExternalId , setExternalIdOnSMSChannel .payload .get ("external_user_id" ));
2115
+ }
2116
+
2022
2117
@ Test
2023
2118
public void sendExternalUserId_forPushAndEmail_withFailure_withCompletionHandler () throws Exception {
2024
2119
String testEmail = "test@onesignal.com" ;
0 commit comments