From 298b8fdc8f600f9f1ef48c9d4c2555fa24eaaec4 Mon Sep 17 00:00:00 2001 From: Brianna Morales <74382627+brnnmrls@users.noreply.github.com> Date: Mon, 18 Nov 2024 14:50:33 -0800 Subject: [PATCH 1/6] Update runner to macos-13. (#498) --- .github/workflows/unit_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 0c0536cf..12009b83 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-12] + os: [macos-13] podspec: [GoogleSignIn.podspec, GoogleSignInSwiftSupport.podspec] flag: [ "", From b1fe052ce4fb0b22ffd28f14c8b3e2baf4cc4e52 Mon Sep 17 00:00:00 2001 From: Brianna Morales <74382627+brnnmrls@users.noreply.github.com> Date: Mon, 25 Nov 2024 11:11:11 -0800 Subject: [PATCH 2/6] Fix swift button integration test. (#497) --- .../DaysUntilBirthdayUITests_iOS.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Samples/Swift/DaysUntilBirthday/DaysUntilBirthdayUITests(iOS)/DaysUntilBirthdayUITests_iOS.swift b/Samples/Swift/DaysUntilBirthday/DaysUntilBirthdayUITests(iOS)/DaysUntilBirthdayUITests_iOS.swift index 7d05239f..cb3cc1e4 100644 --- a/Samples/Swift/DaysUntilBirthday/DaysUntilBirthdayUITests(iOS)/DaysUntilBirthdayUITests_iOS.swift +++ b/Samples/Swift/DaysUntilBirthday/DaysUntilBirthdayUITests(iOS)/DaysUntilBirthdayUITests_iOS.swift @@ -27,7 +27,7 @@ class DaysUntilBirthdayUITests_iOS: XCTestCase { private let appTrustWarningText = "Make sure you trust Days Until Birthday" private let chooseAnAccountHeaderText = "Choose an account" private let notNowText = "Not Now" - private let timeout: TimeInterval = 5 + private let timeout: TimeInterval = 30 private let sampleApp = XCUIApplication() private let springboardApp = XCUIApplication( From 7f3d50519765971034137c05ff6b98b5ce98a4df Mon Sep 17 00:00:00 2001 From: Brianna Morales <74382627+brnnmrls@users.noreply.github.com> Date: Mon, 25 Nov 2024 14:45:09 -0800 Subject: [PATCH 3/6] Update iPhone simulator from 14 to 15. (#494) --- .github/workflows/unit_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 12009b83..19e75f5e 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -45,7 +45,7 @@ jobs: - sdk: 'macosx' destination: '"platform=OS X,arch=x86_64"' - sdk: 'iphonesimulator' - destination: '"platform=iOS Simulator,name=iPhone 14"' + destination: '"platform=iOS Simulator,name=iPhone 15"' steps: - uses: actions/checkout@v3 - name: Build unit test target From f9ee48cc896db9eb1d43eb743869bd006385d740 Mon Sep 17 00:00:00 2001 From: Alvar Hansen Date: Tue, 26 Nov 2024 02:07:35 +0200 Subject: [PATCH 4/6] Fix Undefined symbols issue (#470) Co-authored-by: Yasser Al-Khder Co-authored-by: Brianna Morales <74382627+brnnmrls@users.noreply.github.com> --- Package.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Package.swift b/Package.swift index 5e167e76..4f4d6085 100644 --- a/Package.swift +++ b/Package.swift @@ -71,6 +71,7 @@ let package = Package( name: "GoogleSignIn", dependencies: [ .product(name: "AppAuth", package: "AppAuth"), + .product(name: "AppAuthCore", package: "AppAuth"), .product(name: "AppCheckCore", package: "AppCheck"), .product(name: "GTMAppAuth", package: "GTMAppAuth"), .product(name: "GTMSessionFetcherCore", package: "GTMSessionFetcher"), From a805dbc91a4b28379f7aa6a22c146edf7a3730dd Mon Sep 17 00:00:00 2001 From: brianna Date: Mon, 7 Apr 2025 15:09:47 -0700 Subject: [PATCH 5/6] Remove current user requirement. --- .../Implementations/GIDVerifyAccountDetail.m | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/GoogleSignIn/Sources/GIDVerifyAccountDetail/Implementations/GIDVerifyAccountDetail.m b/GoogleSignIn/Sources/GIDVerifyAccountDetail/Implementations/GIDVerifyAccountDetail.m index 51bacc69..7ff865f4 100644 --- a/GoogleSignIn/Sources/GIDVerifyAccountDetail/Implementations/GIDVerifyAccountDetail.m +++ b/GoogleSignIn/Sources/GIDVerifyAccountDetail/Implementations/GIDVerifyAccountDetail.m @@ -149,8 +149,6 @@ - (void)verifyAccountDetailsInteractivelyWithOptions:(GIDSignInInternalOptions * return; } - [self assertValidCurrentUser]; - // Explicitly throw exception for missing client ID here. This must come before // scheme check because schemes rely on reverse client IDs. [self assertValidParameters:options]; @@ -231,15 +229,6 @@ - (void)processAuthorizationResponse:(OIDAuthorizationResponse *)authorizationRe #pragma mark - Helpers -// Assert that a current user exists. -- (void)assertValidCurrentUser { - if (!GIDSignIn.sharedInstance.currentUser) { - // NOLINTNEXTLINE(google-objc-avoid-throwing-exception) - [NSException raise:NSInvalidArgumentException - format:@"|currentUser| must be set to verify."]; - } -} - // Asserts the parameters being valid. - (void)assertValidParameters:(GIDSignInInternalOptions *)options { if (![options.configuration.clientID length]) { From d57ded4fa60faf27d41372b7a387f94df50e8dc2 Mon Sep 17 00:00:00 2001 From: brianna Date: Wed, 9 Apr 2025 09:53:39 -0700 Subject: [PATCH 6/6] Add integration test for VwG. --- .../DaysUntilBirthdayUITests_iOS.swift | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/Samples/Swift/DaysUntilBirthday/DaysUntilBirthdayUITests(iOS)/DaysUntilBirthdayUITests_iOS.swift b/Samples/Swift/DaysUntilBirthday/DaysUntilBirthdayUITests(iOS)/DaysUntilBirthdayUITests_iOS.swift index cb3cc1e4..7ec038f7 100644 --- a/Samples/Swift/DaysUntilBirthday/DaysUntilBirthdayUITests(iOS)/DaysUntilBirthdayUITests_iOS.swift +++ b/Samples/Swift/DaysUntilBirthday/DaysUntilBirthdayUITests(iOS)/DaysUntilBirthdayUITests_iOS.swift @@ -24,6 +24,7 @@ class DaysUntilBirthdayUITests_iOS: XCTestCase { private let signInDisclaimerHeaderText = "Sign in to Days Until Birthday" private let additionalAccessHeaderText = "Days Until Birthday wants additional access to your Google Account" + private let infoSharingHeaderText = "Share some info with Days Until Birthday" private let appTrustWarningText = "Make sure you trust Days Until Birthday" private let chooseAnAccountHeaderText = "Choose an account" private let notNowText = "Not Now" @@ -34,6 +35,22 @@ class DaysUntilBirthdayUITests_iOS: XCTestCase { bundleIdentifier: "com.apple.springboard" ) + func testSignInFetchVerificationSignalAndDisconnect() { + sampleApp.launch() + XCTAssertTrue(signIn()) + XCTAssertTrue(navigateToVerifyMyAge()) + + XCTAssertTrue(navigateBackToUserProfileView()) + + sampleApp.navigationBars.buttons["Disconnect"].tap() + + guard sampleApp + .buttons["GoogleSignInButton"] + .waitForExistence(timeout: timeout) else { + return XCTFail("Disconnecting should return user to sign in view") + } + } + func testSignInNavigateToDaysUntilBirthdayAndDisconnect() { sampleApp.launch() @@ -195,6 +212,75 @@ extension DaysUntilBirthdayUITests_iOS { return true } + func navigateToVerifyMyAge() -> Bool { + guard sampleApp.buttons["Verify My Age"] + .waitForExistence(timeout: timeout) else { + XCTFail("Failed to find button navigating to verify my age view") + return false + } + sampleApp.buttons["Verify My Age"].tap() + + if springboardApp + .staticTexts[signInStaticText] + .waitForExistence(timeout: timeout) { + guard springboardApp + .buttons["Continue"] + .waitForExistence(timeout: timeout) else { + XCTFail("Failed to find 'Continue' button") + return false + } + springboardApp.buttons["Continue"].tap() + + if sampleApp + .staticTexts[chooseAnAccountHeaderText] + .waitForExistence(timeout: timeout) { + guard findAndTapExistingSignedInEmail() else { + XCTFail("Failed to find signed-in account") + return false + } + } + + handleInfoSharingRequestIfNeeded() + } + + guard sampleApp.staticTexts["Verified Account!"] + .waitForExistence(timeout: 30) else { + XCTFail("Failed to show age verification view") + return false + } + + let currentAccessTokenIdentifier = sampleApp.staticTexts["Access Token:"] + + guard currentAccessTokenIdentifier.waitForExistence(timeout: timeout) else { + XCTFail("Access Token element did not appear") + return false + } + + guard sampleApp.buttons["Fetch Age Verification Signal"] + .waitForExistence(timeout: timeout) else { + XCTFail("Failed to find button to refresh access token") + return false + } + sampleApp.buttons["Fetch Age Verification Signal"].tap() + + guard sampleApp.staticTexts["User is verified over 18!"] + .waitForExistence(timeout: 30) else { + XCTFail("Failed to show age verification signal view") + return false + } + + guard sampleApp + .navigationBars + .buttons["Close"] + .waitForExistence(timeout: timeout) else { + XCTFail("Failed to show close button back to age signal view") + return false + } + sampleApp.navigationBars.buttons["Close"].tap() + + return true + } + /// Navigates to the days until birthday view from the user profile view. /// - returns: `true` if the navigation was performed successfully. /// - note: This method will attempt to find a pop up asking for permission to @@ -262,6 +348,17 @@ extension DaysUntilBirthdayUITests_iOS { return true } + func handleInfoSharingRequestIfNeeded(){ + let currentlyShowingInfoSharingRequest = sampleApp.staticTexts[infoSharingHeaderText] + .waitForExistence(timeout: timeout) && + sampleApp.buttons["Agree"] + .waitForExistence(timeout: timeout) + + if currentlyShowingInfoSharingRequest { + sampleApp.buttons["Agree"].tap() + } + } + /// Proceeds through the view with header "Days Until Birthday wants additional access to your Google Account" if needed. func handleAccessRequestIfNeeded() { let currentlyShowingAdditionalAccessRequest = sampleApp.staticTexts[additionalAccessHeaderText]