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];