From 504c55a3d1cb7381017624a0bcbde912165c816c Mon Sep 17 00:00:00 2001 From: Joe Bolinger Date: Fri, 30 Jun 2023 23:29:59 +0000 Subject: [PATCH] Replace timeout errors with Face not recognized. Also cleans up some invereted asserts in the tests. Bug: 287011195 Test: atest AuthControllerTest Test: manual (use BP test app with coex, authenticated without face and verify error message) Change-Id: Ia97e7f92000c82d121afba16a70ee3db33911815 --- .../systemui/biometrics/AuthController.java | 3 +- .../biometrics/AuthControllerTest.java | 71 ++++++++++--------- 2 files changed, 38 insertions(+), 36 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java index 76e48e9ef711f..2892b19d25bb0 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java @@ -1113,7 +1113,8 @@ public class AuthController implements CoreStartable, CommandQueue.Callbacks, if (DEBUG) Log.d(TAG, "onBiometricError, lockout"); mCurrentDialog.animateToCredentialUI(); } else if (isSoftError) { - final String errorMessage = (error == BiometricConstants.BIOMETRIC_PAUSED_REJECTED) + final String errorMessage = (error == BiometricConstants.BIOMETRIC_PAUSED_REJECTED + || error == BiometricConstants.BIOMETRIC_ERROR_TIMEOUT) ? getNotRecognizedString(modality) : getErrorString(modality, error, vendorCode); if (DEBUG) Log.d(TAG, "onBiometricError, soft error: " + errorMessage); 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 5cae23ce783a9..1da9efc738ed2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java @@ -191,6 +191,10 @@ public class AuthControllerTest extends SysuiTestCase { private ArgumentCaptor mFaceAuthenticatorsRegisteredCaptor; @Captor private ArgumentCaptor mBiometricStateCaptor; + @Captor + private ArgumentCaptor mModalityCaptor; + @Captor + private ArgumentCaptor mMessageCaptor; @Mock private Resources mResources; @@ -482,17 +486,26 @@ public class AuthControllerTest extends SysuiTestCase { BiometricConstants.BIOMETRIC_PAUSED_REJECTED, 0 /* vendorCode */); - ArgumentCaptor modalityCaptor = ArgumentCaptor.forClass(Integer.class); - ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(String.class); - verify(mDialog1).onAuthenticationFailed(modalityCaptor.capture(), messageCaptor.capture()); + verify(mDialog1).onAuthenticationFailed(mModalityCaptor.capture(), mMessageCaptor.capture()); - assertEquals(modalityCaptor.getValue().intValue(), modality); - assertEquals(messageCaptor.getValue(), + assertEquals(mModalityCaptor.getValue().intValue(), modality); + assertEquals(mMessageCaptor.getValue(), mContext.getString(R.string.biometric_not_recognized)); } @Test - public void testOnAuthenticationFailedInvoked_whenFaceAuthRejected() throws RemoteException { + public void testOnAuthenticationFailedInvoked_coex_whenFaceAuthRejected_withPaused() { + testOnAuthenticationFailedInvoked_coex_whenFaceAuthRejected( + BiometricConstants.BIOMETRIC_PAUSED_REJECTED); + } + + @Test + public void testOnAuthenticationFailedInvoked_coex_whenFaceAuthRejected_withTimeout() { + testOnAuthenticationFailedInvoked_coex_whenFaceAuthRejected( + BiometricConstants.BIOMETRIC_ERROR_TIMEOUT); + } + + private void testOnAuthenticationFailedInvoked_coex_whenFaceAuthRejected(int error) { final int modality = BiometricAuthenticator.TYPE_FACE; final int userId = 0; @@ -500,16 +513,12 @@ public class AuthControllerTest extends SysuiTestCase { showDialog(new int[] {1} /* sensorIds */, false /* credentialAllowed */); - mAuthController.onBiometricError(modality, - BiometricConstants.BIOMETRIC_PAUSED_REJECTED, - 0 /* vendorCode */); + mAuthController.onBiometricError(modality, error, 0 /* vendorCode */); - ArgumentCaptor modalityCaptor = ArgumentCaptor.forClass(Integer.class); - ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(String.class); - verify(mDialog1).onAuthenticationFailed(modalityCaptor.capture(), messageCaptor.capture()); + verify(mDialog1).onAuthenticationFailed(mModalityCaptor.capture(), mMessageCaptor.capture()); - assertEquals(modalityCaptor.getValue().intValue(), modality); - assertEquals(messageCaptor.getValue(), + assertThat(mModalityCaptor.getValue().intValue()).isEqualTo(modality); + assertThat(mMessageCaptor.getValue()).isEqualTo( mContext.getString(R.string.biometric_face_not_recognized)); } @@ -526,12 +535,10 @@ public class AuthControllerTest extends SysuiTestCase { BiometricConstants.BIOMETRIC_PAUSED_REJECTED, 0 /* vendorCode */); - ArgumentCaptor modalityCaptor = ArgumentCaptor.forClass(Integer.class); - ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(String.class); - verify(mDialog1).onAuthenticationFailed(modalityCaptor.capture(), messageCaptor.capture()); + verify(mDialog1).onAuthenticationFailed(mModalityCaptor.capture(), mMessageCaptor.capture()); - assertEquals(modalityCaptor.getValue().intValue(), modality); - assertEquals(messageCaptor.getValue(), + assertThat(mModalityCaptor.getValue().intValue()).isEqualTo(modality); + assertThat(mMessageCaptor.getValue()).isEqualTo( mContext.getString(R.string.fingerprint_error_not_match)); } @@ -543,13 +550,11 @@ public class AuthControllerTest extends SysuiTestCase { final int vendorCode = 0; mAuthController.onBiometricError(modality, error, vendorCode); - ArgumentCaptor modalityCaptor = ArgumentCaptor.forClass(Integer.class); - ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(String.class); - verify(mDialog1).onAuthenticationFailed(modalityCaptor.capture(), messageCaptor.capture()); + verify(mDialog1).onAuthenticationFailed(mModalityCaptor.capture(), mMessageCaptor.capture()); - assertEquals(modalityCaptor.getValue().intValue(), modality); - assertEquals(messageCaptor.getValue(), - FaceManager.getErrorString(mContext, error, vendorCode)); + assertThat(mModalityCaptor.getValue().intValue()).isEqualTo(modality); + assertThat(mMessageCaptor.getValue()).isEqualTo( + mContext.getString(R.string.biometric_not_recognized)); } @Test @@ -559,12 +564,10 @@ public class AuthControllerTest extends SysuiTestCase { final String helpMessage = "help"; mAuthController.onBiometricHelp(modality, helpMessage); - ArgumentCaptor modalityCaptor = ArgumentCaptor.forClass(Integer.class); - ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(String.class); - verify(mDialog1).onHelp(modalityCaptor.capture(), messageCaptor.capture()); + verify(mDialog1).onHelp(mModalityCaptor.capture(), mMessageCaptor.capture()); - assertEquals(modalityCaptor.getValue().intValue(), modality); - assertEquals(messageCaptor.getValue(), helpMessage); + assertThat(mModalityCaptor.getValue().intValue()).isEqualTo(modality); + assertThat(mMessageCaptor.getValue()).isEqualTo(helpMessage); } @Test @@ -575,12 +578,10 @@ public class AuthControllerTest extends SysuiTestCase { final int vendorCode = 0; mAuthController.onBiometricError(modality, error, vendorCode); - ArgumentCaptor modalityCaptor = ArgumentCaptor.forClass(Integer.class); - ArgumentCaptor messageCaptor = ArgumentCaptor.forClass(String.class); - verify(mDialog1).onError(modalityCaptor.capture(), messageCaptor.capture()); + verify(mDialog1).onError(mModalityCaptor.capture(), mMessageCaptor.capture()); - assertEquals(modalityCaptor.getValue().intValue(), modality); - assertEquals(messageCaptor.getValue(), + assertThat(mModalityCaptor.getValue().intValue()).isEqualTo(modality); + assertThat(mMessageCaptor.getValue()).isEqualTo( FaceManager.getErrorString(mContext, error, vendorCode)); }