diff options
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java index b9f92a064bc8..6cd9c3f06eaf 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java @@ -492,6 +492,50 @@ public class AuthControllerTest extends SysuiTestCase { } @Test + public void testOnAuthenticationFailedInvoked_whenFaceAuthRejected() throws RemoteException { + final int modality = BiometricAuthenticator.TYPE_FACE; + final int userId = 0; + + enrollFingerprintAndFace(userId); + + showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */); + + mAuthController.onBiometricError(modality, + BiometricConstants.BIOMETRIC_PAUSED_REJECTED, + 0 /* vendorCode */); + + ArgumentCaptor<Integer> modalityCaptor = ArgumentCaptor.forClass(Integer.class); + ArgumentCaptor<String> messageCaptor = ArgumentCaptor.forClass(String.class); + verify(mDialog1).onAuthenticationFailed(modalityCaptor.capture(), messageCaptor.capture()); + + assertEquals(modalityCaptor.getValue().intValue(), modality); + assertEquals(messageCaptor.getValue(), + mContext.getString(R.string.biometric_face_not_recognized)); + } + + @Test + public void testOnAuthenticationFailedInvoked_whenFingerprintAuthRejected() { + final int modality = BiometricAuthenticator.TYPE_FINGERPRINT; + final int userId = 0; + + enrollFingerprintAndFace(userId); + + showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */); + + mAuthController.onBiometricError(modality, + BiometricConstants.BIOMETRIC_PAUSED_REJECTED, + 0 /* vendorCode */); + + ArgumentCaptor<Integer> modalityCaptor = ArgumentCaptor.forClass(Integer.class); + ArgumentCaptor<String> messageCaptor = ArgumentCaptor.forClass(String.class); + verify(mDialog1).onAuthenticationFailed(modalityCaptor.capture(), messageCaptor.capture()); + + assertEquals(modalityCaptor.getValue().intValue(), modality); + assertEquals(messageCaptor.getValue(), + mContext.getString(R.string.fingerprint_error_not_match)); + } + + @Test public void testOnAuthenticationFailedInvoked_whenBiometricTimedOut() { showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */); final int modality = BiometricAuthenticator.TYPE_FACE; @@ -998,6 +1042,31 @@ public class AuthControllerTest extends SysuiTestCase { return HAT; } + private void enrollFingerprintAndFace(final int userId) { + + // Enroll fingerprint + verify(mFingerprintManager).registerBiometricStateListener( + mBiometricStateCaptor.capture()); + assertFalse(mAuthController.isFingerprintEnrolled(userId)); + + mBiometricStateCaptor.getValue().onEnrollmentsChanged(userId, + 1 /* sensorId */, true /* hasEnrollments */); + waitForIdleSync(); + + assertTrue(mAuthController.isFingerprintEnrolled(userId)); + + // Enroll face + verify(mFaceManager).registerBiometricStateListener( + mBiometricStateCaptor.capture()); + assertFalse(mAuthController.isFaceAuthEnrolled(userId)); + + mBiometricStateCaptor.getValue().onEnrollmentsChanged(userId, + 2 /* sensorId */, true /* hasEnrollments */); + waitForIdleSync(); + + assertTrue(mAuthController.isFaceAuthEnrolled(userId)); + } + private final class TestableAuthController extends AuthController { private int mBuildCount = 0; private PromptInfo mLastBiometricPromptInfo; |