Introduce LockscreenCredential
Bug: 65239740 Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.password Change-Id: Icb73d639291d6d2eda8015e18e93d0906f916bb2
This commit is contained in:
@@ -41,6 +41,7 @@ import android.app.admin.DevicePolicyManager.PasswordComplexity;
|
||||
import android.content.Intent;
|
||||
import android.os.UserHandle;
|
||||
|
||||
import com.android.internal.widget.LockscreenCredential;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.password.ChooseLockPassword.ChooseLockPasswordFragment;
|
||||
import com.android.settings.password.ChooseLockPassword.IntentBuilder;
|
||||
@@ -87,7 +88,7 @@ public class ChooseLockPasswordTest {
|
||||
@Test
|
||||
public void intentBuilder_setPassword_shouldAddExtras() {
|
||||
Intent intent = new IntentBuilder(application)
|
||||
.setPassword("password".getBytes())
|
||||
.setPassword(LockscreenCredential.createPassword("password"))
|
||||
.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC)
|
||||
.setUserId(123)
|
||||
.build();
|
||||
@@ -95,9 +96,10 @@ public class ChooseLockPasswordTest {
|
||||
assertThat(intent.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true))
|
||||
.named("EXTRA_KEY_HAS_CHALLENGE")
|
||||
.isFalse();
|
||||
assertThat(intent.getByteArrayExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD))
|
||||
assertThat((LockscreenCredential) intent.getParcelableExtra(
|
||||
ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD))
|
||||
.named("EXTRA_KEY_PASSWORD")
|
||||
.isEqualTo("password".getBytes());
|
||||
.isEqualTo(LockscreenCredential.createPassword("password"));
|
||||
assertThat(intent.getIntExtra(PASSWORD_TYPE_KEY, 0))
|
||||
.named("PASSWORD_TYPE_KEY")
|
||||
.isEqualTo(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
|
||||
@@ -154,7 +156,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_NONE,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ "",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"Must contain at least 1 letter",
|
||||
"Must be at least 10 characters");
|
||||
}
|
||||
@@ -166,7 +168,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_HIGH,
|
||||
/* passwordType= */ PASSWORD_QUALITY_NUMERIC,
|
||||
/* userEnteredPassword= */ "",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"PIN must be at least 8 digits");
|
||||
}
|
||||
|
||||
@@ -177,7 +179,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_MEDIUM,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ "",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"Must contain at least 1 letter",
|
||||
"Must be at least 4 characters");
|
||||
}
|
||||
@@ -190,7 +192,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_LOW,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ "",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"Must contain at least 1 letter",
|
||||
"Must contain at least 1 numerical digit",
|
||||
"Must be at least 9 characters");
|
||||
@@ -204,7 +206,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_MEDIUM,
|
||||
/* passwordType= */ PASSWORD_QUALITY_NUMERIC,
|
||||
/* userEnteredPassword= */ "",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"PIN must be at least 11 digits");
|
||||
}
|
||||
|
||||
@@ -216,7 +218,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_HIGH,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ "",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"Must contain at least 2 special symbols",
|
||||
"Must be at least 6 characters");
|
||||
}
|
||||
@@ -229,7 +231,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_NONE,
|
||||
/* passwordType= */ PASSWORD_QUALITY_NUMERIC,
|
||||
/* userEnteredPassword= */ "12345678",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("12345678"),
|
||||
"Ascending, descending, or repeated sequence of digits isn't allowed");
|
||||
}
|
||||
|
||||
@@ -241,7 +243,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_NONE,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ "12345678",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("12345678"),
|
||||
"Ascending, descending, or repeated sequence of digits isn't allowed");
|
||||
}
|
||||
|
||||
@@ -253,7 +255,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_HIGH,
|
||||
/* passwordType= */ PASSWORD_QUALITY_NUMERIC,
|
||||
/* userEnteredPassword= */ "12345678",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("12345678"),
|
||||
"Ascending, descending, or repeated sequence of digits isn't allowed");
|
||||
}
|
||||
|
||||
@@ -265,7 +267,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_HIGH,
|
||||
/* passwordType= */ PASSWORD_QUALITY_NUMERIC,
|
||||
/* userEnteredPassword= */ "12345678",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("12345678"),
|
||||
"Ascending, descending, or repeated sequence of digits isn't allowed");
|
||||
}
|
||||
|
||||
@@ -277,7 +279,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_LOW,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ "12345678",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("12345678"),
|
||||
"Must contain at least 1 letter");
|
||||
}
|
||||
|
||||
@@ -288,7 +290,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_HIGH,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ "",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createNone(),
|
||||
"Must contain at least 1 letter",
|
||||
"Must be at least 6 characters");
|
||||
}
|
||||
@@ -300,7 +302,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_HIGH,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ "1",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("1"),
|
||||
"Must contain at least 1 letter",
|
||||
"Must be at least 6 characters");
|
||||
}
|
||||
@@ -312,7 +314,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_HIGH,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ "b",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("b"),
|
||||
"Must be at least 6 characters");
|
||||
}
|
||||
|
||||
@@ -323,7 +325,7 @@ public class ChooseLockPasswordTest {
|
||||
assertPasswordValidationResult(
|
||||
/* minComplexity= */ PASSWORD_COMPLEXITY_HIGH,
|
||||
/* passwordType= */ PASSWORD_QUALITY_ALPHABETIC,
|
||||
/* userEnteredPassword= */ "b1",
|
||||
/* userEnteredPassword= */ LockscreenCredential.createPassword("b1"),
|
||||
"Must be at least 6 characters");
|
||||
}
|
||||
|
||||
@@ -359,16 +361,15 @@ public class ChooseLockPasswordTest {
|
||||
}
|
||||
|
||||
private void assertPasswordValidationResult(@PasswordComplexity int minComplexity,
|
||||
int passwordType, String userEnteredPassword, String... expectedValidationResult) {
|
||||
int passwordType, LockscreenCredential userEnteredPassword,
|
||||
String... expectedValidationResult) {
|
||||
Intent intent = new Intent();
|
||||
intent.putExtra(CONFIRM_CREDENTIALS, false);
|
||||
intent.putExtra(PASSWORD_TYPE_KEY, passwordType);
|
||||
intent.putExtra(EXTRA_KEY_REQUESTED_MIN_COMPLEXITY, minComplexity);
|
||||
ChooseLockPassword activity = buildChooseLockPasswordActivity(intent);
|
||||
ChooseLockPasswordFragment fragment = getChooseLockPasswordFragment(activity);
|
||||
byte[] userEnteredPasswordBytes = userEnteredPassword != null
|
||||
? userEnteredPassword.getBytes() : null;
|
||||
int validateResult = fragment.validatePassword(userEnteredPasswordBytes);
|
||||
int validateResult = fragment.validatePassword(userEnteredPassword);
|
||||
String[] messages = fragment.convertErrorCodeToMessages(validateResult);
|
||||
|
||||
assertThat(messages).asList().containsExactly((Object[]) expectedValidationResult);
|
||||
|
@@ -24,6 +24,8 @@ import android.content.Intent;
|
||||
import android.os.UserHandle;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.internal.widget.LockscreenCredential;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.password.ChooseLockPattern.ChooseLockPatternFragment;
|
||||
import com.android.settings.password.ChooseLockPattern.IntentBuilder;
|
||||
@@ -52,7 +54,7 @@ public class ChooseLockPatternTest {
|
||||
@Test
|
||||
public void intentBuilder_setPattern_shouldAddExtras() {
|
||||
Intent intent = new IntentBuilder(application)
|
||||
.setPattern("pattern".getBytes())
|
||||
.setPattern(createPattern("1234"))
|
||||
.setUserId(123)
|
||||
.build();
|
||||
|
||||
@@ -60,10 +62,10 @@ public class ChooseLockPatternTest {
|
||||
.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true))
|
||||
.named("EXTRA_KEY_HAS_CHALLENGE")
|
||||
.isFalse();
|
||||
assertThat(intent
|
||||
.getByteArrayExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD))
|
||||
assertThat((LockscreenCredential) intent
|
||||
.getParcelableExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD))
|
||||
.named("EXTRA_KEY_PASSWORD")
|
||||
.isEqualTo("pattern".getBytes());
|
||||
.isEqualTo(createPattern("1234"));
|
||||
assertThat(intent.getIntExtra(Intent.EXTRA_USER_ID, 0))
|
||||
.named("EXTRA_USER_ID")
|
||||
.isEqualTo(123);
|
||||
@@ -120,4 +122,9 @@ public class ChooseLockPatternTest {
|
||||
.build())
|
||||
.setup().get();
|
||||
}
|
||||
|
||||
private LockscreenCredential createPattern(String patternString) {
|
||||
return LockscreenCredential.createPattern(LockPatternUtils.byteArrayToPattern(
|
||||
patternString.getBytes()));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user