Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76e7b0c5 authored by Joe Bolinger's avatar Joe Bolinger Committed by Android (Google) Code Review
Browse files

Merge changes from topic "presubmit-am-ef5db8e2898a45eda2a6aebe542805fb"

* changes:
  [automerge] Re-enable biometric prompt tests. 2p: d53a2acf 2p: 5e261741
  [automerge] Re-enable biometric prompt tests. 2p: d53a2acf
  Re-enable biometric prompt tests.
parents 6a03c4aa 1a377216
Loading
Loading
Loading
Loading
+49 −42
Original line number Original line Diff line number Diff line
@@ -41,7 +41,7 @@ import com.android.systemui.R
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import org.junit.Ignore
import org.junit.After
import org.junit.Rule
import org.junit.Rule
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith
@@ -52,7 +52,6 @@ import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
import org.mockito.junit.MockitoJUnit
import org.mockito.Mockito.`when` as whenever
import org.mockito.Mockito.`when` as whenever


@Ignore
@RunWith(AndroidTestingRunner::class)
@RunWith(AndroidTestingRunner::class)
@RunWithLooper
@RunWithLooper
@SmallTest
@SmallTest
@@ -72,12 +71,19 @@ class AuthContainerViewTest : SysuiTestCase() {
    @Mock
    @Mock
    lateinit var windowToken: IBinder
    lateinit var windowToken: IBinder


    private lateinit var authContainer: TestAuthContainerView
    private var authContainer: TestAuthContainerView? = null

    @After
    fun tearDown() {
        if (authContainer?.isAttachedToWindow == true) {
            ViewUtils.detachView(authContainer)
        }
    }


    @Test
    @Test
    fun testActionAuthenticated_sendsDismissedAuthenticated() {
    fun testActionAuthenticated_sendsDismissedAuthenticated() {
        initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        val container = initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        authContainer.mBiometricCallback.onAction(
        container.mBiometricCallback.onAction(
            AuthBiometricView.Callback.ACTION_AUTHENTICATED
            AuthBiometricView.Callback.ACTION_AUTHENTICATED
        )
        )
        waitForIdleSync()
        waitForIdleSync()
@@ -86,13 +92,13 @@ class AuthContainerViewTest : SysuiTestCase() {
            eq(AuthDialogCallback.DISMISSED_BIOMETRIC_AUTHENTICATED),
            eq(AuthDialogCallback.DISMISSED_BIOMETRIC_AUTHENTICATED),
            eq<ByteArray?>(null) /* credentialAttestation */
            eq<ByteArray?>(null) /* credentialAttestation */
        )
        )
        assertThat(authContainer.parent).isNull()
        assertThat(container.parent).isNull()
    }
    }


    @Test
    @Test
    fun testActionUserCanceled_sendsDismissedUserCanceled() {
    fun testActionUserCanceled_sendsDismissedUserCanceled() {
        initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        val container = initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        authContainer.mBiometricCallback.onAction(
        container.mBiometricCallback.onAction(
            AuthBiometricView.Callback.ACTION_USER_CANCELED
            AuthBiometricView.Callback.ACTION_USER_CANCELED
        )
        )
        waitForIdleSync()
        waitForIdleSync()
@@ -104,13 +110,13 @@ class AuthContainerViewTest : SysuiTestCase() {
            eq(AuthDialogCallback.DISMISSED_USER_CANCELED),
            eq(AuthDialogCallback.DISMISSED_USER_CANCELED),
            eq<ByteArray?>(null) /* credentialAttestation */
            eq<ByteArray?>(null) /* credentialAttestation */
        )
        )
        assertThat(authContainer.parent).isNull()
        assertThat(container.parent).isNull()
    }
    }


    @Test
    @Test
    fun testActionButtonNegative_sendsDismissedButtonNegative() {
    fun testActionButtonNegative_sendsDismissedButtonNegative() {
        initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        val container = initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        authContainer.mBiometricCallback.onAction(
        container.mBiometricCallback.onAction(
            AuthBiometricView.Callback.ACTION_BUTTON_NEGATIVE
            AuthBiometricView.Callback.ACTION_BUTTON_NEGATIVE
        )
        )
        waitForIdleSync()
        waitForIdleSync()
@@ -119,13 +125,13 @@ class AuthContainerViewTest : SysuiTestCase() {
            eq(AuthDialogCallback.DISMISSED_BUTTON_NEGATIVE),
            eq(AuthDialogCallback.DISMISSED_BUTTON_NEGATIVE),
            eq<ByteArray?>(null) /* credentialAttestation */
            eq<ByteArray?>(null) /* credentialAttestation */
        )
        )
        assertThat(authContainer.parent).isNull()
        assertThat(container.parent).isNull()
    }
    }


    @Test
    @Test
    fun testActionTryAgain_sendsTryAgain() {
    fun testActionTryAgain_sendsTryAgain() {
        initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        val container = initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        authContainer.mBiometricCallback.onAction(
        container.mBiometricCallback.onAction(
            AuthBiometricView.Callback.ACTION_BUTTON_TRY_AGAIN
            AuthBiometricView.Callback.ACTION_BUTTON_TRY_AGAIN
        )
        )
        waitForIdleSync()
        waitForIdleSync()
@@ -135,8 +141,8 @@ class AuthContainerViewTest : SysuiTestCase() {


    @Test
    @Test
    fun testActionError_sendsDismissedError() {
    fun testActionError_sendsDismissedError() {
        initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        val container = initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        authContainer.mBiometricCallback.onAction(
        authContainer!!.mBiometricCallback.onAction(
            AuthBiometricView.Callback.ACTION_ERROR
            AuthBiometricView.Callback.ACTION_ERROR
        )
        )
        waitForIdleSync()
        waitForIdleSync()
@@ -145,53 +151,53 @@ class AuthContainerViewTest : SysuiTestCase() {
            eq(AuthDialogCallback.DISMISSED_ERROR),
            eq(AuthDialogCallback.DISMISSED_ERROR),
            eq<ByteArray?>(null) /* credentialAttestation */
            eq<ByteArray?>(null) /* credentialAttestation */
        )
        )
        assertThat(authContainer.parent).isNull()
        assertThat(authContainer!!.parent).isNull()
    }
    }


    @Test
    @Test
    fun testActionUseDeviceCredential_sendsOnDeviceCredentialPressed() {
    fun testActionUseDeviceCredential_sendsOnDeviceCredentialPressed() {
        initializeContainer(
        val container = initializeContainer(
            BiometricManager.Authenticators.BIOMETRIC_WEAK or
            BiometricManager.Authenticators.BIOMETRIC_WEAK or
                    BiometricManager.Authenticators.DEVICE_CREDENTIAL
                    BiometricManager.Authenticators.DEVICE_CREDENTIAL
        )
        )
        authContainer.mBiometricCallback.onAction(
        container.mBiometricCallback.onAction(
            AuthBiometricView.Callback.ACTION_USE_DEVICE_CREDENTIAL
            AuthBiometricView.Callback.ACTION_USE_DEVICE_CREDENTIAL
        )
        )
        waitForIdleSync()
        waitForIdleSync()


        verify(callback).onDeviceCredentialPressed()
        verify(callback).onDeviceCredentialPressed()
        assertThat(authContainer.hasCredentialView()).isTrue()
        assertThat(container.hasCredentialView()).isTrue()
    }
    }


    @Test
    @Test
    fun testAnimateToCredentialUI_invokesStartTransitionToCredentialUI() {
    fun testAnimateToCredentialUI_invokesStartTransitionToCredentialUI() {
        initializeContainer(
        val container = initializeContainer(
            BiometricManager.Authenticators.BIOMETRIC_WEAK or
            BiometricManager.Authenticators.BIOMETRIC_WEAK or
                    BiometricManager.Authenticators.DEVICE_CREDENTIAL
                    BiometricManager.Authenticators.DEVICE_CREDENTIAL
        )
        )
        authContainer.animateToCredentialUI()
        container.animateToCredentialUI()
        waitForIdleSync()
        waitForIdleSync()


        assertThat(authContainer.hasCredentialView()).isTrue()
        assertThat(container.hasCredentialView()).isTrue()
    }
    }


    @Test
    @Test
    fun testShowBiometricUI() {
    fun testShowBiometricUI() {
        initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)
        val container = initializeContainer(BiometricManager.Authenticators.BIOMETRIC_WEAK)


        waitForIdleSync()
        waitForIdleSync()


        assertThat(authContainer.hasCredentialView()).isFalse()
        assertThat(container.hasCredentialView()).isFalse()
        assertThat(authContainer.hasBiometricPrompt()).isTrue()
        assertThat(container.hasBiometricPrompt()).isTrue()
    }
    }


    @Test
    @Test
    fun testShowCredentialUI() {
    fun testShowCredentialUI() {
        initializeContainer(BiometricManager.Authenticators.DEVICE_CREDENTIAL)
        val container = initializeContainer(BiometricManager.Authenticators.DEVICE_CREDENTIAL)
        waitForIdleSync()
        waitForIdleSync()


        assertThat(authContainer.hasCredentialView()).isTrue()
        assertThat(container.hasCredentialView()).isTrue()
        assertThat(authContainer.hasBiometricPrompt()).isFalse()
        assertThat(container.hasBiometricPrompt()).isFalse()
    }
    }


    @Test
    @Test
@@ -201,11 +207,11 @@ class AuthContainerViewTest : SysuiTestCase() {
            DevicePolicyManager.PASSWORD_QUALITY_SOMETHING
            DevicePolicyManager.PASSWORD_QUALITY_SOMETHING
        )
        )


        initializeContainer(BiometricManager.Authenticators.DEVICE_CREDENTIAL)
        val container = initializeContainer(BiometricManager.Authenticators.DEVICE_CREDENTIAL)
        waitForIdleSync()
        waitForIdleSync()


        assertThat(authContainer.hasCredentialPatternView()).isTrue()
        assertThat(container.hasCredentialPatternView()).isTrue()
        assertThat(authContainer.hasBiometricPrompt()).isFalse()
        assertThat(container.hasBiometricPrompt()).isFalse()
    }
    }


    @Test
    @Test
