summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Eric Biggers <ebiggers@google.com> 2023-03-08 22:38:34 +0000
committer Eric Biggers <ebiggers@google.com> 2023-03-08 23:25:51 +0000
commitdd9add8ef345baf6582eb0e3fc830053d213e04c (patch)
tree8e02a4f82d61274fa0ced3314a28097703f7bd64
parent2acd6320c93f3b9336f4ccc39f83368600468133 (diff)
Make the Factory Reset Protection unit tests work on TV
Some unit tests in LockscreenFrpTest and SyntheticPasswordTests are broken on cf_x86_tv-userdebug because TV has config_enableCredentialFactoryResetProtection set to false. This isn't a recent breakage -- it's been like this for a long time. Fix this by mocking out the Resources so that the locksettings unit tests work the same way on TV as on phone. Bug: 272294822 Bug: 272295113 Test: atest com.android.server.locksettings # with cf_x86_tv-userdebug Change-Id: I6296ca007112178867ed450057d5d2db8c94a09f
-rw-r--r--services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java21
-rw-r--r--services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java5
-rw-r--r--services/tests/servicestests/src/com/android/server/locksettings/MockLockSettingsContext.java20
3 files changed, 37 insertions, 9 deletions
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
index c9612cd80ac6..ad63da516b15 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/BaseLockSettingsServiceTests.java
@@ -39,6 +39,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
+import android.content.res.Resources;
import android.hardware.authsecret.IAuthSecret;
import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager;
@@ -97,6 +98,7 @@ public abstract class BaseLockSettingsServiceTests {
MockLockSettingsContext mContext;
LockSettingsStorageTestable mStorage;
+ Resources mResources;
FakeGateKeeperService mGateKeeperService;
NotificationManager mNotificationManager;
UserManager mUserManager;
@@ -122,6 +124,7 @@ public abstract class BaseLockSettingsServiceTests {
@Before
public void setUp_baseServices() throws Exception {
+ mResources = createMockResources();
mGateKeeperService = new FakeGateKeeperService();
mNotificationManager = mock(NotificationManager.class);
mUserManager = mock(UserManager.class);
@@ -146,7 +149,7 @@ public abstract class BaseLockSettingsServiceTests {
LocalServices.addService(WindowManagerInternal.class, mMockWindowManager);
final Context origContext = InstrumentationRegistry.getContext();
- mContext = new MockLockSettingsContext(origContext,
+ mContext = new MockLockSettingsContext(origContext, mResources,
mSettingsRule.mockContentResolver(origContext), mUserManager, mNotificationManager,
mDevicePolicyManager, mock(StorageManager.class), mock(TrustManager.class),
mock(KeyguardManager.class), mFingerprintManager, mFaceManager, mPackageManager);
@@ -245,6 +248,22 @@ public abstract class BaseLockSettingsServiceTests {
mLocalService = LocalServices.getService(LockSettingsInternal.class);
}
+ private Resources createMockResources() {
+ Resources res = mock(Resources.class);
+
+ // Set up some default configs, copied from core/res/res/values/config.xml
+ when(res.getBoolean(eq(com.android.internal.R.bool.config_disableLockscreenByDefault)))
+ .thenReturn(false);
+ when(res.getBoolean(
+ eq(com.android.internal.R.bool.config_enableCredentialFactoryResetProtection)))
+ .thenReturn(true);
+ when(res.getBoolean(eq(com.android.internal.R.bool.config_isMainUserPermanentAdmin)))
+ .thenReturn(true);
+ when(res.getBoolean(eq(com.android.internal.R.bool.config_strongAuthRequiredOnBoot)))
+ .thenReturn(true);
+ return res;
+ }
+
protected void setDeviceProvisioned(boolean provisioned) {
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVICE_PROVISIONED, provisioned ? 1 : 0);
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
index 05208441e3f2..10ed882f343f 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsStorageTests.java
@@ -34,6 +34,7 @@ import android.app.trust.TrustManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
+import android.content.res.Resources;
import android.database.sqlite.SQLiteDatabase;
import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager;
@@ -106,8 +107,8 @@ public class LockSettingsStorageTests {
when(mockUserManager.getProfileParent(eq(3))).thenReturn(new UserInfo(0, "name", 0));
MockLockSettingsContext context = new MockLockSettingsContext(origContext,
- mSettingsRule.mockContentResolver(origContext), mockUserManager,
- mock(NotificationManager.class), mock(DevicePolicyManager.class),
+ mock(Resources.class), mSettingsRule.mockContentResolver(origContext),
+ mockUserManager, mock(NotificationManager.class), mock(DevicePolicyManager.class),
mock(StorageManager.class), mock(TrustManager.class), mock(KeyguardManager.class),
mock(FingerprintManager.class), mock(FaceManager.class),
mock(PackageManager.class));
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/MockLockSettingsContext.java b/services/tests/servicestests/src/com/android/server/locksettings/MockLockSettingsContext.java
index 21c367b3a6e2..96d7cbe00429 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/MockLockSettingsContext.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/MockLockSettingsContext.java
@@ -27,6 +27,7 @@ import android.content.ContextWrapper;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
+import android.content.res.Resources;
import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Handler;
@@ -36,6 +37,7 @@ import android.os.storage.StorageManager;
public class MockLockSettingsContext extends ContextWrapper {
+ private final Resources mResources;
private final ContentResolver mContentResolver;
private final UserManager mUserManager;
private final NotificationManager mNotificationManager;
@@ -47,13 +49,14 @@ public class MockLockSettingsContext extends ContextWrapper {
private final FaceManager mFaceManager;
private final PackageManager mPackageManager;
- public MockLockSettingsContext(Context base, ContentResolver contentResolver,
- UserManager userManager, NotificationManager notificationManager,
- DevicePolicyManager devicePolicyManager, StorageManager storageManager,
- TrustManager trustManager, KeyguardManager keyguardManager,
- FingerprintManager fingerprintManager, FaceManager faceManager,
- PackageManager packageManager) {
+ public MockLockSettingsContext(Context base, Resources resources,
+ ContentResolver contentResolver, UserManager userManager,
+ NotificationManager notificationManager, DevicePolicyManager devicePolicyManager,
+ StorageManager storageManager, TrustManager trustManager,
+ KeyguardManager keyguardManager, FingerprintManager fingerprintManager,
+ FaceManager faceManager, PackageManager packageManager) {
super(base);
+ mResources = resources;
mContentResolver = contentResolver;
mUserManager = userManager;
mNotificationManager = notificationManager;
@@ -67,6 +70,11 @@ public class MockLockSettingsContext extends ContextWrapper {
}
@Override
+ public Resources getResources() {
+ return mResources;
+ }
+
+ @Override
public ContentResolver getContentResolver() {
return mContentResolver;
}