@@ -447,22 +447,28 @@ class FirebaseAuthActivityTest {
447447 // =============================================================================================
448448
449449 @Test
450- fun `configuration is removed from cache after onCreate` () {
451- val intent1 = FirebaseAuthActivity .createIntent(applicationContext, configuration)
452- val configKey1 = intent1.getStringExtra(" com.firebase.ui.auth.CONFIGURATION_KEY" )
450+ fun `launch state survives recreation and is cleared when activity finishes` () {
451+ val intent = FirebaseAuthActivity .createIntent(applicationContext, configuration)
453452
454- assertThat(configKey1).isNotNull()
453+ val firstController = Robolectric .buildActivity(FirebaseAuthActivity ::class .java, intent)
454+ val firstActivity = firstController.create().start().resume().get()
455+ assertThat(firstActivity.isFinishing).isFalse()
455456
456- // Create activity - this should consume the configuration from cache
457- val controller1 = Robolectric .buildActivity(FirebaseAuthActivity ::class .java, intent1)
458- controller1.create().get()
457+ // Simulate recreation: the first activity is destroyed without finishing.
458+ firstController.pause().stop().destroy()
459+
460+ val recreatedController = Robolectric .buildActivity(FirebaseAuthActivity ::class .java, intent)
461+ val recreatedActivity = recreatedController.create().start().resume().get()
462+ assertThat(recreatedActivity.isFinishing).isFalse()
459463
460- // Create another intent
461- val intent2 = FirebaseAuthActivity .createIntent(applicationContext, configuration )
462- val configKey2 = intent2.getStringExtra( " com.firebase.ui.auth.CONFIGURATION_KEY " )
464+ // Once the recreated activity actually finishes, the cached launch state should be released.
465+ recreatedActivity.finish( )
466+ recreatedController.pause().stop().destroy( )
463467
464- // Should be a different key
465- assertThat(configKey2).isNotEqualTo(configKey1)
468+ val postFinishController = Robolectric .buildActivity(FirebaseAuthActivity ::class .java, intent)
469+ val postFinishActivity = postFinishController.create().get()
470+ assertThat(postFinishActivity.isFinishing).isTrue()
471+ assertThat(shadowOf(postFinishActivity).resultCode).isEqualTo(Activity .RESULT_CANCELED )
466472 }
467473
468474 @Test
0 commit comments