From 1bfc0ed48b1628cf06cdd85912bbf3fe402595dc Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Sat, 1 Jun 2019 08:22:24 -0700 Subject: [PATCH 01/13] Add FirebaseAuth test_spec --- .travis.yml | 10 +++ .../Auth/Tests/FIRAuthAPNSTokenManagerTests.m | 14 ++-- Example/Auth/Tests/FIRAuthTests.m | 63 +++++++------- Example/Auth/Tests/FIRAuthURLPresenterTests.m | 6 +- Example/Auth/Tests/FIRUserTests.m | 84 ++++++++++--------- FirebaseAuth.podspec | 37 ++++++++ scripts/if_changed.sh | 4 + 7 files changed, 138 insertions(+), 80 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8d797726212..8422aee6735 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,6 +43,16 @@ jobs: - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCore.podspec --use-libraries - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseCore.podspec --use-modular-headers + - stage: test + env: + - PROJECT=Auth PLATFORM=iOS METHOD=pod-lib-lint + before_install: + - ./scripts/if_changed.sh ./scripts/install_prereqs.sh + script: + - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec + - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --use-libraries + - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --use-modular-headers + - stage: test env: - PROJECT=InstanceID PLATFORM=iOS METHOD=pod-lib-lint diff --git a/Example/Auth/Tests/FIRAuthAPNSTokenManagerTests.m b/Example/Auth/Tests/FIRAuthAPNSTokenManagerTests.m index 79ffb7a7015..691b8527012 100644 --- a/Example/Auth/Tests/FIRAuthAPNSTokenManagerTests.m +++ b/Example/Auth/Tests/FIRAuthAPNSTokenManagerTests.m @@ -124,7 +124,7 @@ - (void)testCallback { OCMExpect([_mockApplication registerForRemoteNotifications]); __block BOOL firstCallbackCalled = NO; [_manager getTokenWithCallback:^(FIRAuthAPNSToken *_Nullable token, NSError *_Nullable error) { - XCTAssertEqualObjects(token.data, _data); + XCTAssertEqualObjects(token.data, self->_data); XCTAssertEqual(token.type, FIRAuthAPNSTokenTypeSandbox); XCTAssertNil(error); firstCallbackCalled = YES; @@ -134,7 +134,7 @@ - (void)testCallback { // Add second callback, which is yet to be called either. __block BOOL secondCallbackCalled = NO; [_manager getTokenWithCallback:^(FIRAuthAPNSToken *_Nullable token, NSError *_Nullable error) { - XCTAssertEqualObjects(token.data, _data); + XCTAssertEqualObjects(token.data, self->_data); XCTAssertEqual(token.type, FIRAuthAPNSTokenTypeSandbox); XCTAssertNil(error); secondCallbackCalled = YES; @@ -157,7 +157,7 @@ - (void)testCallback { // Add third callback, which should be called back immediately. __block BOOL thirdCallbackCalled = NO; [_manager getTokenWithCallback:^(FIRAuthAPNSToken *_Nullable token, NSError *_Nullable error) { - XCTAssertEqualObjects(token.data, _data); + XCTAssertEqualObjects(token.data, self->_data); XCTAssertEqual(token.type, FIRAuthAPNSTokenTypeSandbox); XCTAssertNil(error); thirdCallbackCalled = YES; @@ -167,7 +167,7 @@ - (void)testCallback { // Verify the mock in the main thread. XCTestExpectation *expectation = [self expectationWithDescription:@"verify mock"]; dispatch_async(dispatch_get_main_queue(), ^{ - OCMVerifyAll(_mockApplication); + OCMVerifyAll(self->_mockApplication); [expectation fulfill]; }); [self waitForExpectationsWithTimeout:kExpectationTimeout handler:nil]; @@ -211,7 +211,7 @@ - (void)testCancel { __block BOOL callbackCalled = NO; [_manager getTokenWithCallback:^(FIRAuthAPNSToken *_Nullable token, NSError *_Nullable error) { XCTAssertNil(token); - XCTAssertEqualObjects(error, _error); + XCTAssertEqualObjects(error, self->_error); XCTAssertFalse(callbackCalled); // verify callback is not called twice callbackCalled = YES; }]; @@ -249,7 +249,7 @@ - (void)testLegacyRegistration { #pragma clang diagnostic pop __block BOOL callbackCalled = NO; [_manager getTokenWithCallback:^(FIRAuthAPNSToken *_Nullable token, NSError *_Nullable error) { - XCTAssertEqualObjects(token.data, _data); + XCTAssertEqualObjects(token.data, self->_data); XCTAssertNotEqual(token.type, FIRAuthAPNSTokenTypeUnknown); XCTAssertNil(error); callbackCalled = YES; @@ -263,7 +263,7 @@ - (void)testLegacyRegistration { // Verify the mock in the main thread. XCTestExpectation *expectation = [self expectationWithDescription:@"verify mock"]; dispatch_async(dispatch_get_main_queue(), ^{ - OCMVerifyAll(_mockApplication); + OCMVerifyAll(self->_mockApplication); [expectation fulfill]; }); [self waitForExpectationsWithTimeout:kExpectationTimeout handler:nil]; diff --git a/Example/Auth/Tests/FIRAuthTests.m b/Example/Auth/Tests/FIRAuthTests.m index 7273b85cda5..df16855bb6f 100644 --- a/Example/Auth/Tests/FIRAuthTests.m +++ b/Example/Auth/Tests/FIRAuthTests.m @@ -291,8 +291,6 @@ @interface FIRAuthTests : XCTestCase @property(nonatomic, strong) id mockNotificationManager; /// A partial mock of `[FIRAuth auth].authURLPresenter` @property(nonatomic, strong) id mockAuthURLPresenter; -/// A partial mock of `[UIApplication sharedApplication]` -@property(nonatomic, strong) id mockApplication; /// An application delegate instance returned by `self.mockApplication.delegate` @property(nonatomic, strong) FIRAuthAppDelegate *fakeApplicationDelegate; #endif // TARGET_OS_IOS @@ -336,8 +334,8 @@ - (void)setUp { [GULAppDelegateSwizzler resetProxyOriginalDelegateOnceToken]; self.fakeApplicationDelegate = [[FIRAuthAppDelegate alloc] init]; - self.mockApplication = OCMPartialMock([UIApplication sharedApplication]); - OCMStub([self.mockApplication delegate]).andReturn(self.fakeApplicationDelegate); + [[GULAppDelegateSwizzler sharedApplication] + setDelegate:(id)self.fakeApplicationDelegate]; #endif // TARGET_OS_IOS _mockBackend = OCMProtocolMock(@protocol(FIRAuthBackendImplementation)); @@ -353,7 +351,7 @@ - (void)setUp { XCTAssertNotNil(task); XCTAssert(delay > 0); XCTAssertEqualObjects(FIRAuthGlobalWorkQueue(), queue); - _FIRAuthDispatcherCallback = task; + self->_FIRAuthDispatcherCallback = task; }]; #if TARGET_OS_IOS @@ -376,8 +374,6 @@ - (void)tearDown { self.mockNotificationManager = nil; [self.mockTokenManager stopMocking]; self.mockTokenManager = nil; - [self.mockApplication stopMocking]; - self.mockApplication = nil; self.fakeApplicationDelegate = nil; #endif // TARGET_OS_IOS @@ -406,9 +402,12 @@ - (void)testFetchProvidersForEmailSuccess { }); }); XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdeprecated-declarations" [[FIRAuth auth] fetchProvidersForEmail:kEmail completion:^(NSArray *_Nullable providers, NSError *_Nullable error) { + #pragma clang diagnostic pop XCTAssertTrue([NSThread isMainThread]); XCTAssertEqualObjects(providers, allProviders); XCTAssertNil(error); @@ -458,9 +457,13 @@ - (void)testFetchProvidersForEmailFailure { OCMExpect([_mockBackend createAuthURI:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils tooManyRequestsErrorWithMessage:nil]); XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" [[FIRAuth auth] fetchProvidersForEmail:kEmail completion:^(NSArray *_Nullable providers, NSError *_Nullable error) { + +#pragma clang pop XCTAssertTrue([NSThread isMainThread]); XCTAssertNil(providers); XCTAssertEqual(error.code, FIRAuthErrorCodeTooManyRequests); @@ -2171,8 +2174,8 @@ - (void)testAutomaticTokenRefresh { XCTestExpectation *dispatchAfterExpectation = [self expectationWithDescription:@"dispatchAfterExpectation"]; dispatch_async(FIRAuthGlobalWorkQueue(), ^() { - XCTAssertNotNil(_FIRAuthDispatcherCallback); - _FIRAuthDispatcherCallback(); + XCTAssertNotNil(self->_FIRAuthDispatcherCallback); + self->_FIRAuthDispatcherCallback(); [dispatchAfterExpectation fulfill]; }); [self waitForExpectationsWithTimeout:kExpectationTimeout handler:nil]; @@ -2205,8 +2208,8 @@ - (void)testAutomaticTokenRefreshInvalidTokenFailure { XCTestExpectation *dispatchAfterExpectation = [self expectationWithDescription:@"dispatchAfterExpectation"]; dispatch_async(FIRAuthGlobalWorkQueue(), ^() { - XCTAssertNotNil(_FIRAuthDispatcherCallback); - _FIRAuthDispatcherCallback(); + XCTAssertNotNil(self->_FIRAuthDispatcherCallback); + self->_FIRAuthDispatcherCallback(); [dispatchAfterExpectation fulfill]; }); [self waitForExpectationsWithTimeout:kExpectationTimeout handler:nil]; @@ -2235,9 +2238,9 @@ - (void)testAutomaticTokenRefreshRetry { // Execute saved token refresh task. XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; dispatch_async(FIRAuthGlobalWorkQueue(), ^() { - XCTAssertNotNil(_FIRAuthDispatcherCallback); - _FIRAuthDispatcherCallback(); - _FIRAuthDispatcherCallback = nil; + XCTAssertNotNil(self->_FIRAuthDispatcherCallback); + self->_FIRAuthDispatcherCallback(); + self->_FIRAuthDispatcherCallback = nil; [expectation fulfill]; }); [self waitForExpectationsWithTimeout:kExpectationTimeout handler:nil]; @@ -2253,8 +2256,8 @@ - (void)testAutomaticTokenRefreshRetry { XCTestExpectation *dispatchAfterExpectation = [self expectationWithDescription:@"dispatchAfterExpectation"]; dispatch_async(FIRAuthGlobalWorkQueue(), ^() { - XCTAssertNotNil(_FIRAuthDispatcherCallback); - _FIRAuthDispatcherCallback(); + XCTAssertNotNil(self->_FIRAuthDispatcherCallback); + self->_FIRAuthDispatcherCallback(); [dispatchAfterExpectation fulfill]; }); [self waitForExpectationsWithTimeout:kExpectationTimeout handler:nil]; @@ -2292,8 +2295,8 @@ - (void)testAutoRefreshAppForegroundedNotification { XCTestExpectation *dispatchAfterExpectation = [self expectationWithDescription:@"dispatchAfterExpectation"]; dispatch_async(FIRAuthGlobalWorkQueue(), ^() { - XCTAssertNotNil(_FIRAuthDispatcherCallback); - _FIRAuthDispatcherCallback(); + XCTAssertNotNil(self->_FIRAuthDispatcherCallback); + self->_FIRAuthDispatcherCallback(); [dispatchAfterExpectation fulfill]; }); [self waitForExpectationsWithTimeout:kExpectationTimeout handler:nil]; @@ -2314,7 +2317,7 @@ - (void)testAppDidRegisterForRemoteNotifications_APNSTokenUpdated { return YES; }]]); - [self.fakeApplicationDelegate application:self.mockApplication + [self.fakeApplicationDelegate application:[GULAppDelegateSwizzler sharedApplication] didRegisterForRemoteNotificationsWithDeviceToken:apnsToken]; [self.mockTokenManager verify]; @@ -2325,7 +2328,7 @@ - (void)testAppDidFailToRegisterForRemoteNotifications_TokenManagerCancels { OCMExpect([self.mockTokenManager cancelWithError:error]); - [self.fakeApplicationDelegate application:self.mockApplication + [self.fakeApplicationDelegate application:[GULAppDelegateSwizzler sharedApplication] didFailToRegisterForRemoteNotificationsWithError:error]; [self.mockTokenManager verify]; @@ -2338,7 +2341,7 @@ - (void)testAppDidReceiveRemoteNotification_NotificationManagerHandleCanNotifica #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" - [self.fakeApplicationDelegate application:self.mockApplication + [self.fakeApplicationDelegate application:[GULAppDelegateSwizzler sharedApplication] didReceiveRemoteNotification:notification]; #pragma clang diagnostic pop @@ -2350,7 +2353,7 @@ - (void)testAppDidReceiveRemoteNotificationWithCompletion_NotificationManagerHan OCMExpect([self.mockNotificationManager canHandleNotification:notification]); - [self.fakeApplicationDelegate application:self.mockApplication + [self.fakeApplicationDelegate application:[GULAppDelegateSwizzler sharedApplication] didReceiveRemoteNotification:notification fetchCompletionHandler:^(UIBackgroundFetchResult result) {}]; @@ -2358,15 +2361,17 @@ - (void)testAppDidReceiveRemoteNotificationWithCompletion_NotificationManagerHan } - (void)testAppOpenURL_AuthPresenterCanHandleURL { - NSURL *url = [NSURL URLWithString:@"https://localhost"]; + if (@available(iOS 9.0, *)) { + NSURL *url = [NSURL URLWithString:@"https://localhost"]; - [OCMExpect([self.mockAuthURLPresenter canHandleURL:url]) andReturnValue:@(YES)]; + [OCMExpect([self.mockAuthURLPresenter canHandleURL:url]) andReturnValue:@(YES)]; - XCTAssertTrue([self.fakeApplicationDelegate application:self.mockApplication - openURL:url - options:@{}]); + XCTAssertTrue([self.fakeApplicationDelegate application:[GULAppDelegateSwizzler sharedApplication] + openURL:url + options:@{}]); - [self.mockAuthURLPresenter verify]; + [self.mockAuthURLPresenter verify]; + } } - (void)testAppOpenURLWithSourceApplication_AuthPresenterCanHandleURL { @@ -2376,7 +2381,7 @@ - (void)testAppOpenURLWithSourceApplication_AuthPresenterCanHandleURL { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" - XCTAssertTrue([self.fakeApplicationDelegate application:self.mockApplication + XCTAssertTrue([self.fakeApplicationDelegate application:[GULAppDelegateSwizzler sharedApplication] openURL:url sourceApplication:@"" annotation:[[NSObject alloc] init]]); diff --git a/Example/Auth/Tests/FIRAuthURLPresenterTests.m b/Example/Auth/Tests/FIRAuthURLPresenterTests.m index a4e6c537366..fa295265925 100644 --- a/Example/Auth/Tests/FIRAuthURLPresenterTests.m +++ b/Example/Auth/Tests/FIRAuthURLPresenterTests.m @@ -98,7 +98,7 @@ - (void)testFIRAuthURLPresenterUsingDefaultUIDelegate:(BOOL)usesDefaultUIDelegat [invocation getArgument:&unretainedArgument atIndex:2]; id presentViewController = unretainedArgument; - if ([SFSafariViewController class]) { + if (@available(iOS 9.0, *)) { // SFSafariViewController is available SFSafariViewController *viewController = presentViewController; XCTAssertTrue([viewController isKindOfClass:[SFSafariViewController class]]); XCTAssertEqual(viewController.delegate, presenter); @@ -121,7 +121,7 @@ - (void)testFIRAuthURLPresenterUsingDefaultUIDelegate:(BOOL)usesDefaultUIDelegat OCMVerifyAll(mockUIDelegate); // Pretend dismissing view controller. - OCMExpect([mockUIDelegate dismissViewControllerAnimated:OCMOCK_ANY + OCMExpect([mockUIDelegate dismissViewControllerAnimated:YES completion:OCMOCK_ANY]) .andDo(^(NSInvocation *invocation) { XCTAssertTrue([NSThread isMainThread]); @@ -129,7 +129,7 @@ - (void)testFIRAuthURLPresenterUsingDefaultUIDelegate:(BOOL)usesDefaultUIDelegat // Indices 0 and 1 indicate the hidden arguments self and _cmd. // `completion` is at index 3. [invocation getArgument:&unretainedArgument atIndex:3]; - void (^completion)() = unretainedArgument; + void (^completion)(void) = unretainedArgument; dispatch_async(dispatch_get_main_queue(), completion); }); completionBlockExpectation = [self expectationWithDescription:@"completion callback"]; diff --git a/Example/Auth/Tests/FIRUserTests.m b/Example/Auth/Tests/FIRUserTests.m index 361ad3a41f7..8f0e4471810 100644 --- a/Example/Auth/Tests/FIRUserTests.m +++ b/Example/Auth/Tests/FIRUserTests.m @@ -93,17 +93,19 @@ /** @var kbase64URLEncodedEmail @brief The fake email address with a value containing non-valid base64 encoded characters. - @remarks This is used to ensure that the token parser is able to handle base64 URL enconded - strings. + @remarks This is used to ensure that the token parser is able to handle base64 URL encoded + strings. Note that consecutive question marks in a string without being escaped is not + legal C99. */ -static NSString *const kbase64URLEncodedEmail = @">>>>>>>>????????@gmail.com"; +static NSString *const kbase64URLEncodedEmail = @">>>>>>>>\?\?\?\?\?\?\?\?@gmail.com"; /** @var kbase64URLEncodedAUD @brief The fake AUD with a value containing non-valid base64 encoded characters. - @remarks This is used to ensure that the token parser is able to handle base64 URL enconded - strings. + @remarks This is used to ensure that the token parser is able to handle base64 URL encoded + strings. Note that consecutive question marks in a string without being escaped is not + legal C99. */ -static NSString *const kbase64URLEncodedAUD = @"??????????>>>>>>>>>>"; +static NSString *const kbase64URLEncodedAUD = @"\?\?\?\?\?\?\?\?\?\?>>>>>>>>>>"; /** @var kAccessTokenLength415 @brief The fake access token with 415 characters in the claims potion of the token. @@ -556,7 +558,7 @@ - (void)testUpdateEmailSuccess { // Pretend that the display name on the server has been changed since last request. [self expectGetAccountInfoWithMockUserInfoResponse:mockUserInfoWithDisplayName(kNewDisplayName)]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRSetAccountInfoRequest *_Nullable request, FIRSetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -606,7 +608,7 @@ - (void)testUpdateEmailWithAuthLinkAccountSuccess { // Pretend that the display name on the server has been changed since last request. [self expectGetAccountInfoWithMockUserInfoResponse:mockUserInfoWithDisplayName(kNewDisplayName)]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRSetAccountInfoRequest *_Nullable request, FIRSetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -651,7 +653,7 @@ - (void)testUpdateEmailFailure { [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils invalidEmailErrorWithMessage:nil]); [user updateEmail:kNewEmail completion:^(NSError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); @@ -680,7 +682,7 @@ - (void)testUpdateEmailAutoSignOut { [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils invalidUserTokenErrorWithMessage:nil]); [user updateEmail:kNewEmail completion:^(NSError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); @@ -747,7 +749,7 @@ - (void)testUpdatePhoneNumberFailure { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { - OCMExpect([_mockBackend verifyPhoneNumber:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend verifyPhoneNumber:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils invalidPhoneNumberErrorWithMessage:nil]); FIRPhoneAuthCredential *credential = [[FIRPhoneAuthProvider provider] credentialWithVerificationID:kVerificationID @@ -776,7 +778,7 @@ - (void)testUpdatePhoneNumberFailureAutoSignOut { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { - OCMExpect([_mockBackend verifyPhoneNumber:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend verifyPhoneNumber:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils userTokenExpiredErrorWithMessage:nil]); FIRPhoneAuthCredential *credential = [[FIRPhoneAuthProvider provider] credentialWithVerificationID:kVerificationID @@ -806,7 +808,7 @@ - (void)testUpdatePasswordSuccess { [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRSetAccountInfoRequest *_Nullable request, FIRSetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -849,7 +851,7 @@ - (void)testUpdatePasswordFailure { [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils requiresRecentLoginErrorWithMessage:nil]); [user updatePassword:kNewPassword completion:^(NSError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); @@ -897,7 +899,7 @@ - (void)testUpdatePasswordFailureAutoSignOut { [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils userDisabledErrorWithMessage:nil]); [user updatePassword:kNewPassword completion:^(NSError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); @@ -924,7 +926,7 @@ - (void)testChangeProfileSuccess { [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRSetAccountInfoRequest *_Nullable request, FIRSetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -971,7 +973,7 @@ - (void)testChangeProfileFailure { [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils tooManyRequestsErrorWithMessage:nil]); FIRUserProfileChangeRequest *profileChange = [user profileChangeRequest]; profileChange.displayName = kNewDisplayName; @@ -1000,7 +1002,7 @@ - (void)testChangeProfileFailureAutoSignOut { [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils userNotFoundErrorWithMessage:nil]); FIRUserProfileChangeRequest *profileChange = [user profileChangeRequest]; profileChange.displayName = kNewDisplayName; @@ -1102,7 +1104,7 @@ - (void)testGetIDTokenResultSuccessWithBase64EncodedURL { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { - OCMExpect([_mockBackend secureToken:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend secureToken:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRSecureTokenRequest *_Nullable request, FIRSecureTokenResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -1127,7 +1129,7 @@ - (void)testGetIDTokenResultSuccessWithBase64EncodedURL { XCTAssertTrue(tokenResult.claims && [tokenResult.claims isKindOfClass:[NSDictionary class]]); NSDictionary *claims = tokenResult.claims; XCTAssertEqualObjects(claims[@"email"], kbase64URLEncodedEmail); - XCTAssertEqualObjects(claims[@"aud"], kbase64URLEncodedAUD); + XCTAssertEqualObjects(claims[@"aud"], kbase64URLEncodedAUD); [expectation fulfill]; }]; }]; @@ -1147,7 +1149,7 @@ - (void)testGetIDTokenResultForcingRefreshFailure { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { - OCMExpect([_mockBackend secureToken:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend secureToken:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRSecureTokenRequest *_Nullable request, FIRSecureTokenResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -1181,7 +1183,7 @@ - (void)testReloadFailure { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { - OCMExpect([_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils quotaExceededErrorWithMessage:nil]); [user reloadWithCompletion:^(NSError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); @@ -1205,7 +1207,7 @@ - (void)testReloadFailureAutoSignOut { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { - OCMExpect([_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andDispatchError2([FIRAuthErrorUtils userTokenExpiredErrorWithMessage:nil]); [user reloadWithCompletion:^(NSError *_Nullable error) { XCTAssertTrue([NSThread isMainThread]); @@ -1230,7 +1232,7 @@ - (void)testReauthenticateSuccess { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { - OCMExpect([_mockBackend verifyPassword:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend verifyPassword:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRVerifyPasswordRequest *_Nullable request, FIRVerifyPasswordResponseCallback callback) { dispatch_async(FIRAuthGlobalWorkQueue(), ^() { @@ -1243,7 +1245,7 @@ - (void)testReauthenticateSuccess { callback(mockVeriyPasswordResponse, nil); }); }); - OCMExpect([_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRGetAccountInfoRequest *_Nullable request, FIRGetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -1343,7 +1345,7 @@ - (void)testReauthenticateFailure { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { - OCMExpect([_mockBackend verifyPassword:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend verifyPassword:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRVerifyPasswordRequest *_Nullable request, FIRVerifyPasswordResponseCallback callback) { dispatch_async(FIRAuthGlobalWorkQueue(), ^() { @@ -1355,7 +1357,7 @@ - (void)testReauthenticateFailure { callback(mockVeriyPasswordResponse, nil); }); }); - OCMExpect([_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRGetAccountInfoRequest *_Nullable request, FIRGetAccountInfoResponseCallback callback) { dispatch_async(FIRAuthGlobalWorkQueue(), ^() { @@ -1400,7 +1402,7 @@ - (void)testReauthenticateUserMismatchFailure { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { - OCMExpect([_mockBackend verifyAssertion:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend verifyAssertion:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRVerifyAssertionRequest *_Nullable request, FIRVerifyAssertionResponseCallback callback) { dispatch_async(FIRAuthGlobalWorkQueue(), ^() { @@ -1510,7 +1512,7 @@ - (void)testlinkAndRetrieveDataError { XCTAssertEqualObjects(authResult.additionalUserInfo.providerID, FIRFacebookAuthProviderID); XCTAssertNil(error); - OCMExpect([_mockBackend verifyAssertion:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend verifyAssertion:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRVerifyAssertionRequest *_Nullable request, FIRVerifyAssertionResponseCallback callback) { dispatch_async(FIRAuthGlobalWorkQueue(), ^() { @@ -1603,7 +1605,7 @@ - (void)testlinkAndRetrieveDataErrorAutoSignOut { XCTAssertEqualObjects(authResult.additionalUserInfo.providerID, FIRFacebookAuthProviderID); XCTAssertNil(error); - OCMExpect([_mockBackend verifyAssertion:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend verifyAssertion:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRVerifyAssertionRequest *_Nullable request, FIRVerifyAssertionResponseCallback callback) { dispatch_async(FIRAuthGlobalWorkQueue(), ^() { @@ -1662,7 +1664,7 @@ - (void)testlinkEmailAndRetrieveDataSuccess { [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRSetAccountInfoRequest *_Nullable request, FIRSetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -1729,7 +1731,7 @@ - (void)testlinkEmailProviderAlreadyLinkedError { [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; [self expectGetAccountInfoWithMockUserInfoResponse:mockGetAccountInfoResponseUser]; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRSetAccountInfoRequest *_Nullable request, FIRSetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -1794,7 +1796,7 @@ - (void)testlinkEmailAndRetrieveDataError { XCTAssertEqualObjects(authResult.additionalUserInfo.providerID, FIRFacebookAuthProviderID); XCTAssertNil(error); - OCMExpect([_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRGetAccountInfoRequest *_Nullable request, FIRGetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -1846,7 +1848,7 @@ - (void)testlinkEmailAndRetrieveDataErrorAutoSignOut { XCTAssertEqualObjects(authResult.additionalUserInfo.providerID, FIRFacebookAuthProviderID); XCTAssertNil(error); - OCMExpect([_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRGetAccountInfoRequest *_Nullable request, FIRGetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -1948,7 +1950,7 @@ - (void)testlinkCredentialError { XCTAssertEqualObjects(authResult.additionalUserInfo.providerID, FIRFacebookAuthProviderID); XCTAssertNil(error); - OCMExpect([_mockBackend verifyAssertion:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend verifyAssertion:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRVerifyAssertionRequest *_Nullable request, FIRVerifyAssertionResponseCallback callback) { dispatch_async(FIRAuthGlobalWorkQueue(), ^() { @@ -2075,7 +2077,7 @@ - (void)testUnlinkPhoneAuthCredentialSuccess { return mockGetAccountInfoResponseUser; }; - OCMExpect([_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend setAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRSetAccountInfoRequest *_Nullable request, FIRSetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -2177,7 +2179,7 @@ - (void)testlinkPhoneCredentialAlreadyExistsError { }; void (^expectVerifyPhoneNumberRequest)(NSString *) = ^(NSString *phoneNumber) { - OCMExpect([_mockBackend verifyPhoneNumber:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend verifyPhoneNumber:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRVerifyPhoneNumberRequest *_Nullable request, FIRVerifyPhoneNumberResponseCallback callback) { XCTAssertEqualObjects(request.verificationID, kVerificationID); @@ -2236,7 +2238,7 @@ - (void)getIDTokenResultForcingRefreshSuccessWithIDToken:(NSString *)idToken { XCTestExpectation *expectation = [self expectationWithDescription:@"callback"]; [self signInWithEmailPasswordWithMockUserInfoResponse:mockGetAccountInfoResponseUser completion:^(FIRUser *user) { - OCMExpect([_mockBackend secureToken:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend secureToken:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRSecureTokenRequest *_Nullable request, FIRSecureTokenResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -2360,7 +2362,7 @@ - (void)signInWithEmailLinkWithMockUserInfoResponse:(id)mockUserInfoResponse @param mockUserInfoResponse A mock @c FIRGetAccountInfoResponseUser object containing user info. */ - (void)expectGetAccountInfoWithMockUserInfoResponse:(id)mockUserInfoResponse { - OCMExpect([_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRGetAccountInfoRequest *_Nullable request, FIRGetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -2442,7 +2444,7 @@ - (void)assertUserFacebook:(FIRUser *)user { - (void)expectGetAccountInfo:(NSString *)providerId federatedID:(NSString *)federatedID displayName:(NSString *)displayName { - OCMExpect([_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend getAccountInfo:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRGetAccountInfoRequest *_Nullable request, FIRGetAccountInfoResponseCallback callback) { XCTAssertEqualObjects(request.APIKey, kAPIKey); @@ -2510,7 +2512,7 @@ - (void)expectVerifyAssertionRequest:(NSString *)providerId - (void)expectVerifyPhoneNumberRequestWithPhoneNumber:(nullable NSString *)phoneNumber isLinkOperation:(BOOL)isLinkOperation error:(nullable NSError*)error { - OCMExpect([_mockBackend verifyPhoneNumber:[OCMArg any] callback:[OCMArg any]]) + OCMExpect([self->_mockBackend verifyPhoneNumber:[OCMArg any] callback:[OCMArg any]]) .andCallBlock2(^(FIRVerifyPhoneNumberRequest *_Nullable request, FIRVerifyPhoneNumberResponseCallback callback) { XCTAssertEqualObjects(request.verificationID, kVerificationID); diff --git a/FirebaseAuth.podspec b/FirebaseAuth.podspec index 77050940206..7362f06d3da 100644 --- a/FirebaseAuth.podspec +++ b/FirebaseAuth.podspec @@ -66,4 +66,41 @@ supports email and password accounts, as well as several 3rd party authenticatio s.dependency 'GoogleUtilities/AppDelegateSwizzler', '~> 6.2' s.dependency 'GoogleUtilities/Environment', '~> 6.2' s.dependency 'GTMSessionFetcher/Core', '~> 1.1' + + s.test_spec 'unit' do |unit_tests| + unit_tests.source_files = 'Example/Auth/Tests/*.[mh]' + unit_tests.osx.exclude_files = [ + 'Example/Auth/Tests/FIRAuthAPNSTokenManagerTests.m', + 'Example/Auth/Tests/FIRAuthAPNSTokenTests.m', + 'Example/Auth/Tests/FIRAuthAppCredentialManagerTests.m', + 'Example/Auth/Tests/FIRAuthNotificationManagerTests.m', + 'Example/Auth/Tests/FIRAuthURLPresenterTests.m', + 'Example/Auth/Tests/FIREmailLink*', + 'Example/Auth/Tests/FIRPhoneAuthProviderTests.m', + 'Example/Auth/Tests/FIRSendVerificationCode*', + 'Example/Auth/Tests/FIRSignInWithGameCenterTests.m', + 'Example/Auth/Tests/FIRVerifyClient*', + 'Example/Auth/Tests/FIRVerifyPhoneNumber*', + 'Example/Auth/Tests/FIROAuthProviderTests.m', + ] + unit_tests.tvos.exclude_files = [ + 'Example/Auth/Tests/FIRAuthAPNSTokenManagerTests.m', + 'Example/Auth/Tests/FIRAuthNotificationManagerTests.m', + 'Example/Auth/Tests/FIRAuthURLPresenterTests.m', + 'Example/Auth/Tests/FIREmailLink*', + 'Example/Auth/Tests/FIRPhoneAuthProviderTests.m', + 'Example/Auth/Tests/FIRSendVerificationCode*', + 'Example/Auth/Tests/FIRSignInWithGameCenterTests.m', + 'Example/Auth/Tests/FIRVerifyClient*', + 'Example/Auth/Tests/FIRVerifyPhoneNumber*', + 'Example/Auth/Tests/FIROAuthProviderTests.m', + ] + # app_host is needed for tests with keychain + unit_tests.requires_app_host = true + unit_tests.pod_target_xcconfig = { + # Unit tests do library imports using Firebase/Auth/Source recursive relative paths. + 'HEADER_SEARCH_PATHS' => '"${PODS_TARGET_SRCROOT}"/Firebase/Auth/Source/**', + } + unit_tests.dependency 'OCMock' + end end diff --git a/scripts/if_changed.sh b/scripts/if_changed.sh index 6a89d2d6900..ba88c00cafb 100755 --- a/scripts/if_changed.sh +++ b/scripts/if_changed.sh @@ -70,6 +70,10 @@ else check_changes '^(Firebase/Core|Example/Core/Tests|GoogleUtilities|FirebaseCore.podspec)' ;; + Auth-*) + check_changes '^(Firebase/Core|Firebase/Auth|Example/Auth|GoogleUtilities|FirebaseAuth.podspec)' + ;; + Database-*) check_changes '^(Firebase/Core|Firebase/Database|Example/Database|GoogleUtilities|FirebaseDatabase.podspec)' ;; From e6f15cad26aa94f02653f835234e48a37fee9914 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Sat, 1 Jun 2019 11:58:42 -0700 Subject: [PATCH 02/13] Standalone build of Auth Sample --- .travis.yml | 2 - .../AuthSample.xcodeproj/project.pbxproj | 502 ++++++++++++++++++ Example/Auth/AuthSample/Podfile | 30 ++ 3 files changed, 532 insertions(+), 2 deletions(-) create mode 100644 Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj create mode 100644 Example/Auth/AuthSample/Podfile diff --git a/.travis.yml b/.travis.yml index 8422aee6735..04776b6bc6a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -148,7 +148,6 @@ jobs: - ./scripts/if_changed.sh ./scripts/install_prereqs.sh script: - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAnalyticsInterop.podspec - - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuthInterop.podspec - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInAppMessagingDisplay.podspec @@ -172,7 +171,6 @@ jobs: - ./scripts/install_prereqs.sh script: - travis_retry ./scripts/pod_lib_lint.rb FirebaseAnalyticsInterop.podspec --use-libraries - - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --use-libraries - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuthInterop.podspec --use-libraries - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-libraries - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessagingDisplay.podspec --use-libraries diff --git a/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj b/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..d909bab35d6 --- /dev/null +++ b/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj @@ -0,0 +1,502 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXBuildFile section */ + DE800B4722A2F8AF00AC9A23 /* MainViewController+Custom.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B1122A2F8AF00AC9A23 /* MainViewController+Custom.m */; }; + DE800B4822A2F8AF00AC9A23 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B1222A2F8AF00AC9A23 /* SettingsViewController.m */; }; + DE800B4922A2F8AF00AC9A23 /* MainViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = DE800B1322A2F8AF00AC9A23 /* MainViewController.xib */; }; + DE800B4A22A2F8AF00AC9A23 /* GoogleAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B1422A2F8AF00AC9A23 /* GoogleAuthProvider.m */; }; + DE800B4B22A2F8AF00AC9A23 /* MainViewController+User.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B1822A2F8AF00AC9A23 /* MainViewController+User.m */; }; + DE800B4C22A2F8AF00AC9A23 /* MainViewController+GameCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B1922A2F8AF00AC9A23 /* MainViewController+GameCenter.m */; }; + DE800B4D22A2F8AF00AC9A23 /* MainViewController+Phone.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B1A22A2F8AF00AC9A23 /* MainViewController+Phone.m */; }; + DE800B4E22A2F8AF00AC9A23 /* UserTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B1B22A2F8AF00AC9A23 /* UserTableViewCell.m */; }; + DE800B4F22A2F8AF00AC9A23 /* MainViewController+Facebook.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B1C22A2F8AF00AC9A23 /* MainViewController+Facebook.m */; }; + DE800B5022A2F8AF00AC9A23 /* UIViewController+Alerts.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B2022A2F8AF00AC9A23 /* UIViewController+Alerts.m */; }; + DE800B5122A2F8AF00AC9A23 /* MainViewController+Email.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B2222A2F8AF00AC9A23 /* MainViewController+Email.m */; }; + DE800B5222A2F8AF00AC9A23 /* MainViewController+Auth.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B2322A2F8AF00AC9A23 /* MainViewController+Auth.m */; }; + DE800B5422A2F8AF00AC9A23 /* UserInfoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = DE800B2822A2F8AF00AC9A23 /* UserInfoViewController.xib */; }; + DE800B5522A2F8AF00AC9A23 /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B2922A2F8AF00AC9A23 /* MainViewController.m */; }; + DE800B5622A2F8AF00AC9A23 /* MainViewController+AutoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B2B22A2F8AF00AC9A23 /* MainViewController+AutoTests.m */; }; + DE800B5722A2F8AF00AC9A23 /* MainViewController+OOB.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B2C22A2F8AF00AC9A23 /* MainViewController+OOB.m */; }; + DE800B5822A2F8AF00AC9A23 /* AppManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B2D22A2F8AF00AC9A23 /* AppManager.m */; }; + DE800B5922A2F8AF00AC9A23 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B2E22A2F8AF00AC9A23 /* main.m */; }; + DE800B5A22A2F8AF00AC9A23 /* MainViewController+App.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B2F22A2F8AF00AC9A23 /* MainViewController+App.m */; }; + DE800B5B22A2F8AF00AC9A23 /* MainViewController+OAuth.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B3122A2F8AF00AC9A23 /* MainViewController+OAuth.m */; }; + DE800B5C22A2F8AF00AC9A23 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DE800B3222A2F8AF00AC9A23 /* Images.xcassets */; }; + DE800B5D22A2F8AF00AC9A23 /* UserInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B3422A2F8AF00AC9A23 /* UserInfoViewController.m */; }; + DE800B5E22A2F8AF00AC9A23 /* StaticContentTableViewManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B3622A2F8AF00AC9A23 /* StaticContentTableViewManager.m */; }; + DE800B5F22A2F8AF00AC9A23 /* MainViewController+Google.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B3922A2F8AF00AC9A23 /* MainViewController+Google.m */; }; + DE800B6022A2F8AF00AC9A23 /* FacebookAuthProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B3B22A2F8AF00AC9A23 /* FacebookAuthProvider.m */; }; + DE800B6122A2F8AF00AC9A23 /* ApplicationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B3C22A2F8AF00AC9A23 /* ApplicationDelegate.m */; }; + DE800B6222A2F8AF00AC9A23 /* CustomTokenDataEntryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B3D22A2F8AF00AC9A23 /* CustomTokenDataEntryViewController.m */; }; + DE800B6322A2F8AF00AC9A23 /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = DE800B4122A2F8AF00AC9A23 /* SettingsViewController.xib */; }; + DE800B6422A2F8AF00AC9A23 /* AuthProviders.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B4522A2F8AF00AC9A23 /* AuthProviders.m */; }; + DE800B6722A2FF7300AC9A23 /* GoogleService-Info_multi.plist in Resources */ = {isa = PBXBuildFile; fileRef = DE800B6522A2FF7300AC9A23 /* GoogleService-Info_multi.plist */; }; + DE800B6822A2FF7300AC9A23 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = DE800B6622A2FF7300AC9A23 /* GoogleService-Info.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + DE800AF422A2F87E00AC9A23 /* AuthSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AuthSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DE800B0E22A2F8AF00AC9A23 /* AppManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppManager.h; sourceTree = ""; }; + DE800B0F22A2F8AF00AC9A23 /* MainViewController+AutoTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+AutoTests.h"; sourceTree = ""; }; + DE800B1022A2F8AF00AC9A23 /* MainViewController+OOB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+OOB.h"; sourceTree = ""; }; + DE800B1122A2F8AF00AC9A23 /* MainViewController+Custom.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+Custom.m"; sourceTree = ""; }; + DE800B1222A2F8AF00AC9A23 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = ""; }; + DE800B1322A2F8AF00AC9A23 /* MainViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainViewController.xib; sourceTree = ""; }; + DE800B1422A2F8AF00AC9A23 /* GoogleAuthProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GoogleAuthProvider.m; sourceTree = ""; }; + DE800B1522A2F8AF00AC9A23 /* UserInfoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserInfoViewController.h; sourceTree = ""; }; + DE800B1622A2F8AF00AC9A23 /* MainViewController+OAuth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+OAuth.h"; sourceTree = ""; }; + DE800B1722A2F8AF00AC9A23 /* MainViewController+App.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+App.h"; sourceTree = ""; }; + DE800B1822A2F8AF00AC9A23 /* MainViewController+User.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+User.m"; sourceTree = ""; }; + DE800B1922A2F8AF00AC9A23 /* MainViewController+GameCenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+GameCenter.m"; sourceTree = ""; }; + DE800B1A22A2F8AF00AC9A23 /* MainViewController+Phone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+Phone.m"; sourceTree = ""; }; + DE800B1B22A2F8AF00AC9A23 /* UserTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserTableViewCell.m; sourceTree = ""; }; + DE800B1C22A2F8AF00AC9A23 /* MainViewController+Facebook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+Facebook.m"; sourceTree = ""; }; + DE800B1D22A2F8AF00AC9A23 /* CustomTokenDataEntryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomTokenDataEntryViewController.h; sourceTree = ""; }; + DE800B1E22A2F8AF00AC9A23 /* FacebookAuthProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FacebookAuthProvider.h; sourceTree = ""; }; + DE800B1F22A2F8AF00AC9A23 /* ApplicationDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationDelegate.h; sourceTree = ""; }; + DE800B2022A2F8AF00AC9A23 /* UIViewController+Alerts.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIViewController+Alerts.m"; sourceTree = ""; }; + DE800B2122A2F8AF00AC9A23 /* MainViewController+Google.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+Google.h"; sourceTree = ""; }; + DE800B2222A2F8AF00AC9A23 /* MainViewController+Email.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+Email.m"; sourceTree = ""; }; + DE800B2322A2F8AF00AC9A23 /* MainViewController+Auth.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+Auth.m"; sourceTree = ""; }; + DE800B2422A2F8AF00AC9A23 /* StaticContentTableViewManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StaticContentTableViewManager.h; sourceTree = ""; }; + DE800B2522A2F8AF00AC9A23 /* SampleTemplate.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = SampleTemplate.entitlements; sourceTree = ""; }; + DE800B2622A2F8AF00AC9A23 /* AuthProviders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthProviders.h; sourceTree = ""; }; + DE800B2722A2F8AF00AC9A23 /* ApplicationTemplate.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ApplicationTemplate.plist; sourceTree = ""; }; + DE800B2822A2F8AF00AC9A23 /* UserInfoViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UserInfoViewController.xib; sourceTree = ""; }; + DE800B2922A2F8AF00AC9A23 /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = ""; }; + DE800B2A22A2F8AF00AC9A23 /* MainViewController+Custom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+Custom.h"; sourceTree = ""; }; + DE800B2B22A2F8AF00AC9A23 /* MainViewController+AutoTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+AutoTests.m"; sourceTree = ""; }; + DE800B2C22A2F8AF00AC9A23 /* MainViewController+OOB.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+OOB.m"; sourceTree = ""; }; + DE800B2D22A2F8AF00AC9A23 /* AppManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppManager.m; sourceTree = ""; }; + DE800B2E22A2F8AF00AC9A23 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + DE800B2F22A2F8AF00AC9A23 /* MainViewController+App.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+App.m"; sourceTree = ""; }; + DE800B3022A2F8AF00AC9A23 /* MainViewController+Internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+Internal.h"; sourceTree = ""; }; + DE800B3122A2F8AF00AC9A23 /* MainViewController+OAuth.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+OAuth.m"; sourceTree = ""; }; + DE800B3222A2F8AF00AC9A23 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + DE800B3322A2F8AF00AC9A23 /* GoogleAuthProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GoogleAuthProvider.h; sourceTree = ""; }; + DE800B3422A2F8AF00AC9A23 /* UserInfoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserInfoViewController.m; sourceTree = ""; }; + DE800B3522A2F8AF00AC9A23 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = ""; }; + DE800B3622A2F8AF00AC9A23 /* StaticContentTableViewManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StaticContentTableViewManager.m; sourceTree = ""; }; + DE800B3722A2F8AF00AC9A23 /* MainViewController+Email.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+Email.h"; sourceTree = ""; }; + DE800B3822A2F8AF00AC9A23 /* MainViewController+Auth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+Auth.h"; sourceTree = ""; }; + DE800B3922A2F8AF00AC9A23 /* MainViewController+Google.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MainViewController+Google.m"; sourceTree = ""; }; + DE800B3A22A2F8AF00AC9A23 /* UIViewController+Alerts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIViewController+Alerts.h"; sourceTree = ""; }; + DE800B3B22A2F8AF00AC9A23 /* FacebookAuthProvider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FacebookAuthProvider.m; sourceTree = ""; }; + DE800B3C22A2F8AF00AC9A23 /* ApplicationDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ApplicationDelegate.m; sourceTree = ""; }; + DE800B3D22A2F8AF00AC9A23 /* CustomTokenDataEntryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CustomTokenDataEntryViewController.m; sourceTree = ""; }; + DE800B3E22A2F8AF00AC9A23 /* MainViewController+Facebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+Facebook.h"; sourceTree = ""; }; + DE800B3F22A2F8AF00AC9A23 /* MainViewController+Phone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+Phone.h"; sourceTree = ""; }; + DE800B4022A2F8AF00AC9A23 /* UserTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserTableViewCell.h; sourceTree = ""; }; + DE800B4122A2F8AF00AC9A23 /* SettingsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingsViewController.xib; sourceTree = ""; }; + DE800B4222A2F8AF00AC9A23 /* MainViewController+GameCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+GameCenter.h"; sourceTree = ""; }; + DE800B4322A2F8AF00AC9A23 /* MainViewController+User.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MainViewController+User.h"; sourceTree = ""; }; + DE800B4422A2F8AF00AC9A23 /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = ""; }; + DE800B4522A2F8AF00AC9A23 /* AuthProviders.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AuthProviders.m; sourceTree = ""; }; + DE800B4622A2F8AF00AC9A23 /* AuthCredentialsTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthCredentialsTemplate.h; sourceTree = ""; }; + DE800B6522A2FF7300AC9A23 /* GoogleService-Info_multi.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info_multi.plist"; sourceTree = ""; }; + DE800B6622A2FF7300AC9A23 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + DE800B6922A2FF8700AC9A23 /* Application.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Application.plist; sourceTree = ""; }; + DE800B6A22A2FF8700AC9A23 /* Sample.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Sample.entitlements; sourceTree = ""; }; + DE800B6C22A2FFFF00AC9A23 /* AuthCredentials.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthCredentials.h; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + DE800AF122A2F87E00AC9A23 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + A00A0EC6CCFF06F1AC46A4F9 /* Pods */ = { + isa = PBXGroup; + children = ( + ); + path = Pods; + sourceTree = ""; + }; + DE800AEB22A2F87E00AC9A23 = { + isa = PBXGroup; + children = ( + DE800B0D22A2F8AF00AC9A23 /* Sample */, + DE800AF522A2F87E00AC9A23 /* Products */, + A00A0EC6CCFF06F1AC46A4F9 /* Pods */, + ); + sourceTree = ""; + }; + DE800AF522A2F87E00AC9A23 /* Products */ = { + isa = PBXGroup; + children = ( + DE800AF422A2F87E00AC9A23 /* AuthSample.app */, + ); + name = Products; + sourceTree = ""; + }; + DE800B0D22A2F8AF00AC9A23 /* Sample */ = { + isa = PBXGroup; + children = ( + DE800B6C22A2FFFF00AC9A23 /* AuthCredentials.h */, + DE800B6922A2FF8700AC9A23 /* Application.plist */, + DE800B6A22A2FF8700AC9A23 /* Sample.entitlements */, + DE800B6522A2FF7300AC9A23 /* GoogleService-Info_multi.plist */, + DE800B6622A2FF7300AC9A23 /* GoogleService-Info.plist */, + DE800B0E22A2F8AF00AC9A23 /* AppManager.h */, + DE800B0F22A2F8AF00AC9A23 /* MainViewController+AutoTests.h */, + DE800B1022A2F8AF00AC9A23 /* MainViewController+OOB.h */, + DE800B1122A2F8AF00AC9A23 /* MainViewController+Custom.m */, + DE800B1222A2F8AF00AC9A23 /* SettingsViewController.m */, + DE800B1322A2F8AF00AC9A23 /* MainViewController.xib */, + DE800B1422A2F8AF00AC9A23 /* GoogleAuthProvider.m */, + DE800B1522A2F8AF00AC9A23 /* UserInfoViewController.h */, + DE800B1622A2F8AF00AC9A23 /* MainViewController+OAuth.h */, + DE800B1722A2F8AF00AC9A23 /* MainViewController+App.h */, + DE800B1822A2F8AF00AC9A23 /* MainViewController+User.m */, + DE800B1922A2F8AF00AC9A23 /* MainViewController+GameCenter.m */, + DE800B1A22A2F8AF00AC9A23 /* MainViewController+Phone.m */, + DE800B1B22A2F8AF00AC9A23 /* UserTableViewCell.m */, + DE800B1C22A2F8AF00AC9A23 /* MainViewController+Facebook.m */, + DE800B1D22A2F8AF00AC9A23 /* CustomTokenDataEntryViewController.h */, + DE800B1E22A2F8AF00AC9A23 /* FacebookAuthProvider.h */, + DE800B1F22A2F8AF00AC9A23 /* ApplicationDelegate.h */, + DE800B2022A2F8AF00AC9A23 /* UIViewController+Alerts.m */, + DE800B2122A2F8AF00AC9A23 /* MainViewController+Google.h */, + DE800B2222A2F8AF00AC9A23 /* MainViewController+Email.m */, + DE800B2322A2F8AF00AC9A23 /* MainViewController+Auth.m */, + DE800B2422A2F8AF00AC9A23 /* StaticContentTableViewManager.h */, + DE800B2522A2F8AF00AC9A23 /* SampleTemplate.entitlements */, + DE800B2622A2F8AF00AC9A23 /* AuthProviders.h */, + DE800B2722A2F8AF00AC9A23 /* ApplicationTemplate.plist */, + DE800B2822A2F8AF00AC9A23 /* UserInfoViewController.xib */, + DE800B2922A2F8AF00AC9A23 /* MainViewController.m */, + DE800B2A22A2F8AF00AC9A23 /* MainViewController+Custom.h */, + DE800B2B22A2F8AF00AC9A23 /* MainViewController+AutoTests.m */, + DE800B2C22A2F8AF00AC9A23 /* MainViewController+OOB.m */, + DE800B2D22A2F8AF00AC9A23 /* AppManager.m */, + DE800B2E22A2F8AF00AC9A23 /* main.m */, + DE800B2F22A2F8AF00AC9A23 /* MainViewController+App.m */, + DE800B3022A2F8AF00AC9A23 /* MainViewController+Internal.h */, + DE800B3122A2F8AF00AC9A23 /* MainViewController+OAuth.m */, + DE800B3222A2F8AF00AC9A23 /* Images.xcassets */, + DE800B3322A2F8AF00AC9A23 /* GoogleAuthProvider.h */, + DE800B3422A2F8AF00AC9A23 /* UserInfoViewController.m */, + DE800B3522A2F8AF00AC9A23 /* SettingsViewController.h */, + DE800B3622A2F8AF00AC9A23 /* StaticContentTableViewManager.m */, + DE800B3722A2F8AF00AC9A23 /* MainViewController+Email.h */, + DE800B3822A2F8AF00AC9A23 /* MainViewController+Auth.h */, + DE800B3922A2F8AF00AC9A23 /* MainViewController+Google.m */, + DE800B3A22A2F8AF00AC9A23 /* UIViewController+Alerts.h */, + DE800B3B22A2F8AF00AC9A23 /* FacebookAuthProvider.m */, + DE800B3C22A2F8AF00AC9A23 /* ApplicationDelegate.m */, + DE800B3D22A2F8AF00AC9A23 /* CustomTokenDataEntryViewController.m */, + DE800B3E22A2F8AF00AC9A23 /* MainViewController+Facebook.h */, + DE800B3F22A2F8AF00AC9A23 /* MainViewController+Phone.h */, + DE800B4022A2F8AF00AC9A23 /* UserTableViewCell.h */, + DE800B4122A2F8AF00AC9A23 /* SettingsViewController.xib */, + DE800B4222A2F8AF00AC9A23 /* MainViewController+GameCenter.h */, + DE800B4322A2F8AF00AC9A23 /* MainViewController+User.h */, + DE800B4422A2F8AF00AC9A23 /* MainViewController.h */, + DE800B4522A2F8AF00AC9A23 /* AuthProviders.m */, + DE800B4622A2F8AF00AC9A23 /* AuthCredentialsTemplate.h */, + ); + name = Sample; + path = ../Sample; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + DE800AF322A2F87E00AC9A23 /* AuthSample */ = { + isa = PBXNativeTarget; + buildConfigurationList = DE800B0A22A2F88000AC9A23 /* Build configuration list for PBXNativeTarget "AuthSample" */; + buildPhases = ( + DE800AF022A2F87E00AC9A23 /* Sources */, + DE800AF122A2F87E00AC9A23 /* Frameworks */, + DE800AF222A2F87E00AC9A23 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AuthSample; + productName = AuthSample; + productReference = DE800AF422A2F87E00AC9A23 /* AuthSample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DE800AEC22A2F87E00AC9A23 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = Firebase; + TargetAttributes = { + DE800AF322A2F87E00AC9A23 = { + CreatedOnToolsVersion = 10.2; + }; + }; + }; + buildConfigurationList = DE800AEF22A2F87E00AC9A23 /* Build configuration list for PBXProject "AuthSample" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = DE800AEB22A2F87E00AC9A23; + productRefGroup = DE800AF522A2F87E00AC9A23 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + DE800AF322A2F87E00AC9A23 /* AuthSample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + DE800AF222A2F87E00AC9A23 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DE800B5422A2F8AF00AC9A23 /* UserInfoViewController.xib in Resources */, + DE800B5C22A2F8AF00AC9A23 /* Images.xcassets in Resources */, + DE800B4922A2F8AF00AC9A23 /* MainViewController.xib in Resources */, + DE800B6722A2FF7300AC9A23 /* GoogleService-Info_multi.plist in Resources */, + DE800B6322A2F8AF00AC9A23 /* SettingsViewController.xib in Resources */, + DE800B6822A2FF7300AC9A23 /* GoogleService-Info.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + DE800AF022A2F87E00AC9A23 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DE800B5722A2F8AF00AC9A23 /* MainViewController+OOB.m in Sources */, + DE800B4E22A2F8AF00AC9A23 /* UserTableViewCell.m in Sources */, + DE800B6422A2F8AF00AC9A23 /* AuthProviders.m in Sources */, + DE800B4F22A2F8AF00AC9A23 /* MainViewController+Facebook.m in Sources */, + DE800B4D22A2F8AF00AC9A23 /* MainViewController+Phone.m in Sources */, + DE800B4722A2F8AF00AC9A23 /* MainViewController+Custom.m in Sources */, + DE800B5A22A2F8AF00AC9A23 /* MainViewController+App.m in Sources */, + DE800B6222A2F8AF00AC9A23 /* CustomTokenDataEntryViewController.m in Sources */, + DE800B6122A2F8AF00AC9A23 /* ApplicationDelegate.m in Sources */, + DE800B4A22A2F8AF00AC9A23 /* GoogleAuthProvider.m in Sources */, + DE800B5B22A2F8AF00AC9A23 /* MainViewController+OAuth.m in Sources */, + DE800B6022A2F8AF00AC9A23 /* FacebookAuthProvider.m in Sources */, + DE800B5922A2F8AF00AC9A23 /* main.m in Sources */, + DE800B5222A2F8AF00AC9A23 /* MainViewController+Auth.m in Sources */, + DE800B5F22A2F8AF00AC9A23 /* MainViewController+Google.m in Sources */, + DE800B5D22A2F8AF00AC9A23 /* UserInfoViewController.m in Sources */, + DE800B4B22A2F8AF00AC9A23 /* MainViewController+User.m in Sources */, + DE800B5522A2F8AF00AC9A23 /* MainViewController.m in Sources */, + DE800B5122A2F8AF00AC9A23 /* MainViewController+Email.m in Sources */, + DE800B5022A2F8AF00AC9A23 /* UIViewController+Alerts.m in Sources */, + DE800B5E22A2F8AF00AC9A23 /* StaticContentTableViewManager.m in Sources */, + DE800B4C22A2F8AF00AC9A23 /* MainViewController+GameCenter.m in Sources */, + DE800B4822A2F8AF00AC9A23 /* SettingsViewController.m in Sources */, + DE800B5622A2F8AF00AC9A23 /* MainViewController+AutoTests.m in Sources */, + DE800B5822A2F8AF00AC9A23 /* AppManager.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + DE800B0822A2F88000AC9A23 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + DE800B0922A2F88000AC9A23 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + DE800B0B22A2F88000AC9A23 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = AuthSample/Dample.entitlements; + CODE_SIGN_STYLE = Automatic; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "\"${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit/FBSDKCoreKit.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/FBSDKLoginKit/FBSDKLoginKit.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAuth/FirebaseAuth.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers\"", + "\"${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers\"", + "\"${PODS_ROOT}/Headers/Public\"", + "\"${PODS_ROOT}/Headers/Public/FirebaseAuthInterop\"", + "${PODS_ROOT}/../../../../Firebase/Auth/Source/**", + ); + INFOPLIST_FILE = ../Sample/Application.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.google.FirebaseExperimental1; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + DE800B0C22A2F88000AC9A23 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = AuthSample/Dample.entitlements; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = ../Sample/Application.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.google.FirebaseExperimental1; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + DE800AEF22A2F87E00AC9A23 /* Build configuration list for PBXProject "AuthSample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DE800B0822A2F88000AC9A23 /* Debug */, + DE800B0922A2F88000AC9A23 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DE800B0A22A2F88000AC9A23 /* Build configuration list for PBXNativeTarget "AuthSample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DE800B0B22A2F88000AC9A23 /* Debug */, + DE800B0C22A2F88000AC9A23 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = DE800AEC22A2F87E00AC9A23 /* Project object */; +} diff --git a/Example/Auth/AuthSample/Podfile b/Example/Auth/AuthSample/Podfile new file mode 100644 index 00000000000..9ad66b3a4c9 --- /dev/null +++ b/Example/Auth/AuthSample/Podfile @@ -0,0 +1,30 @@ +# Uncomment the next two lines for pre-release testing on internal repo +#source 'sso://cpdc-internal/firebase' +#source 'https://github.com/CocoaPods/Specs.git' + +# Uncomment the next two lines for pre-release testing on public repo +source 'https://github.com/Firebase/SpecsStaging.git' +source 'https://github.com/CocoaPods/Specs.git' + +use_frameworks! + +target 'AuthSample' do + platform :ios, '8.0' + pod 'FirebaseCore', :path => '../../../' + pod 'GoogleUtilities', :path => '../../../' + pod 'FirebaseAuth', :path => '../../../' + pod 'FirebaseCore', :path => '../../../' + pod 'FirebaseInstanceID', :path => '../../..' + pod 'FBSDKLoginKit' + pod 'GoogleSignIn' + pod 'GTMSessionFetcher/Core' + + # target 'Auth_ApiTests' do + # inherit! :search_paths + # end + + # target 'Auth_E2eTests' do + # inherit! :search_paths + # pod 'EarlGrey' + # end +end From 83b907d63b3aea89d3252aa62bb33f934c224f4e Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 3 Jun 2019 14:13:42 -0700 Subject: [PATCH 03/13] Add integration tests --- .travis.yml | 18 +- .../AuthSample.xcodeproj/project.pbxproj | 314 +++++++++++++++++- .../xcschemes/AuthSample.xcscheme | 111 +++++++ .../xcschemes/Auth_ApiTests.xcscheme | 66 ++++ .../xcschemes/Auth_E2eTests.xcscheme | 56 ++++ Example/Auth/AuthSample/Podfile | 19 +- scripts/build.sh | 21 ++ scripts/install_prereqs.sh | 6 + 8 files changed, 586 insertions(+), 25 deletions(-) create mode 100644 Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/AuthSample.xcscheme create mode 100644 Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_ApiTests.xcscheme create mode 100644 Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_E2eTests.xcscheme diff --git a/.travis.yml b/.travis.yml index 04776b6bc6a..f97bd2c4a27 100644 --- a/.travis.yml +++ b/.travis.yml @@ -45,13 +45,12 @@ jobs: - stage: test env: - - PROJECT=Auth PLATFORM=iOS METHOD=pod-lib-lint + - PROJECT=Auth PLATFORM=iOS METHOD=xcodebuild before_install: - ./scripts/if_changed.sh ./scripts/install_prereqs.sh script: - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec - - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --use-libraries - - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --use-modular-headers + - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM - stage: test env: @@ -164,16 +163,27 @@ jobs: # pod lib lint to check build and warnings for static library build - only on cron jobs - stage: test - if: type = cron + # Restore before merge + #if: type = cron env: - PROJECT=Firebase PLATFORM=iOS METHOD=pod-lib-lint before_install: - ./scripts/install_prereqs.sh script: + # TODO investigate why macos tests hang for FirebaseAuth - keychain related? + - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --use-libraries --platforms=ios,tvos + - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --use-modular-headers --platforms=ios,tvos + - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --use-libraries --platforms=macos --skip-tests + - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --use-modular-headers --platforms=macos --skip-tests + - travis_retry ./scripts/pod_lib_lint.rb FirebaseAnalyticsInterop.podspec --use-libraries + - travis_retry ./scripts/pod_lib_lint.rb FirebaseAnalyticsInterop.podspec --use-modular-headers - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuthInterop.podspec --use-libraries + - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuthInterop.podspec --use-modular-headers - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-libraries + - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-libraries - use-modular-headers - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessagingDisplay.podspec --use-libraries + - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessagingDisplay.podspec --use-modular-headers - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --use-libraries --platforms=ios - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --use-libraries --platforms=tvos - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --use-libraries --platforms=macos diff --git a/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj b/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj index d909bab35d6..e9b11a6d27e 100644 --- a/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj +++ b/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -38,8 +38,37 @@ DE800B6422A2F8AF00AC9A23 /* AuthProviders.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B4522A2F8AF00AC9A23 /* AuthProviders.m */; }; DE800B6722A2FF7300AC9A23 /* GoogleService-Info_multi.plist in Resources */ = {isa = PBXBuildFile; fileRef = DE800B6522A2FF7300AC9A23 /* GoogleService-Info_multi.plist */; }; DE800B6822A2FF7300AC9A23 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = DE800B6622A2FF7300AC9A23 /* GoogleService-Info.plist */; }; + DE800B8722A592B100AC9A23 /* EmailPasswordAuthTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B7C22A592B100AC9A23 /* EmailPasswordAuthTests.m */; }; + DE800B8822A592B100AC9A23 /* AccountInfoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B7D22A592B100AC9A23 /* AccountInfoTests.m */; }; + DE800B8922A592B100AC9A23 /* FacebookAuthTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B7F22A592B100AC9A23 /* FacebookAuthTests.m */; }; + DE800B8A22A592B100AC9A23 /* CustomAuthTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B8022A592B100AC9A23 /* CustomAuthTests.m */; }; + DE800B8B22A592B100AC9A23 /* GoogleAuthTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE800B8222A592B100AC9A23 /* GoogleAuthTests.swift */; }; + DE800B8C22A592B100AC9A23 /* AnonymousAuthTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B8322A592B100AC9A23 /* AnonymousAuthTests.m */; }; + DE800B8E22A592B100AC9A23 /* FIRAuthApiTestsBase.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B8522A592B100AC9A23 /* FIRAuthApiTestsBase.m */; }; + DE800B8F22A592B100AC9A23 /* GoogleAuthTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B8622A592B100AC9A23 /* GoogleAuthTests.m */; }; + DE800BA522A5BD4200AC9A23 /* FIRAuthE2eTestsBase.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800B9F22A5BD4200AC9A23 /* FIRAuthE2eTestsBase.m */; }; + DE800BA622A5BD4200AC9A23 /* VerifyIOSClientTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800BA022A5BD4200AC9A23 /* VerifyIOSClientTests.m */; }; + DE800BA822A5BD4200AC9A23 /* BYOAuthTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800BA222A5BD4200AC9A23 /* BYOAuthTests.m */; }; + DE800BA922A5BD4200AC9A23 /* FIRAuthE2eTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DE800BA322A5BD4200AC9A23 /* FIRAuthE2eTests.m */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + DE800B7622A5927C00AC9A23 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DE800AEC22A2F87E00AC9A23 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DE800AF322A2F87E00AC9A23; + remoteInfo = AuthSample; + }; + DE800B9A22A5BD1800AC9A23 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DE800AEC22A2F87E00AC9A23 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DE800AF322A2F87E00AC9A23; + remoteInfo = AuthSample; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ DE800AF422A2F87E00AC9A23 /* AuthSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AuthSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; DE800B0E22A2F8AF00AC9A23 /* AppManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppManager.h; sourceTree = ""; }; @@ -104,6 +133,27 @@ DE800B6922A2FF8700AC9A23 /* Application.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Application.plist; sourceTree = ""; }; DE800B6A22A2FF8700AC9A23 /* Sample.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Sample.entitlements; sourceTree = ""; }; DE800B6C22A2FFFF00AC9A23 /* AuthCredentials.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AuthCredentials.h; sourceTree = ""; }; + DE800B7122A5927C00AC9A23 /* Auth_ApiTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Auth_ApiTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DE800B7B22A592B100AC9A23 /* AuthCredentialsTemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AuthCredentialsTemplate.h; path = ../../ApiTests/AuthCredentialsTemplate.h; sourceTree = ""; }; + DE800B7C22A592B100AC9A23 /* EmailPasswordAuthTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = EmailPasswordAuthTests.m; path = ../../ApiTests/EmailPasswordAuthTests.m; sourceTree = ""; }; + DE800B7D22A592B100AC9A23 /* AccountInfoTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AccountInfoTests.m; path = ../../ApiTests/AccountInfoTests.m; sourceTree = ""; }; + DE800B7E22A592B100AC9A23 /* Auth_ApiTests-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Auth_ApiTests-Bridging-Header.h"; path = "../../ApiTests/Auth_ApiTests-Bridging-Header.h"; sourceTree = ""; }; + DE800B7F22A592B100AC9A23 /* FacebookAuthTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FacebookAuthTests.m; path = ../../ApiTests/FacebookAuthTests.m; sourceTree = ""; }; + DE800B8022A592B100AC9A23 /* CustomAuthTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CustomAuthTests.m; path = ../../ApiTests/CustomAuthTests.m; sourceTree = ""; }; + DE800B8122A592B100AC9A23 /* FIRAuthApiTestsBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FIRAuthApiTestsBase.h; path = ../../ApiTests/FIRAuthApiTestsBase.h; sourceTree = ""; }; + DE800B8222A592B100AC9A23 /* GoogleAuthTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GoogleAuthTests.swift; path = ../../ApiTests/GoogleAuthTests.swift; sourceTree = ""; }; + DE800B8322A592B100AC9A23 /* AnonymousAuthTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AnonymousAuthTests.m; path = ../../ApiTests/AnonymousAuthTests.m; sourceTree = ""; }; + DE800B8422A592B100AC9A23 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../../ApiTests/Info.plist; sourceTree = ""; }; + DE800B8522A592B100AC9A23 /* FIRAuthApiTestsBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FIRAuthApiTestsBase.m; path = ../../ApiTests/FIRAuthApiTestsBase.m; sourceTree = ""; }; + DE800B8622A592B100AC9A23 /* GoogleAuthTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GoogleAuthTests.m; path = ../../ApiTests/GoogleAuthTests.m; sourceTree = ""; }; + DE800B9022A5968800AC9A23 /* AuthCredentials.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AuthCredentials.h; path = ../../ApiTests/AuthCredentials.h; sourceTree = ""; }; + DE800B9522A5BD1800AC9A23 /* Auth_E2eTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Auth_E2eTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DE800B9F22A5BD4200AC9A23 /* FIRAuthE2eTestsBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FIRAuthE2eTestsBase.m; path = ../../E2eTests/FIRAuthE2eTestsBase.m; sourceTree = ""; }; + DE800BA022A5BD4200AC9A23 /* VerifyIOSClientTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VerifyIOSClientTests.m; path = ../../E2eTests/VerifyIOSClientTests.m; sourceTree = ""; }; + DE800BA122A5BD4200AC9A23 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ../../E2eTests/Info.plist; sourceTree = ""; }; + DE800BA222A5BD4200AC9A23 /* BYOAuthTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BYOAuthTests.m; path = ../../E2eTests/BYOAuthTests.m; sourceTree = ""; }; + DE800BA322A5BD4200AC9A23 /* FIRAuthE2eTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FIRAuthE2eTests.m; path = ../../E2eTests/FIRAuthE2eTests.m; sourceTree = ""; }; + DE800BA422A5BD4200AC9A23 /* FIRAuthE2eTestsBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FIRAuthE2eTestsBase.h; path = ../../E2eTests/FIRAuthE2eTestsBase.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -114,6 +164,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DE800B6E22A5927C00AC9A23 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DE800B9222A5BD1800AC9A23 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -128,6 +192,8 @@ isa = PBXGroup; children = ( DE800B0D22A2F8AF00AC9A23 /* Sample */, + DE800B7222A5927C00AC9A23 /* Auth_ApiTests */, + DE800B9622A5BD1800AC9A23 /* Auth_E2eTests */, DE800AF522A2F87E00AC9A23 /* Products */, A00A0EC6CCFF06F1AC46A4F9 /* Pods */, ); @@ -137,6 +203,8 @@ isa = PBXGroup; children = ( DE800AF422A2F87E00AC9A23 /* AuthSample.app */, + DE800B7122A5927C00AC9A23 /* Auth_ApiTests.xctest */, + DE800B9522A5BD1800AC9A23 /* Auth_E2eTests.xctest */, ); name = Products; sourceTree = ""; @@ -211,6 +279,39 @@ path = ../Sample; sourceTree = ""; }; + DE800B7222A5927C00AC9A23 /* Auth_ApiTests */ = { + isa = PBXGroup; + children = ( + DE800B9022A5968800AC9A23 /* AuthCredentials.h */, + DE800B7D22A592B100AC9A23 /* AccountInfoTests.m */, + DE800B8322A592B100AC9A23 /* AnonymousAuthTests.m */, + DE800B7E22A592B100AC9A23 /* Auth_ApiTests-Bridging-Header.h */, + DE800B7B22A592B100AC9A23 /* AuthCredentialsTemplate.h */, + DE800B8022A592B100AC9A23 /* CustomAuthTests.m */, + DE800B7C22A592B100AC9A23 /* EmailPasswordAuthTests.m */, + DE800B7F22A592B100AC9A23 /* FacebookAuthTests.m */, + DE800B8122A592B100AC9A23 /* FIRAuthApiTestsBase.h */, + DE800B8522A592B100AC9A23 /* FIRAuthApiTestsBase.m */, + DE800B8622A592B100AC9A23 /* GoogleAuthTests.m */, + DE800B8222A592B100AC9A23 /* GoogleAuthTests.swift */, + DE800B8422A592B100AC9A23 /* Info.plist */, + ); + path = Auth_ApiTests; + sourceTree = ""; + }; + DE800B9622A5BD1800AC9A23 /* Auth_E2eTests */ = { + isa = PBXGroup; + children = ( + DE800BA222A5BD4200AC9A23 /* BYOAuthTests.m */, + DE800BA322A5BD4200AC9A23 /* FIRAuthE2eTests.m */, + DE800BA422A5BD4200AC9A23 /* FIRAuthE2eTestsBase.h */, + DE800B9F22A5BD4200AC9A23 /* FIRAuthE2eTestsBase.m */, + DE800BA122A5BD4200AC9A23 /* Info.plist */, + DE800BA022A5BD4200AC9A23 /* VerifyIOSClientTests.m */, + ); + path = Auth_E2eTests; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -231,6 +332,42 @@ productReference = DE800AF422A2F87E00AC9A23 /* AuthSample.app */; productType = "com.apple.product-type.application"; }; + DE800B7022A5927C00AC9A23 /* Auth_ApiTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DE800B7A22A5927C00AC9A23 /* Build configuration list for PBXNativeTarget "Auth_ApiTests" */; + buildPhases = ( + DE800B6D22A5927C00AC9A23 /* Sources */, + DE800B6E22A5927C00AC9A23 /* Frameworks */, + DE800B6F22A5927C00AC9A23 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DE800B7722A5927C00AC9A23 /* PBXTargetDependency */, + ); + name = Auth_ApiTests; + productName = Auth_ApiTests; + productReference = DE800B7122A5927C00AC9A23 /* Auth_ApiTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + DE800B9422A5BD1800AC9A23 /* Auth_E2eTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = DE800B9C22A5BD1800AC9A23 /* Build configuration list for PBXNativeTarget "Auth_E2eTests" */; + buildPhases = ( + DE800B9122A5BD1800AC9A23 /* Sources */, + DE800B9222A5BD1800AC9A23 /* Frameworks */, + DE800B9322A5BD1800AC9A23 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DE800B9B22A5BD1800AC9A23 /* PBXTargetDependency */, + ); + name = Auth_E2eTests; + productName = Auth_E2eTests; + productReference = DE800B9522A5BD1800AC9A23 /* Auth_E2eTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -243,6 +380,15 @@ DE800AF322A2F87E00AC9A23 = { CreatedOnToolsVersion = 10.2; }; + DE800B7022A5927C00AC9A23 = { + CreatedOnToolsVersion = 10.2; + LastSwiftMigration = 1020; + TestTargetID = DE800AF322A2F87E00AC9A23; + }; + DE800B9422A5BD1800AC9A23 = { + CreatedOnToolsVersion = 10.2; + TestTargetID = DE800AF322A2F87E00AC9A23; + }; }; }; buildConfigurationList = DE800AEF22A2F87E00AC9A23 /* Build configuration list for PBXProject "AuthSample" */; @@ -259,6 +405,8 @@ projectRoot = ""; targets = ( DE800AF322A2F87E00AC9A23 /* AuthSample */, + DE800B7022A5927C00AC9A23 /* Auth_ApiTests */, + DE800B9422A5BD1800AC9A23 /* Auth_E2eTests */, ); }; /* End PBXProject section */ @@ -277,6 +425,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DE800B6F22A5927C00AC9A23 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DE800B9322A5BD1800AC9A23 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -312,8 +474,47 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DE800B6D22A5927C00AC9A23 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DE800B8A22A592B100AC9A23 /* CustomAuthTests.m in Sources */, + DE800B8C22A592B100AC9A23 /* AnonymousAuthTests.m in Sources */, + DE800B8722A592B100AC9A23 /* EmailPasswordAuthTests.m in Sources */, + DE800B8E22A592B100AC9A23 /* FIRAuthApiTestsBase.m in Sources */, + DE800B8922A592B100AC9A23 /* FacebookAuthTests.m in Sources */, + DE800B8B22A592B100AC9A23 /* GoogleAuthTests.swift in Sources */, + DE800B8F22A592B100AC9A23 /* GoogleAuthTests.m in Sources */, + DE800B8822A592B100AC9A23 /* AccountInfoTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DE800B9122A5BD1800AC9A23 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DE800BA522A5BD4200AC9A23 /* FIRAuthE2eTestsBase.m in Sources */, + DE800BA822A5BD4200AC9A23 /* BYOAuthTests.m in Sources */, + DE800BA922A5BD4200AC9A23 /* FIRAuthE2eTests.m in Sources */, + DE800BA622A5BD4200AC9A23 /* VerifyIOSClientTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + DE800B7722A5927C00AC9A23 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DE800AF322A2F87E00AC9A23 /* AuthSample */; + targetProxy = DE800B7622A5927C00AC9A23 /* PBXContainerItemProxy */; + }; + DE800B9B22A5BD1800AC9A23 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DE800AF322A2F87E00AC9A23 /* AuthSample */; + targetProxy = DE800B9A22A5BD1800AC9A23 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ DE800B0822A2F88000AC9A23 /* Debug */ = { isa = XCBuildConfiguration; @@ -435,16 +636,6 @@ CODE_SIGN_STYLE = Automatic; HEADER_SEARCH_PATHS = ( "$(inherited)", - "\"${PODS_CONFIGURATION_BUILD_DIR}/FBSDKCoreKit/FBSDKCoreKit.framework/Headers\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/FBSDKLoginKit/FBSDKLoginKit.framework/Headers\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseAuth/FirebaseAuth.framework/Headers\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore/FirebaseCore.framework/Headers\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID/FirebaseInstanceID.framework/Headers\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher/GTMSessionFetcher.framework/Headers\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac/GoogleToolboxForMac.framework/Headers\"", - "\"${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities/GoogleUtilities.framework/Headers\"", - "\"${PODS_ROOT}/Headers/Public\"", - "\"${PODS_ROOT}/Headers/Public/FirebaseAuthInterop\"", "${PODS_ROOT}/../../../../Firebase/Auth/Source/**", ); INFOPLIST_FILE = ../Sample/Application.plist; @@ -464,6 +655,10 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = AuthSample/Dample.entitlements; CODE_SIGN_STYLE = Automatic; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "${PODS_ROOT}/../../../../Firebase/Auth/Source/**", + ); INFOPLIST_FILE = ../Sample/Application.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -475,6 +670,85 @@ }; name = Release; }; + DE800B7822A5927C00AC9A23 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = ../ApiTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.auth.Auth-ApiTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "../ApiTests/Auth_ApiTests-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AuthSample.app/AuthSample"; + }; + name = Debug; + }; + DE800B7922A5927C00AC9A23 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = ../ApiTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.auth.Auth-ApiTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "../ApiTests/Auth_ApiTests-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AuthSample.app/AuthSample"; + }; + name = Release; + }; + DE800B9D22A5BD1800AC9A23 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = ../E2eTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.auth.Auth-E2eTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AuthSample.app/AuthSample"; + }; + name = Debug; + }; + DE800B9E22A5BD1800AC9A23 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = ../E2eTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.auth.Auth-E2eTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AuthSample.app/AuthSample"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -496,6 +770,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + DE800B7A22A5927C00AC9A23 /* Build configuration list for PBXNativeTarget "Auth_ApiTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DE800B7822A5927C00AC9A23 /* Debug */, + DE800B7922A5927C00AC9A23 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DE800B9C22A5BD1800AC9A23 /* Build configuration list for PBXNativeTarget "Auth_E2eTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DE800B9D22A5BD1800AC9A23 /* Debug */, + DE800B9E22A5BD1800AC9A23 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = DE800AEC22A2F87E00AC9A23 /* Project object */; diff --git a/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/AuthSample.xcscheme b/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/AuthSample.xcscheme new file mode 100644 index 00000000000..0a6f474c0c5 --- /dev/null +++ b/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/AuthSample.xcscheme @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_ApiTests.xcscheme b/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_ApiTests.xcscheme new file mode 100644 index 00000000000..dacbd71ecb2 --- /dev/null +++ b/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_ApiTests.xcscheme @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_E2eTests.xcscheme b/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_E2eTests.xcscheme new file mode 100644 index 00000000000..d8000aa366e --- /dev/null +++ b/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_E2eTests.xcscheme @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Auth/AuthSample/Podfile b/Example/Auth/AuthSample/Podfile index 9ad66b3a4c9..3d6fedeb769 100644 --- a/Example/Auth/AuthSample/Podfile +++ b/Example/Auth/AuthSample/Podfile @@ -2,9 +2,8 @@ #source 'sso://cpdc-internal/firebase' #source 'https://github.com/CocoaPods/Specs.git' -# Uncomment the next two lines for pre-release testing on public repo -source 'https://github.com/Firebase/SpecsStaging.git' -source 'https://github.com/CocoaPods/Specs.git' +# Comment the following line to use the CocoaPods master repo instead. +source 'https://cdn.jsdelivr.net/cocoa/' use_frameworks! @@ -19,12 +18,12 @@ target 'AuthSample' do pod 'GoogleSignIn' pod 'GTMSessionFetcher/Core' - # target 'Auth_ApiTests' do - # inherit! :search_paths - # end + target 'Auth_ApiTests' do + inherit! :search_paths + end - # target 'Auth_E2eTests' do - # inherit! :search_paths - # pod 'EarlGrey' - # end + target 'Auth_E2eTests' do + inherit! :search_paths + pod 'EarlGrey' + end end diff --git a/scripts/build.sh b/scripts/build.sh index 7125c4cd78d..afac349f891 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -213,6 +213,27 @@ case "$product-$method-$platform" in fi ;; + Auth-xcodebuild-*) + if [[ "$TRAVIS_PULL_REQUEST" == "false" || + "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then + RunXcodebuild \ + -workspace 'Example/Auth/AuthSample/AuthSamplexcworkspace' \ + -scheme "Auth_ApiTests" \ + "${ios_flags[@]}" \ + "${xcb_flags[@]}" \ + build \ + test + + RunXcodebuild \ + -workspace 'Example/Auth/AuthSample/AuthSamplexcworkspace' \ + -scheme "Auth_E2eTests" \ + "${ios_flags[@]}" \ + "${xcb_flags[@]}" \ + build \ + test + fi + ;; + InAppMessaging-xcodebuild-iOS) RunXcodebuild \ -workspace 'InAppMessaging/Example/InAppMessaging-Example-iOS.xcworkspace' \ diff --git a/scripts/install_prereqs.sh b/scripts/install_prereqs.sh index 852ccef6dfd..fe284046147 100755 --- a/scripts/install_prereqs.sh +++ b/scripts/install_prereqs.sh @@ -66,6 +66,12 @@ case "$PROJECT-$PLATFORM-$METHOD" in bundle exec pod install --project-directory=GoogleUtilities/Example ;; + Auth-*) + # Install the workspace for integration testing. + gem install xcpretty + bundle exec pod install --project-directory=Example/Auth/AuthSample --repo-update + ;; + Database-*) # Install the workspace to have better control over test runs than # pod lib lint, since the integration tests can be flaky. From fab2dbff439f54eddd3390f1ee0669a05399bf64 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 3 Jun 2019 15:25:53 -0700 Subject: [PATCH 04/13] split pod lib lint for stability --- .travis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index f97bd2c4a27..27892084969 100644 --- a/.travis.yml +++ b/.travis.yml @@ -49,7 +49,9 @@ jobs: before_install: - ./scripts/if_changed.sh ./scripts/install_prereqs.sh script: - - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec + - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios + - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=tvos + - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=macos - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM - stage: test @@ -181,7 +183,7 @@ jobs: - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuthInterop.podspec --use-libraries - travis_retry ./scripts/pod_lib_lint.rb FirebaseAuthInterop.podspec --use-modular-headers - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-libraries - - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-libraries - use-modular-headers + - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-modular-headers - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessagingDisplay.podspec --use-libraries - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessagingDisplay.podspec --use-modular-headers - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --use-libraries --platforms=ios From 4be50839228474f2062220d3300c64eb43fc4a71 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Tue, 4 Jun 2019 14:56:51 -0700 Subject: [PATCH 05/13] fix typo --- scripts/build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index afac349f891..7b0c1bad8a2 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -217,7 +217,7 @@ case "$product-$method-$platform" in if [[ "$TRAVIS_PULL_REQUEST" == "false" || "$TRAVIS_PULL_REQUEST_SLUG" == "$TRAVIS_REPO_SLUG" ]]; then RunXcodebuild \ - -workspace 'Example/Auth/AuthSample/AuthSamplexcworkspace' \ + -workspace 'Example/Auth/AuthSample/AuthSample.xcworkspace' \ -scheme "Auth_ApiTests" \ "${ios_flags[@]}" \ "${xcb_flags[@]}" \ @@ -225,7 +225,7 @@ case "$product-$method-$platform" in test RunXcodebuild \ - -workspace 'Example/Auth/AuthSample/AuthSamplexcworkspace' \ + -workspace 'Example/Auth/AuthSample/AuthSample.xcworkspace' \ -scheme "Auth_E2eTests" \ "${ios_flags[@]}" \ "${xcb_flags[@]}" \ From c974d6c8a76c9af6b0306840848fdbc180c435c0 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Tue, 4 Jun 2019 15:44:56 -0700 Subject: [PATCH 06/13] Double flag bug --- scripts/build.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/build.sh b/scripts/build.sh index 7b0c1bad8a2..247fbb3b47b 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -219,7 +219,6 @@ case "$product-$method-$platform" in RunXcodebuild \ -workspace 'Example/Auth/AuthSample/AuthSample.xcworkspace' \ -scheme "Auth_ApiTests" \ - "${ios_flags[@]}" \ "${xcb_flags[@]}" \ build \ test @@ -227,7 +226,6 @@ case "$product-$method-$platform" in RunXcodebuild \ -workspace 'Example/Auth/AuthSample/AuthSample.xcworkspace' \ -scheme "Auth_E2eTests" \ - "${ios_flags[@]}" \ "${xcb_flags[@]}" \ build \ test From f17570eb1c911f18b4b71a1b7a8130fd26f8ad77 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Tue, 4 Jun 2019 16:27:36 -0700 Subject: [PATCH 07/13] ios 8.0 --- Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj b/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj index e9b11a6d27e..f5deddb72c9 100644 --- a/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj +++ b/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj @@ -639,6 +639,7 @@ "${PODS_ROOT}/../../../../Firebase/Auth/Source/**", ); INFOPLIST_FILE = ../Sample/Application.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -660,6 +661,7 @@ "${PODS_ROOT}/../../../../Firebase/Auth/Source/**", ); INFOPLIST_FILE = ../Sample/Application.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", From aadda67596c0d0ea5c72f90f67c69364bbc24bc6 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Tue, 4 Jun 2019 17:58:14 -0700 Subject: [PATCH 08/13] scheme fixes --- .../AuthSample.xcodeproj/project.pbxproj | 6 +-- .../xcschemes/Auth_ApiTests.xcscheme | 44 ++++++++++++++----- .../xcschemes/Auth_E2eTests.xcscheme | 34 ++++++++++++++ 3 files changed, 71 insertions(+), 13 deletions(-) diff --git a/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj b/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj index f5deddb72c9..31b38edee32 100644 --- a/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj +++ b/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ @@ -688,7 +688,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "../ApiTests/Auth_ApiTests-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AuthSample.app/AuthSample"; }; @@ -709,7 +709,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.auth.Auth-ApiTests"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "../ApiTests/Auth_ApiTests-Bridging-Header.h"; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AuthSample.app/AuthSample"; }; diff --git a/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_ApiTests.xcscheme b/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_ApiTests.xcscheme index dacbd71ecb2..5c37457aae9 100644 --- a/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_ApiTests.xcscheme +++ b/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_ApiTests.xcscheme @@ -5,6 +5,22 @@ + + + + + + - - - - @@ -46,6 +52,15 @@ debugDocumentVersioning = "YES" debugServiceExtension = "internal" allowLocationSimulation = "YES"> + + + + @@ -55,6 +70,15 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES"> + + + + diff --git a/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_E2eTests.xcscheme b/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_E2eTests.xcscheme index d8000aa366e..e858d48578c 100644 --- a/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_E2eTests.xcscheme +++ b/Example/Auth/AuthSample/AuthSample.xcodeproj/xcshareddata/xcschemes/Auth_E2eTests.xcscheme @@ -5,6 +5,22 @@ + + + + + + + + + + @@ -45,6 +70,15 @@ savedToolIdentifier = "" useCustomWorkingDirectory = "NO" debugDocumentVersioning = "YES"> + + + + From a14c526699087489c8683a0222646ee35360c281 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Wed, 5 Jun 2019 06:33:09 -0700 Subject: [PATCH 09/13] IPHONEOS_DEPLOYMENT_TARGET = 12.1 --- Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj b/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj index 31b38edee32..f3cf7f6a841 100644 --- a/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj +++ b/Example/Auth/AuthSample/AuthSample.xcodeproj/project.pbxproj @@ -567,7 +567,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -620,7 +620,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; From 9fe4812780fca3f79a52569a8c0339a7a7d520db Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Wed, 5 Jun 2019 06:55:31 -0700 Subject: [PATCH 10/13] secrets --- scripts/install_prereqs.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/install_prereqs.sh b/scripts/install_prereqs.sh index fe284046147..368fb441279 100755 --- a/scripts/install_prereqs.sh +++ b/scripts/install_prereqs.sh @@ -70,6 +70,7 @@ case "$PROJECT-$PLATFORM-$METHOD" in # Install the workspace for integration testing. gem install xcpretty bundle exec pod install --project-directory=Example/Auth/AuthSample --repo-update + install_secrets ;; Database-*) From 1113d9c101524f72686ddd53792365c4a7757c1e Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Wed, 5 Jun 2019 09:09:55 -0700 Subject: [PATCH 11/13] Add unit test target to Sample project --- .travis.yml | 3 ++- Example/Auth/AuthSample/Podfile | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 27892084969..8a4e352ab18 100644 --- a/.travis.yml +++ b/.travis.yml @@ -52,7 +52,8 @@ jobs: - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=ios - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=tvos - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseAuth.podspec --platforms=macos - - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM + # TODO (renkelvin) Uncomment next line when Auth backend is fixed to support the integration tests. + # - travis_retry ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM - stage: test env: diff --git a/Example/Auth/AuthSample/Podfile b/Example/Auth/AuthSample/Podfile index 3d6fedeb769..7096d339b71 100644 --- a/Example/Auth/AuthSample/Podfile +++ b/Example/Auth/AuthSample/Podfile @@ -11,7 +11,7 @@ target 'AuthSample' do platform :ios, '8.0' pod 'FirebaseCore', :path => '../../../' pod 'GoogleUtilities', :path => '../../../' - pod 'FirebaseAuth', :path => '../../../' + pod 'FirebaseAuth', :path => '../../../', :testspecs => ['unit'] pod 'FirebaseCore', :path => '../../../' pod 'FirebaseInstanceID', :path => '../../..' pod 'FBSDKLoginKit' From 449da459e09bbeec356154357c952377526e7528 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Wed, 5 Jun 2019 12:17:14 -0700 Subject: [PATCH 12/13] Restore cron tests --- .travis.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8a4e352ab18..4a0f65242d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -166,8 +166,7 @@ jobs: # pod lib lint to check build and warnings for static library build - only on cron jobs - stage: test - # Restore before merge - #if: type = cron + if: type = cron env: - PROJECT=Firebase PLATFORM=iOS METHOD=pod-lib-lint before_install: @@ -187,6 +186,15 @@ jobs: - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessaging.podspec --use-modular-headers - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessagingDisplay.podspec --use-libraries - travis_retry ./scripts/pod_lib_lint.rb FirebaseInAppMessagingDisplay.podspec --use-modular-headers + + # Split from previous stage to avoid overflowing 45 minute sub-job limit. + - stage: test + if: type = cron + env: + - PROJECT=Firebase PLATFORM=iOS METHOD=pod-lib-lint + before_install: + - ./scripts/install_prereqs.sh + script: - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --use-libraries --platforms=ios - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --use-libraries --platforms=tvos - travis_retry ./scripts/if_changed.sh ./scripts/pod_lib_lint.rb FirebaseInstanceID.podspec --use-libraries --platforms=macos From 603adf90c93c3efb36977e6435d33733da870629 Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Wed, 5 Jun 2019 18:06:16 -0700 Subject: [PATCH 13/13] Add comment about ios 9 requirement for a test --- Example/Auth/Tests/FIRAuthTests.m | 1 + 1 file changed, 1 insertion(+) diff --git a/Example/Auth/Tests/FIRAuthTests.m b/Example/Auth/Tests/FIRAuthTests.m index df16855bb6f..bf7a1fe7323 100644 --- a/Example/Auth/Tests/FIRAuthTests.m +++ b/Example/Auth/Tests/FIRAuthTests.m @@ -2362,6 +2362,7 @@ - (void)testAppDidReceiveRemoteNotificationWithCompletion_NotificationManagerHan - (void)testAppOpenURL_AuthPresenterCanHandleURL { if (@available(iOS 9.0, *)) { + // 'application:openURL:options:' is only available on iOS 9.0 or newer. NSURL *url = [NSURL URLWithString:@"https://localhost"]; [OCMExpect([self.mockAuthURLPresenter canHandleURL:url]) andReturnValue:@(YES)];