From ed5ea20547c1fc0e2a35e140d108ea09fcfad2fa Mon Sep 17 00:00:00 2001 From: Pavan Shankar Date: Tue, 7 Jan 2025 15:32:52 +0000 Subject: [PATCH] Update RCE flow to skip checking status if appVerificationDisabledForTesting is set (#14310) --- FirebaseAuth/CHANGELOG.md | 1 + .../Swift/AuthProvider/PhoneAuthProvider.swift | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/FirebaseAuth/CHANGELOG.md b/FirebaseAuth/CHANGELOG.md index bce9975d100..197eb157087 100644 --- a/FirebaseAuth/CHANGELOG.md +++ b/FirebaseAuth/CHANGELOG.md @@ -4,6 +4,7 @@ for decoding `nil` values. (#14212) - [fixed] Address Xcode 16.2 concurrency compile time issues. (#14279) - [fixed] Fix handling of cloud blocking function errors. (#14052) +- [fixed] Fix phone auth flow to skip RCE verification if appVerificationDisabledForTesting is set. (#14242) # 11.6.0 - [added] Added reCAPTCHA Enterprise support for app verification during phone diff --git a/FirebaseAuth/Sources/Swift/AuthProvider/PhoneAuthProvider.swift b/FirebaseAuth/Sources/Swift/AuthProvider/PhoneAuthProvider.swift index 8c7a6982fd4..61e5693f374 100644 --- a/FirebaseAuth/Sources/Swift/AuthProvider/PhoneAuthProvider.swift +++ b/FirebaseAuth/Sources/Swift/AuthProvider/PhoneAuthProvider.swift @@ -203,6 +203,21 @@ import Foundation } let recaptchaVerifier = AuthRecaptchaVerifier.shared(auth: auth) + + if let settings = auth.settings, + settings.isAppVerificationDisabledForTesting { + // If app verification is disabled for testing + // do not fetch recaptcha config, as this is not implemented in emulator + // Treat this same as RCE enable status off + + return try await verifyClAndSendVerificationCode( + toPhoneNumber: phoneNumber, + retryOnInvalidAppCredential: true, + multiFactorSession: multiFactorSession, + uiDelegate: uiDelegate + ) + } + try await recaptchaVerifier.retrieveRecaptchaConfig(forceRefresh: true) switch recaptchaVerifier.enablementStatus(forProvider: .phone) {