@@ -218,20 +224,20 @@ class AuthContainerViewTest : SysuiTestCase() {
        // In the credential view, clicking on the background (to cancel authentication) is not
        // In the credential view, clicking on the background (to cancel authentication) is not
        // valid. Thus, the listener should be null, and it should not be in the accessibility
        // valid. Thus, the listener should be null, and it should not be in the accessibility
        // hierarchy.
        // hierarchy.
        initializeContainer(BiometricManager.Authenticators.DEVICE_CREDENTIAL)
        val container = initializeContainer(BiometricManager.Authenticators.DEVICE_CREDENTIAL)
        waitForIdleSync()
        waitForIdleSync()


        assertThat(authContainer.hasCredentialPasswordView()).isTrue()
        assertThat(container.hasCredentialPasswordView()).isTrue()
        assertThat(authContainer.hasBiometricPrompt()).isFalse()
        assertThat(container.hasBiometricPrompt()).isFalse()
        assertThat(
        assertThat(
            authContainer.findViewById<View>(R.id.background)?.isImportantForAccessibility
            container.findViewById<View>(R.id.background)?.isImportantForAccessibility
        ).isFalse()
        ).isFalse()


        authContainer.findViewById<View>(R.id.background)?.performClick()
        container.findViewById<View>(R.id.background)?.performClick()
        waitForIdleSync()
        waitForIdleSync()


        assertThat(authContainer.hasCredentialPasswordView()).isTrue()
        assertThat(container.hasCredentialPasswordView()).isTrue()
        assertThat(authContainer.hasBiometricPrompt()).isFalse()
        assertThat(container.hasBiometricPrompt()).isFalse()
    }
    }


    @Test
    @Test
@@ -246,7 +252,7 @@ class AuthContainerViewTest : SysuiTestCase() {
        assertThat((layoutParams.fitInsetsTypes and WindowInsets.Type.ime()) == 0).isTrue()
        assertThat((layoutParams.fitInsetsTypes and WindowInsets.Type.ime()) == 0).isTrue()
    }
    }


    private fun initializeContainer(authenticators: Int) {
    private fun initializeContainer(authenticators: Int): TestAuthContainerView {
        val config = AuthContainerView.Config()
        val config = AuthContainerView.Config()
        config.mContext = mContext
        config.mContext = mContext
        config.mCallback = callback
        config.mCallback = callback
@@ -286,6 +292,7 @@ class AuthContainerViewTest : SysuiTestCase() {
            Handler(TestableLooper.get(this).looper)
            Handler(TestableLooper.get(this).looper)
        )
        )
        ViewUtils.attachView(authContainer)
        ViewUtils.attachView(authContainer)
        return authContainer!!
    }
    }


    private inner class TestAuthContainerView(
    private inner class TestAuthContainerView(