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

Commit 6c9fc6d6 authored by Wenhui Yang's avatar Wenhui Yang Committed by Android (Google) Code Review
Browse files

Merge "Add unit tests to AuthController" into udc-qpr-dev

parents 66529587 52c1ef37
Loading
Loading
Loading
Loading
+69 −0
Original line number Diff line number Diff line
@@ -491,6 +491,50 @@ public class AuthControllerTest extends SysuiTestCase {
                mContext.getString(R.string.biometric_not_recognized));
    }

    @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 */);
@@ -1017,6 +1061,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;