@@ -2859,6 +2859,29 @@ - (void)testRemoveExternalUserId_forPush {
28592859 XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id" ], @" " );
28602860}
28612861
2862+ - (void )testRemoveExternalUserId_forPush_withAuthHash {
2863+ // 1. Init OneSignal
2864+ [UnitTestCommonMethods initOneSignalAndThreadWait ];
2865+
2866+ // 2. Set external user id
2867+ [OneSignal setExternalUserId: TEST_EXTERNAL_USER_ID withExternalIdAuthHashToken: TEST_EXTERNAL_USER_ID_HASH_TOKEN withSuccess: nil withFailure: nil ];
2868+ [UnitTestCommonMethods runBackgroundThreads ];
2869+
2870+ // 3. Make sure last request was external id and had the correct external id being used in the request payload
2871+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequestType , NSStringFromClass ([OSRequestUpdateExternalUserId class ]));
2872+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id" ], TEST_EXTERNAL_USER_ID);
2873+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id_auth_hash" ], TEST_EXTERNAL_USER_ID_HASH_TOKEN);
2874+
2875+ // 4. Remove the external user id
2876+ [OneSignal removeExternalUserId ];
2877+ [UnitTestCommonMethods runBackgroundThreads ];
2878+
2879+ // 5. Make sure last request was external id and the external id being used was an empty string
2880+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequestType , NSStringFromClass ([OSRequestUpdateExternalUserId class ]));
2881+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id" ], @" " );
2882+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id_auth_hash" ], TEST_EXTERNAL_USER_ID_HASH_TOKEN);
2883+ }
2884+
28622885- (void )testRemoveExternalUserId_forPushAndEmail {
28632886 // 1. Init OneSignal
28642887 [UnitTestCommonMethods initOneSignalAndThreadWait ];
@@ -2884,6 +2907,33 @@ - (void)testRemoveExternalUserId_forPushAndEmail {
28842907 XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id" ], @" " );
28852908}
28862909
2910+ - (void )testRemoveExternalUserId_forPushAndEmail_withAuthHash {
2911+ // 1. Init OneSignal
2912+ [UnitTestCommonMethods initOneSignalAndThreadWait ];
2913+
2914+ // 2. Set email
2915+ [OneSignal setEmail: TEST_EMAIL withEmailAuthHashToken: TEST_EMAIL_HASH_TOKEN];
2916+ [UnitTestCommonMethods runBackgroundThreads ];
2917+
2918+ // 3. Set external user id
2919+ [OneSignal setExternalUserId: TEST_EXTERNAL_USER_ID withExternalIdAuthHashToken: TEST_EXTERNAL_USER_ID_HASH_TOKEN withSuccess: nil withFailure: nil ];
2920+ [UnitTestCommonMethods runBackgroundThreads ];
2921+
2922+ // 4. Make sure last request was external id and had the correct external id being used in the request payload
2923+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequestType , NSStringFromClass ([OSRequestUpdateExternalUserId class ]));
2924+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id" ], TEST_EXTERNAL_USER_ID);
2925+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id_auth_hash" ], TEST_EXTERNAL_USER_ID_HASH_TOKEN);
2926+
2927+ // 5. Remove the external user id
2928+ [OneSignal removeExternalUserId ];
2929+ [UnitTestCommonMethods runBackgroundThreads ];
2930+
2931+ // 6. Make sure last request was external id and the external id being used was an empty string
2932+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequestType , NSStringFromClass ([OSRequestUpdateExternalUserId class ]));
2933+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id" ], @" " );
2934+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id_auth_hash" ], TEST_EXTERNAL_USER_ID_HASH_TOKEN);
2935+ }
2936+
28872937- (void )testRemoveExternalUserId_forPush_withCompletion {
28882938 // 1. Init OneSignal
28892939 [UnitTestCommonMethods initOneSignalAndThreadWait ];
@@ -2916,6 +2966,38 @@ - (void)testRemoveExternalUserId_forPush_withCompletion {
29162966 XCTAssertNil (self.CALLBACK_EMAIL_EXTERNAL_USER_ID );
29172967}
29182968
2969+ - (void )testRemoveExternalUserId_forPush_withAuthHash_withCompletion {
2970+ // 1. Init OneSignal
2971+ [UnitTestCommonMethods initOneSignalAndThreadWait ];
2972+
2973+ // 2. Set external user id
2974+ [OneSignal setExternalUserId: TEST_EXTERNAL_USER_ID withExternalIdAuthHashToken: TEST_EXTERNAL_USER_ID_HASH_TOKEN withSuccess: nil withFailure: nil ];
2975+ [UnitTestCommonMethods runBackgroundThreads ];
2976+
2977+ // 3. Make sure last request was external id and had the correct external id being used in the request payload
2978+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequestType , NSStringFromClass ([OSRequestUpdateExternalUserId class ]));
2979+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id" ], TEST_EXTERNAL_USER_ID);
2980+
2981+ // 4. Remove the external user id with a callack implemented
2982+ [OneSignal removeExternalUserId: ^(NSDictionary *results) {
2983+ if (results[@" push" ] && results[@" push" ][@" success" ] && [results[@" push" ][@" success" ] boolValue ])
2984+ self.CALLBACK_EXTERNAL_USER_ID = @" " ;
2985+
2986+ if (results[@" email" ] && results[@" email" ][@" success" ] && [results[@" email" ][@" success" ] boolValue ])
2987+ self.CALLBACK_EMAIL_EXTERNAL_USER_ID = @" " ;
2988+ } withFailure: ^(NSError *error) {
2989+ }];
2990+ [UnitTestCommonMethods runBackgroundThreads ];
2991+
2992+ // 5. Make sure last request was external id and the external id being used was an empty string
2993+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequestType , NSStringFromClass ([OSRequestUpdateExternalUserId class ]));
2994+ XCTAssertEqualObjects (OneSignalClientOverrider.lastHTTPRequest [@" external_user_id" ], @" " );
2995+
2996+ // 6. Make sure completion handler was called, push external id is an empty string and email external id is nil since email as never set
2997+ XCTAssertEqual (self.CALLBACK_EXTERNAL_USER_ID , @" " );
2998+ XCTAssertNil (self.CALLBACK_EMAIL_EXTERNAL_USER_ID );
2999+ }
3000+
29193001- (void )testRemoveExternalUserId_forPushAndEmail_withCompletion {
29203002 // 1. Init OneSignal
29213003 [UnitTestCommonMethods initOneSignalAndThreadWait ];
0 commit comments