Merge "Password constraints cleanup."
This commit is contained in:
@@ -77,7 +77,6 @@ public class ChooseLockPasswordTest {
|
||||
SettingsShadowResources.overrideResource(
|
||||
com.android.internal.R.string.config_headlineFontFamily, "");
|
||||
mShadowDpm = ShadowDevicePolicyManager.getShadow();
|
||||
mShadowDpm.setPasswordMaximumLength(16);
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -157,7 +156,7 @@ public class ChooseLockPasswordTest {
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_NONE,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"Must contain at least 1 letter",
|
||||
"Must contain at least 1 non-numerical character",
|
||||
"Must be at least 10 characters");
|
||||
}
|
||||
|
||||
@@ -180,7 +179,7 @@ public class ChooseLockPasswordTest {
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_MEDIUM,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"Must contain at least 1 letter",
|
||||
"Must contain at least 1 non-numerical character",
|
||||
"Must be at least 4 characters");
|
||||
}
|
||||
|
||||
@@ -193,7 +192,7 @@ public class ChooseLockPasswordTest {
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_LOW,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"Must contain at least 1 letter",
|
||||
"Must contain at least 1 non-numerical character",
|
||||
"Must contain at least 1 numerical digit",
|
||||
"Must be at least 9 characters");
|
||||
}
|
||||
@@ -220,7 +219,9 @@ public class ChooseLockPasswordTest {
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"Must contain at least 2 special symbols",
|
||||
"Must be at least 6 characters");
|
||||
"Must be at least 6 characters",
|
||||
"Must contain at least 1 letter",
|
||||
"Must contain at least 1 numerical digit");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -280,7 +281,7 @@ public class ChooseLockPasswordTest {
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_LOW,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("12345678"),
|
||||
"Must contain at least 1 letter");
|
||||
"Ascending, descending, or repeated sequence of digits isn't allowed");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -291,8 +292,8 @@ public class ChooseLockPasswordTest {
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_HIGH,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"Must contain at least 1 letter",
|
||||
"Must be at least 6 characters");
|
||||
"Must be at least 6 characters",
|
||||
"Must contain at least 1 non-numerical character");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -303,8 +304,8 @@ public class ChooseLockPasswordTest {
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_HIGH,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("1"),
|
||||
"Must contain at least 1 letter",
|
||||
"Must be at least 6 characters");
|
||||
"Must be at least 6 characters",
|
||||
"Must contain at least 1 non-numerical character");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -329,6 +330,28 @@ public class ChooseLockPasswordTest {
|
||||
"Must be at least 6 characters");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void processAndValidatePasswordRequirements_defaultPinMinimumLength() {
|
||||
mShadowDpm.setPasswordQuality(PASSWORD_QUALITY_UNSPECIFIED);
|
||||
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_NONE,
|
||||
/* passwordType= */ PASSWORD_QUALITY_NUMERIC,
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("11"),
|
||||
"PIN must be at least 4 digits");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void processAndValidatePasswordRequirements_maximumLength() {
|
||||
mShadowDpm.setPasswordQuality(PASSWORD_QUALITY_UNSPECIFIED);
|
||||
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_NONE,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
LockscreenCredential.createPassword("01234567890123456789"),
|
||||
"Must be fewer than 17 characters");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void assertThat_chooseLockIconChanged_WhenFingerprintExtraSet() {
|
||||
ShadowDrawable drawable = setActivityAndGetIconDrawable(true);
|
||||
@@ -369,9 +392,8 @@ public class ChooseLockPasswordTest {
|
||||
intent.putExtra(EXTRA_KEY_REQUESTED_MIN_COMPLEXITY, minComplexity);
|
||||
ChooseLockPassword activity = buildChooseLockPasswordActivity(intent);
|
||||
ChooseLockPasswordFragment fragment = getChooseLockPasswordFragment(activity);
|
||||
int validateResult = fragment.validatePassword(userEnteredPassword);
|
||||
String[] messages = fragment.convertErrorCodeToMessages(validateResult);
|
||||
|
||||
fragment.validatePassword(userEnteredPassword);
|
||||
String[] messages = fragment.convertErrorCodeToMessages();
|
||||
assertThat(messages).asList().containsExactly((Object[]) expectedValidationResult);
|
||||
}
|
||||
}
|
||||
|
@@ -6,6 +6,8 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.UserIdInt;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.app.admin.PasswordMetrics;
|
||||
import android.app.admin.PasswordPolicy;
|
||||
import android.content.ComponentName;
|
||||
|
||||
import org.robolectric.RuntimeEnvironment;
|
||||
@@ -26,7 +28,6 @@ public class ShadowDevicePolicyManager extends org.robolectric.shadows.ShadowDev
|
||||
private ComponentName mDeviceOwnerComponentName;
|
||||
private int mDeviceOwnerUserId = -1;
|
||||
private int mPasswordMinQuality = PASSWORD_QUALITY_UNSPECIFIED;
|
||||
private int mPasswordMaxLength = 16;
|
||||
private int mPasswordMinLength = 0;
|
||||
private int mPasswordMinSymbols = 0;
|
||||
|
||||
@@ -77,41 +78,26 @@ public class ShadowDevicePolicyManager extends org.robolectric.shadows.ShadowDev
|
||||
}
|
||||
|
||||
@Implementation
|
||||
public int getPasswordQuality(ComponentName admin, int userHandle) {
|
||||
return mPasswordMinQuality;
|
||||
public PasswordMetrics getPasswordMinimumMetrics(int userHandle) {
|
||||
PasswordPolicy policy = new PasswordPolicy();
|
||||
policy.quality = mPasswordMinQuality;
|
||||
policy.length = mPasswordMinLength;
|
||||
policy.symbols = mPasswordMinSymbols;
|
||||
return policy.getMinMetrics();
|
||||
}
|
||||
|
||||
public void setPasswordQuality(int quality) {
|
||||
mPasswordMinQuality = quality;
|
||||
}
|
||||
|
||||
@Implementation
|
||||
public int getPasswordMinimumLength(ComponentName admin, int userHandle) {
|
||||
return mPasswordMinLength;
|
||||
}
|
||||
|
||||
public void setPasswordMinimumLength(int length) {
|
||||
mPasswordMinLength = length;
|
||||
}
|
||||
|
||||
@Implementation
|
||||
public int getPasswordMinimumSymbols(ComponentName admin, int userHandle) {
|
||||
return mPasswordMinSymbols;
|
||||
}
|
||||
|
||||
public void setPasswordMinimumSymbols(int numOfSymbols) {
|
||||
mPasswordMinSymbols = numOfSymbols;
|
||||
}
|
||||
|
||||
@Implementation
|
||||
public int getPasswordMaximumLength(int quality) {
|
||||
return mPasswordMaxLength;
|
||||
}
|
||||
|
||||
public void setPasswordMaximumLength(int length) {
|
||||
mPasswordMaxLength = length;
|
||||
}
|
||||
|
||||
public static ShadowDevicePolicyManager getShadow() {
|
||||
return (ShadowDevicePolicyManager) Shadow.extract(
|
||||
RuntimeEnvironment.application.getSystemService(DevicePolicyManager.class));
|
||||
|
Reference in New Issue
Block a user