diff --git a/auth/src/test/java/com/firebase/ui/auth/FirebaseAuthActivityTest.kt b/auth/src/test/java/com/firebase/ui/auth/FirebaseAuthActivityTest.kt index 5b2ee24b0..3d98bb025 100644 --- a/auth/src/test/java/com/firebase/ui/auth/FirebaseAuthActivityTest.kt +++ b/auth/src/test/java/com/firebase/ui/auth/FirebaseAuthActivityTest.kt @@ -65,35 +65,44 @@ class FirebaseAuthActivityTest { applicationContext = ApplicationProvider.getApplicationContext() - // Clear any existing Firebase apps - FirebaseApp.getApps(applicationContext).forEach { app -> - app.delete() - } + // Reuse FirebaseApps across tests in this class rather than deleting and + // re-initializing them for every test, to reduce churn on the "[DEFAULT]" + // app name (Robolectric shares statics across test methods in this class). + val secondaryApp = if (FirebaseApp.getApps(applicationContext).isEmpty()) { + FirebaseApp.initializeApp( + applicationContext, + FirebaseOptions.Builder() + .setApiKey("fake-api-key") + .setApplicationId("fake-app-id") + .setProjectId("fake-project-id") + .build() + ) - // Initialize default FirebaseApp - FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key") - .setApplicationId("fake-app-id") - .setProjectId("fake-project-id") - .build() - ) + val app = FirebaseApp.initializeApp( + applicationContext, + FirebaseOptions.Builder() + .setApiKey("fake-api-key-2") + .setApplicationId("fake-app-id-2") + .setProjectId("fake-project-id-2") + .build(), + "secondary" + ) - val secondaryApp = FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key-2") - .setApplicationId("fake-app-id-2") - .setProjectId("fake-project-id-2") - .build(), - "secondary" - ) + // Other test classes in this module independently delete and recreate + // the "[DEFAULT]" FirebaseApp. Newer firebase-auth releases sometimes + // surface that unrelated churn here as "FirebaseApp was deleted" from + // useEmulator(), even though the app we just initialized is live. This + // call is a defensive safety net (these tests drive UI state through + // mocks, never real network calls), so it's safe to ignore. + runCatching { FirebaseAuthUI.getInstance().auth.useEmulator("127.0.0.1", 9099) } + runCatching { FirebaseAuthUI.getInstance(app).auth.useEmulator("127.0.0.1", 9099) } + app + } else { + FirebaseApp.getInstance("secondary") + } authUI = FirebaseAuthUI.getInstance() - authUI.auth.useEmulator("127.0.0.1", 9099) secondaryAuthUI = FirebaseAuthUI.getInstance(secondaryApp) - secondaryAuthUI.auth.useEmulator("127.0.0.1", 9099) configuration = AuthUIConfiguration( context = applicationContext, @@ -113,13 +122,6 @@ class FirebaseAuthActivityTest { fun tearDown() { FirebaseAuthActivity.clearLaunchStateCache() FirebaseAuthUI.clearInstanceCache() - FirebaseApp.getApps(applicationContext).forEach { app -> - try { - app.delete() - } catch (_: Exception) { - // Ignore if already deleted - } - } } // ============================================================================================= diff --git a/e2eTest/src/test/java/com/firebase/ui/auth/testutil/FirebaseTestApp.kt b/e2eTest/src/test/java/com/firebase/ui/auth/testutil/FirebaseTestApp.kt new file mode 100644 index 000000000..d9cc3a38a --- /dev/null +++ b/e2eTest/src/test/java/com/firebase/ui/auth/testutil/FirebaseTestApp.kt @@ -0,0 +1,34 @@ +package com.firebase.ui.auth.testutil + +import android.content.Context +import com.firebase.ui.auth.FirebaseAuthUI +import com.google.firebase.FirebaseApp +import com.google.firebase.FirebaseOptions + +/** + * Returns the "[DEFAULT]" FirebaseApp used by e2e tests, pointed at the local Auth + * emulator, initializing it once per JVM instead of per test. + * + * Every test class used to delete and re-initialize this app in its own `@Before`. + * Robolectric shares statics across test classes within a run, so that churn raced + * with other classes doing the same thing; newer firebase-auth releases surface the + * loser of that race as "FirebaseApp was deleted" from useEmulator(). Per-test + * isolation is already handled by [EmulatorAuthApi.clearEmulatorData], so the app + * itself doesn't need to be recreated for every test. + */ +fun ensureTestFirebaseApp(context: Context): FirebaseApp { + FirebaseApp.getApps(context).firstOrNull { it.name == FirebaseApp.DEFAULT_APP_NAME }?.let { + return it + } + + val app = FirebaseApp.initializeApp( + context, + FirebaseOptions.Builder() + .setApiKey("fake-api-key") + .setApplicationId("fake-app-id") + .setProjectId("fake-project-id") + .build() + ) + FirebaseAuthUI.getInstance().auth.useEmulator("127.0.0.1", 9099) + return app +} diff --git a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/AnonymousAuthScreenTest.kt b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/AnonymousAuthScreenTest.kt index 743a26db4..c28b96925 100644 --- a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/AnonymousAuthScreenTest.kt +++ b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/AnonymousAuthScreenTest.kt @@ -34,9 +34,8 @@ import com.firebase.ui.auth.configuration.string_provider.DefaultAuthUIStringPro import com.firebase.ui.auth.testutil.AUTH_STATE_WAIT_TIMEOUT_MS import com.firebase.ui.auth.testutil.EmulatorAuthApi import com.firebase.ui.auth.testutil.ensureFreshUser +import com.firebase.ui.auth.testutil.ensureTestFirebaseApp import com.google.common.truth.Truth.assertThat -import com.google.firebase.FirebaseApp -import com.google.firebase.FirebaseOptions import org.junit.After import org.junit.Before import org.junit.Rule @@ -68,23 +67,8 @@ class AnonymousAuthScreenTest { stringProvider = DefaultAuthUIStringProvider(applicationContext) - // Clear any existing Firebase apps - FirebaseApp.getApps(applicationContext).forEach { app -> - app.delete() - } - - // Initialize default FirebaseApp - val firebaseApp = FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key") - .setApplicationId("fake-app-id") - .setProjectId("fake-project-id") - .build() - ) - + val firebaseApp = ensureTestFirebaseApp(applicationContext) authUI = FirebaseAuthUI.getInstance() - authUI.auth.useEmulator("127.0.0.1", 9099) emulatorApi = EmulatorAuthApi( projectId = firebaseApp.options.projectId @@ -99,7 +83,10 @@ class AnonymousAuthScreenTest { @After fun tearDown() { - // Clean up after each test to prevent test pollution + // Clean up after each test to prevent test pollution. The FirebaseApp itself is + // shared across test classes (see ensureTestFirebaseApp), so the client-side + // session must be reset explicitly here rather than relying on app re-creation. + authUI.auth.signOut() FirebaseAuthUI.clearInstanceCache() // Clear emulator data diff --git a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/CredentialLinkingScreenTest.kt b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/CredentialLinkingScreenTest.kt index a862a4e57..49346377f 100644 --- a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/CredentialLinkingScreenTest.kt +++ b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/CredentialLinkingScreenTest.kt @@ -42,12 +42,11 @@ import com.firebase.ui.auth.testutil.EmulatorAuthApi import com.firebase.ui.auth.testutil.awaitWithLooper import com.firebase.ui.auth.testutil.ensureFreshUser import com.firebase.ui.auth.testutil.generateMockGoogleIdToken +import com.firebase.ui.auth.testutil.ensureTestFirebaseApp import com.firebase.ui.auth.testutil.verifyEmailInEmulator import com.firebase.ui.auth.util.CountryUtils import com.google.android.libraries.identity.googleid.GoogleIdTokenCredential import com.google.common.truth.Truth.assertThat -import com.google.firebase.FirebaseApp -import com.google.firebase.FirebaseOptions import kotlinx.coroutines.test.runTest import org.junit.After import org.junit.Assume @@ -89,21 +88,8 @@ class CredentialLinkingScreenTest { applicationContext = ApplicationProvider.getApplicationContext() stringProvider = DefaultAuthUIStringProvider(applicationContext) - FirebaseApp.getApps(applicationContext).forEach { app -> - app.delete() - } - - val firebaseApp = FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key") - .setApplicationId("fake-app-id") - .setProjectId("fake-project-id") - .build() - ) - + val firebaseApp = ensureTestFirebaseApp(applicationContext) authUI = FirebaseAuthUI.getInstance() - authUI.auth.useEmulator("127.0.0.1", 9099) authUI.testCredentialManagerProvider = object : AuthProvider.Google.CredentialManagerProvider { override suspend fun getGoogleCredential( @@ -137,6 +123,7 @@ class CredentialLinkingScreenTest { @After fun tearDown() { + authUI.auth.signOut() FirebaseAuthUI.clearInstanceCache() emulatorApi.clearEmulatorData() } diff --git a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/EmailAuthScreenTest.kt b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/EmailAuthScreenTest.kt index d438eb45b..53dda5218 100644 --- a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/EmailAuthScreenTest.kt +++ b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/EmailAuthScreenTest.kt @@ -45,10 +45,9 @@ import com.firebase.ui.auth.testutil.AUTH_STATE_WAIT_TIMEOUT_MS import com.firebase.ui.auth.testutil.EmailLinkTestActivity import com.firebase.ui.auth.testutil.EmulatorAuthApi import com.firebase.ui.auth.testutil.ensureFreshUser +import com.firebase.ui.auth.testutil.ensureTestFirebaseApp import com.firebase.ui.auth.testutil.verifyEmailInEmulator import com.google.common.truth.Truth.assertThat -import com.google.firebase.FirebaseApp -import com.google.firebase.FirebaseOptions import com.google.firebase.auth.actionCodeSettings import kotlinx.coroutines.runBlocking import org.junit.After @@ -97,23 +96,8 @@ class EmailAuthScreenTest { stringProvider = DefaultAuthUIStringProvider(applicationContext) - // Clear any existing Firebase apps - FirebaseApp.getApps(applicationContext).forEach { app -> - app.delete() - } - - // Initialize default FirebaseApp - val firebaseApp = FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key") - .setApplicationId("fake-app-id") - .setProjectId("fake-project-id") - .build() - ) - + val firebaseApp = ensureTestFirebaseApp(applicationContext) authUI = FirebaseAuthUI.getInstance() - authUI.auth.useEmulator("127.0.0.1", 9099) emulatorApi = EmulatorAuthApi( projectId = firebaseApp.options.projectId @@ -138,7 +122,10 @@ class EmailAuthScreenTest { fun tearDown() { closeable.close() - // Clean up after each test to prevent test pollution + // Clean up after each test to prevent test pollution. The FirebaseApp itself is + // shared across test classes (see ensureTestFirebaseApp), so the client-side + // session must be reset explicitly here rather than relying on app re-creation. + authUI.auth.signOut() FirebaseAuthUI.clearInstanceCache() // Clear emulator data diff --git a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/GoogleAuthScreenTest.kt b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/GoogleAuthScreenTest.kt index 942d70678..8d4c07148 100644 --- a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/GoogleAuthScreenTest.kt +++ b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/GoogleAuthScreenTest.kt @@ -39,11 +39,10 @@ import com.firebase.ui.auth.configuration.string_provider.AuthUIStringProvider import com.firebase.ui.auth.configuration.string_provider.DefaultAuthUIStringProvider import com.firebase.ui.auth.testutil.AUTH_STATE_WAIT_TIMEOUT_MS import com.firebase.ui.auth.testutil.EmulatorAuthApi +import com.firebase.ui.auth.testutil.ensureTestFirebaseApp import com.firebase.ui.auth.testutil.generateMockGoogleIdToken import com.google.android.libraries.identity.googleid.GoogleIdTokenCredential import com.google.common.truth.Truth.assertThat -import com.google.firebase.FirebaseApp -import com.google.firebase.FirebaseOptions import kotlinx.coroutines.test.runTest import org.junit.After import org.junit.Before @@ -85,23 +84,8 @@ class GoogleAuthScreenTest { stringProvider = DefaultAuthUIStringProvider(applicationContext) - // Clear any existing Firebase apps - FirebaseApp.getApps(applicationContext).forEach { app -> - app.delete() - } - - // Initialize default FirebaseApp - val firebaseApp = FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key") - .setApplicationId("fake-app-id") - .setProjectId("fake-project-id") - .build() - ) - + val firebaseApp = ensureTestFirebaseApp(applicationContext) authUI = FirebaseAuthUI.getInstance() - authUI.auth.useEmulator("127.0.0.1", 9099) val testCredentialManagerProvider = object : AuthProvider.Google.CredentialManagerProvider { override suspend fun getGoogleCredential( @@ -140,7 +124,10 @@ class GoogleAuthScreenTest { @After fun tearDown() { - // Clean up after each test to prevent test pollution + // Clean up after each test to prevent test pollution. The FirebaseApp itself is + // shared across test classes (see ensureTestFirebaseApp), so the client-side + // session must be reset explicitly here rather than relying on app re-creation. + authUI.auth.signOut() FirebaseAuthUI.clearInstanceCache() // Clear emulator data diff --git a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaChallengeScreenTest.kt b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaChallengeScreenTest.kt index 58b9f99d1..62675284b 100644 --- a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaChallengeScreenTest.kt +++ b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaChallengeScreenTest.kt @@ -35,9 +35,8 @@ import com.firebase.ui.auth.configuration.string_provider.AuthUIStringProvider import com.firebase.ui.auth.configuration.string_provider.DefaultAuthUIStringProvider import com.firebase.ui.auth.configuration.string_provider.LocalAuthUIStringProvider import com.firebase.ui.auth.mfa.MfaChallengeContentState +import com.firebase.ui.auth.testutil.ensureTestFirebaseApp import com.google.common.truth.Truth.assertThat -import com.google.firebase.FirebaseApp -import com.google.firebase.FirebaseOptions import com.google.firebase.auth.MultiFactorInfo import com.google.firebase.auth.MultiFactorResolver import com.google.firebase.auth.MultiFactorSession @@ -91,23 +90,8 @@ class MfaChallengeScreenTest { applicationContext = ApplicationProvider.getApplicationContext() stringProvider = DefaultAuthUIStringProvider(applicationContext) - // Clear any existing Firebase apps - FirebaseApp.getApps(applicationContext).forEach { app -> - app.delete() - } - - // Initialize default FirebaseApp - FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key") - .setApplicationId("fake-app-id") - .setProjectId("fake-project-id") - .build() - ) - + ensureTestFirebaseApp(applicationContext) authUI = FirebaseAuthUI.getInstance() - authUI.auth.useEmulator("127.0.0.1", 9099) // Setup mock resolver `when`(mockResolver.session).thenReturn(mockSession) diff --git a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaDisabledTest.kt b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaDisabledTest.kt index 307f79bc6..d99c19a59 100644 --- a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaDisabledTest.kt +++ b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaDisabledTest.kt @@ -20,9 +20,8 @@ import com.firebase.ui.auth.configuration.string_provider.AuthUIStringProvider import com.firebase.ui.auth.configuration.string_provider.DefaultAuthUIStringProvider import com.firebase.ui.auth.testutil.AUTH_STATE_WAIT_TIMEOUT_MS import com.firebase.ui.auth.testutil.EmulatorAuthApi +import com.firebase.ui.auth.testutil.ensureTestFirebaseApp import com.google.common.truth.Truth.assertThat -import com.google.firebase.FirebaseApp -import com.google.firebase.FirebaseOptions import org.junit.After import org.junit.Before import org.junit.Ignore @@ -58,23 +57,8 @@ class MfaDisabledTest { applicationContext = ApplicationProvider.getApplicationContext() stringProvider = DefaultAuthUIStringProvider(applicationContext) - // Clear any existing Firebase apps - FirebaseApp.getApps(applicationContext).forEach { app -> - app.delete() - } - - // Initialize default FirebaseApp - val firebaseApp = FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key") - .setApplicationId("fake-app-id") - .setProjectId("fake-project-id") - .build() - ) - + val firebaseApp = ensureTestFirebaseApp(applicationContext) authUI = FirebaseAuthUI.getInstance() - authUI.auth.useEmulator("127.0.0.1", 9099) emulatorApi = EmulatorAuthApi( projectId = firebaseApp.options.projectId @@ -89,7 +73,10 @@ class MfaDisabledTest { @After fun tearDown() { - // Clean up after each test to prevent test pollution + // Clean up after each test to prevent test pollution. The FirebaseApp itself is + // shared across test classes (see ensureTestFirebaseApp), so the client-side + // session must be reset explicitly here rather than relying on app re-creation. + authUI.auth.signOut() FirebaseAuthUI.clearInstanceCache() // Clear emulator data diff --git a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaEnrollmentScreenTest.kt b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaEnrollmentScreenTest.kt index 41283b74b..f0b3eca4b 100644 --- a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaEnrollmentScreenTest.kt +++ b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/MfaEnrollmentScreenTest.kt @@ -37,9 +37,8 @@ import com.firebase.ui.auth.mfa.MfaEnrollmentContentState import com.firebase.ui.auth.mfa.MfaEnrollmentStep import com.firebase.ui.auth.mfa.getHelperText import com.firebase.ui.auth.mfa.getTitle +import com.firebase.ui.auth.testutil.ensureTestFirebaseApp import com.google.common.truth.Truth.assertThat -import com.google.firebase.FirebaseApp -import com.google.firebase.FirebaseOptions import com.google.firebase.auth.FirebaseUser import com.google.firebase.auth.MultiFactor import org.junit.After @@ -88,21 +87,7 @@ class MfaEnrollmentScreenTest { applicationContext = ApplicationProvider.getApplicationContext() stringProvider = DefaultAuthUIStringProvider(applicationContext) - // Clear any existing Firebase apps - FirebaseApp.getApps(applicationContext).forEach { app -> - app.delete() - } - - // Initialize default FirebaseApp - FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key") - .setApplicationId("fake-app-id") - .setProjectId("fake-project-id") - .build() - ) - + ensureTestFirebaseApp(applicationContext) authUI = FirebaseAuthUI.getInstance() // Use mock user instead of real Firebase user diff --git a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/PhoneAuthScreenTest.kt b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/PhoneAuthScreenTest.kt index 2bb006dfa..f46f90178 100644 --- a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/PhoneAuthScreenTest.kt +++ b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/PhoneAuthScreenTest.kt @@ -33,6 +33,7 @@ import com.firebase.ui.auth.testutil.AUTH_STATE_WAIT_TIMEOUT_MS import com.firebase.ui.auth.testutil.EmulatorAuthApi import com.firebase.ui.auth.testutil.awaitWithLooper import com.firebase.ui.auth.testutil.ensureFreshUser +import com.firebase.ui.auth.testutil.ensureTestFirebaseApp import com.firebase.ui.auth.testutil.verifyEmailInEmulator import com.firebase.ui.auth.ui.screens.phone.EnterPhoneNumberUI import com.firebase.ui.auth.ui.screens.phone.EnterVerificationCodeUI @@ -40,8 +41,6 @@ import com.firebase.ui.auth.ui.screens.phone.PhoneAuthScreen import com.firebase.ui.auth.ui.screens.phone.PhoneAuthStep import com.firebase.ui.auth.util.CountryUtils import com.google.common.truth.Truth.assertThat -import com.google.firebase.FirebaseApp -import com.google.firebase.FirebaseOptions import com.google.firebase.auth.AuthResult import org.junit.After import org.junit.Assume @@ -75,23 +74,8 @@ class PhoneAuthScreenTest { applicationContext = ApplicationProvider.getApplicationContext() stringProvider = DefaultAuthUIStringProvider(applicationContext) - // Clear any existing Firebase apps - FirebaseApp.getApps(applicationContext).forEach { app -> - app.delete() - } - - // Initialize default FirebaseApp - val firebaseApp = FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key") - .setApplicationId("fake-app-id") - .setProjectId("fake-project-id") - .build() - ) - + val firebaseApp = ensureTestFirebaseApp(applicationContext) authUI = FirebaseAuthUI.getInstance() - authUI.auth.useEmulator("127.0.0.1", 9099) emulatorApi = EmulatorAuthApi( projectId = firebaseApp.options.projectId @@ -106,7 +90,10 @@ class PhoneAuthScreenTest { @After fun tearDown() { - // Clean up after each test to prevent test pollution + // Clean up after each test to prevent test pollution. The FirebaseApp itself is + // shared across test classes (see ensureTestFirebaseApp), so the client-side + // session must be reset explicitly here rather than relying on app re-creation. + authUI.auth.signOut() FirebaseAuthUI.clearInstanceCache() // Clear emulator data diff --git a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/ReauthFlowTest.kt b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/ReauthFlowTest.kt index 2939527ac..92e19dc03 100644 --- a/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/ReauthFlowTest.kt +++ b/e2eTest/src/test/java/com/firebase/ui/auth/ui/screens/ReauthFlowTest.kt @@ -26,10 +26,9 @@ import com.firebase.ui.auth.configuration.string_provider.LocalAuthUIStringProvi import com.firebase.ui.auth.testutil.AUTH_STATE_WAIT_TIMEOUT_MS import com.firebase.ui.auth.testutil.EmulatorAuthApi import com.firebase.ui.auth.testutil.ensureFreshUser +import com.firebase.ui.auth.testutil.ensureTestFirebaseApp import com.firebase.ui.auth.testutil.verifyEmailInEmulator import com.google.common.truth.Truth.assertThat -import com.google.firebase.FirebaseApp -import com.google.firebase.FirebaseOptions import org.junit.After import org.junit.Assume import org.junit.Before @@ -57,19 +56,8 @@ class ReauthFlowTest { applicationContext = ApplicationProvider.getApplicationContext() stringProvider = DefaultAuthUIStringProvider(applicationContext) - FirebaseApp.getApps(applicationContext).forEach { it.delete() } - - val firebaseApp = FirebaseApp.initializeApp( - applicationContext, - FirebaseOptions.Builder() - .setApiKey("fake-api-key") - .setApplicationId("fake-app-id") - .setProjectId("fake-project-id") - .build() - ) - + val firebaseApp = ensureTestFirebaseApp(applicationContext) authUI = FirebaseAuthUI.getInstance() - authUI.auth.useEmulator("127.0.0.1", 9099) emulatorApi = EmulatorAuthApi( projectId = firebaseApp.options.projectId @@ -83,6 +71,7 @@ class ReauthFlowTest { @After fun tearDown() { + authUI.auth.signOut() FirebaseAuthUI.clearInstanceCache() emulatorApi.clearEmulatorData() } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 506677e70..b546c0c1f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ android-gradle-plugin = "8.10.0" google-services = "4.5.0" maven-publish-plugin = "0.34.0" -firebase-bom = "34.7.0" +firebase-bom = "34.17.0" play-services-auth = "21.6.0" facebook = "18.3.0"