@@ -50,6 +50,7 @@ class FirebaseAuthActivityTest {
5050
5151 private lateinit var applicationContext: Context
5252 private lateinit var authUI: FirebaseAuthUI
53+ private lateinit var secondaryAuthUI: FirebaseAuthUI
5354 private lateinit var configuration: AuthUIConfiguration
5455
5556 @Mock
@@ -79,8 +80,20 @@ class FirebaseAuthActivityTest {
7980 .build()
8081 )
8182
83+ val secondaryApp = FirebaseApp .initializeApp(
84+ applicationContext,
85+ FirebaseOptions .Builder ()
86+ .setApiKey(" fake-api-key-2" )
87+ .setApplicationId(" fake-app-id-2" )
88+ .setProjectId(" fake-project-id-2" )
89+ .build(),
90+ " secondary"
91+ )
92+
8293 authUI = FirebaseAuthUI .getInstance()
8394 authUI.auth.useEmulator(" 127.0.0.1" , 9099 )
95+ secondaryAuthUI = FirebaseAuthUI .getInstance(secondaryApp)
96+ secondaryAuthUI.auth.useEmulator(" 127.0.0.1" , 9099 )
8497
8598 configuration = AuthUIConfiguration (
8699 context = applicationContext,
@@ -180,6 +193,46 @@ class FirebaseAuthActivityTest {
180193 assertThat(activity.isFinishing).isFalse()
181194 }
182195
196+ @Test
197+ fun `activity launched from secondary auth flow observes supplied authUI instead of default app` () =
198+ runTest {
199+ val controller = secondaryAuthUI.createAuthFlow(configuration)
200+ val intent = controller.createIntent(applicationContext)
201+ val activity = Robolectric .buildActivity(FirebaseAuthActivity ::class .java, intent)
202+ .create()
203+ .start()
204+ .resume()
205+ .get()
206+
207+ `when `(mockFirebaseUser.uid).thenReturn(" secondary-user-id" )
208+
209+ authUI.updateAuthState(
210+ AuthState .Success (
211+ result = null ,
212+ user = mockFirebaseUser,
213+ isNewUser = false
214+ )
215+ )
216+ shadowOf(Looper .getMainLooper()).idle()
217+
218+ assertThat(activity.isFinishing).isFalse()
219+
220+ secondaryAuthUI.updateAuthState(
221+ AuthState .Success (
222+ result = null ,
223+ user = mockFirebaseUser,
224+ isNewUser = false
225+ )
226+ )
227+ shadowOf(Looper .getMainLooper()).idle()
228+
229+ assertThat(activity.isFinishing).isTrue()
230+ val shadowActivity = shadowOf(activity)
231+ assertThat(shadowActivity.resultCode).isEqualTo(Activity .RESULT_OK )
232+ assertThat(shadowActivity.resultIntent.getStringExtra(FirebaseAuthActivity .EXTRA_USER_ID ))
233+ .isEqualTo(" secondary-user-id" )
234+ }
235+
183236 // =============================================================================================
184237 // Auth State Success Tests
185238 // =============================================================================================
0 commit comments