Merge "Re-enable biometric prompt tests." into tm-dev
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user