From 2505e601605c93ec000a94710c821ec4d11f7334 Mon Sep 17 00:00:00 2001 From: Josh Kasten Date: Fri, 3 Sep 2021 13:57:02 -0700 Subject: [PATCH] Test to ensure we register after apns response * This new test is similar to the existing testNotificationPermissionsAcceptedBeforeAddingOneSiganl_waitsForAPNSTokenBeforePlayerCreate test above it however we are testing to ensure we register even when noitification permisions are note enabled. --- iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m b/iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m index 398786cf0..1c102d377 100644 --- a/iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m +++ b/iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m @@ -739,6 +739,30 @@ - (void)testNotificationPermissionsAcceptedBeforeAddingOneSiganl_waitsForAPNSTok XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequest[@"identifier"], @"0000000000000000000000000000000000000000000000000000000000000000"); } +// We don't want wait for the developer to prompt for notifications, just register as as soon as we have an APNS token +- (void)testWaitsForAPNSTokenBeforePlayerCreate { + // 1. Set that notification permissions to unanwsered + UNUserNotificationCenterOverrider.authorizationStatus = [NSNumber numberWithInteger:UNAuthorizationStatusNotDetermined]; + + // 2. Setup delay of APNs reaponse + [UIApplicationOverrider setBlockApnsResponse:true]; + + // 3. Init OneSignal + [UnitTestCommonMethods initOneSignal_andThreadWait]; + [NSObjectOverrider runPendingSelectors]; + + // 4. Don't make a network call right away + XCTAssertNil(OneSignalClientOverrider.lastHTTPRequest); + + // 5. Simulate APNs now giving us a push token + [UIApplicationOverrider setBlockApnsResponse:false]; + [UnitTestCommonMethods runBackgroundThreads]; + + // 6. Ensure we registered with push token and it has the correct notification_types + XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequest[@"notification_types"], @-18); + XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequest[@"identifier"], @"0000000000000000000000000000000000000000000000000000000000000000"); +} + - (void)testNotificationTypesWhenAlreadyAcceptedWithAutoPromptOffOnFristStartPreIos10 { OneSignalHelperOverrider.mockIOSVersion = 9; [UnitTestCommonMethods setCurrentNotificationPermission:true];