From a49f4501eb44dd055792eae9b8236dbcf2b589bc Mon Sep 17 00:00:00 2001 From: Rubin Xu Date: Mon, 23 Mar 2020 10:51:34 +0000 Subject: [PATCH] Add unit tests for policy transparency on Fact Auth settings Bug: 135747161 Test: make RunSettingsRoboTests ROBOTEST_FILTER=FaceSettingsLockscreenBypassPreferenceControllerTest Change-Id: I2cca8b923bad910dd539e346536c8b1537c8d367 --- ...kscreenBypassPreferenceControllerTest.java | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceControllerTest.java index 7f7fa4fed13..5fc3f2a1645 100644 --- a/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/biometrics/face/FaceSettingsLockscreenBypassPreferenceControllerTest.java @@ -19,14 +19,20 @@ package com.android.settings.biometrics.face; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; +import android.content.pm.PackageManager; import android.hardware.face.FaceManager; import android.os.UserManager; import android.provider.Settings; -import androidx.preference.SwitchPreference; +import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; +import com.android.settingslib.RestrictedSwitchPreference; import org.junit.Before; import org.junit.Test; @@ -42,7 +48,10 @@ public class FaceSettingsLockscreenBypassPreferenceControllerTest { @Mock private FaceManager mFaceManager; - private SwitchPreference mPreference; + @Mock + private PackageManager mPackageManager; + @Mock + private RestrictedSwitchPreference mPreference; @Mock private UserManager mUserManager; @@ -52,12 +61,15 @@ public class FaceSettingsLockscreenBypassPreferenceControllerTest { @Before public void setUp() { MockitoAnnotations.initMocks(this); - mContext = RuntimeEnvironment.application; - mPreference = new SwitchPreference(mContext); + mContext = spy(RuntimeEnvironment.application); + when(mContext.getSystemService(eq(Context.FACE_SERVICE))).thenReturn(mFaceManager); + when(mContext.getPackageManager()).thenReturn(mPackageManager); - mController = new FaceSettingsLockscreenBypassPreferenceController(mContext, "test_key"); + mController = spy(new FaceSettingsLockscreenBypassPreferenceController(mContext, + "test_key")); ReflectionHelpers.setField(mController, "mFaceManager", mFaceManager); ReflectionHelpers.setField(mController, "mUserManager", mUserManager); + } @Test @@ -86,4 +98,15 @@ public class FaceSettingsLockscreenBypassPreferenceControllerTest { Settings.Secure.FACE_UNLOCK_DISMISSES_KEYGUARD, 0) != 0; assertThat(newState).isEqualTo(!state); } + + @Test + public void preferenceDisabled_byAdmin() { + when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true); + when(mFaceManager.isHardwareDetected()).thenReturn(true); + + EnforcedAdmin admin = new EnforcedAdmin(); + doReturn(admin).when(mController).getRestrictingAdmin(); + mController.updateState(mPreference); + verify(mPreference).setDisabledByAdmin(admin); + } }