blob: bffcb00e39c7de5bf08f9cbcc54e87a7bfaab27f [file] [log] [blame]
package com.android.cts.managedprofile;
import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS;
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX;
import static com.google.common.truth.Truth.assertThat;
import android.app.admin.DevicePolicyManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.os.PersistableBundle;
/**
* Tests that the {@link DevicePolicyManager} APIs that should work for {@link
* DevicePolicyManager#getParentProfileInstance(ComponentName)} are supported.
*
* <p>Minimum restriction APIs are already tested by {@link PasswordMinimumRestrictionsTest}.
*/
public class DevicePolicyManagerParentSupportTest extends BaseManagedProfileTest {
private static final ComponentName FAKE_COMPONENT = new ComponentName(
FakeComponent.class.getPackage().getName(), FakeComponent.class.getName());
public void testSetAndGetPasswordQuality_onParent() {
mParentDevicePolicyManager.setPasswordQuality(
ADMIN_RECEIVER_COMPONENT, PASSWORD_QUALITY_NUMERIC_COMPLEX);
final int actualPasswordQuality =
mParentDevicePolicyManager.getPasswordQuality(ADMIN_RECEIVER_COMPONENT);
assertThat(actualPasswordQuality).isEqualTo(PASSWORD_QUALITY_NUMERIC_COMPLEX);
}
public void testSetAndGetPasswordHistoryLength_onParent() {
if (!mHasSecureLockScreen) {
return;
}
final int passwordHistoryLength = 5;
mParentDevicePolicyManager.setPasswordHistoryLength(
ADMIN_RECEIVER_COMPONENT, passwordHistoryLength);
final int actualPasswordHistoryLength =
mParentDevicePolicyManager.getPasswordHistoryLength(ADMIN_RECEIVER_COMPONENT);
assertThat(actualPasswordHistoryLength).isEqualTo(passwordHistoryLength);
}
public void testGetPasswordComplexity_onParent() {
if (!mHasSecureLockScreen) {
return;
}
final int actualPasswordComplexity =
mParentDevicePolicyManager.getPasswordComplexity();
assertThat(actualPasswordComplexity).isEqualTo(
DevicePolicyManager.PASSWORD_COMPLEXITY_NONE);
}
public void testSetAndGetPasswordExpirationTimeout_onParent() {
if (!mHasSecureLockScreen) {
return;
}
final int passwordExpirationTimeout = 432000000;
mParentDevicePolicyManager.setPasswordExpirationTimeout(
ADMIN_RECEIVER_COMPONENT, passwordExpirationTimeout);
final long actualPasswordExpirationTimeout =
mParentDevicePolicyManager.getPasswordExpirationTimeout(ADMIN_RECEIVER_COMPONENT);
assertThat(actualPasswordExpirationTimeout).isEqualTo(passwordExpirationTimeout);
}
public void testGetPasswordExpiration_onParent() {
if (!mHasSecureLockScreen) {
return;
}
final long passwordExpirationTimeout = 432000000;
final long currentTime = System.currentTimeMillis();
mParentDevicePolicyManager.setPasswordExpirationTimeout(
ADMIN_RECEIVER_COMPONENT, passwordExpirationTimeout);
final long actualPasswordExpiration =
mParentDevicePolicyManager.getPasswordExpiration(ADMIN_RECEIVER_COMPONENT);
assertThat(actualPasswordExpiration).isAtLeast(passwordExpirationTimeout + currentTime);
}
public void testGetMaximumPasswordLength_onParent() {
if (!mHasSecureLockScreen) {
return;
}
final int actualMaximumPasswordLength =
mParentDevicePolicyManager.getPasswordMaximumLength(
PASSWORD_QUALITY_NUMERIC_COMPLEX);
assertThat(actualMaximumPasswordLength).isGreaterThan(0);
}
public void testIsActivePasswordSufficient_onParent_isSupported() {
setPasswordQuality(PASSWORD_QUALITY_NUMERIC_COMPLEX);
assertThat(mParentDevicePolicyManager.isActivePasswordSufficient()).isFalse();
}
private void setPasswordQuality(int quality) {
mParentDevicePolicyManager.setPasswordQuality(ADMIN_RECEIVER_COMPONENT, quality);
}
public void testGetCurrentFailedPasswordAttempts_onParent_isSupported() {
assertThat(mParentDevicePolicyManager.getCurrentFailedPasswordAttempts()).isEqualTo(0);
}
public void testSetAndGetMaximumFailedPasswordsForWipe_onParent() {
if (!mHasSecureLockScreen) {
return;
}
final int maximumFailedPasswordsForWipe = 15;
mParentDevicePolicyManager.setMaximumFailedPasswordsForWipe(
ADMIN_RECEIVER_COMPONENT, maximumFailedPasswordsForWipe);
final int actualMaximumFailedPasswordsForWipe =
mParentDevicePolicyManager.getMaximumFailedPasswordsForWipe(
ADMIN_RECEIVER_COMPONENT);
assertThat(actualMaximumFailedPasswordsForWipe).isEqualTo(maximumFailedPasswordsForWipe);
}
public void testSetAndGetMaximumTimeToLock_onParent() {
final int maximumTimeToLock = 6000;
mParentDevicePolicyManager.setMaximumTimeToLock(
ADMIN_RECEIVER_COMPONENT, maximumTimeToLock);
final long actualMaximumTimeToLock =
mParentDevicePolicyManager.getMaximumTimeToLock(ADMIN_RECEIVER_COMPONENT);
assertThat(actualMaximumTimeToLock).isEqualTo(maximumTimeToLock);
}
public void testLockNow_onParent_isSupported() {
mParentDevicePolicyManager.lockNow();
// Will fail if a SecurityException is thrown.
}
public void testSetAndGetKeyguardDisabledFeatures_onParent() {
mParentDevicePolicyManager.setKeyguardDisabledFeatures(
ADMIN_RECEIVER_COMPONENT, KEYGUARD_DISABLE_TRUST_AGENTS);
long actualKeyguardDisabledFeatures =
mParentDevicePolicyManager.getKeyguardDisabledFeatures(ADMIN_RECEIVER_COMPONENT);
assertThat(actualKeyguardDisabledFeatures).isEqualTo(KEYGUARD_DISABLE_TRUST_AGENTS);
}
public void testSetAndGetTrustAgentConfiguration_onParent() {
if (!mHasSecureLockScreen) {
return;
}
final PersistableBundle configuration = new PersistableBundle();
final String key = "key";
final String value = "value";
configuration.putString(key, value);
mParentDevicePolicyManager.setTrustAgentConfiguration(
ADMIN_RECEIVER_COMPONENT, FAKE_COMPONENT, configuration);
final PersistableBundle actualConfiguration =
mParentDevicePolicyManager.getTrustAgentConfiguration(
ADMIN_RECEIVER_COMPONENT, FAKE_COMPONENT).get(0);
assertThat(actualConfiguration.get(key)).isEqualTo(value);
}
public void testSetAndGetRequiredStrongAuthTimeout_onParent() {
if (!mHasSecureLockScreen) {
return;
}
final int requiredStrongAuthTimeout = 4600000;
mParentDevicePolicyManager.setRequiredStrongAuthTimeout(
ADMIN_RECEIVER_COMPONENT, requiredStrongAuthTimeout);
final long actualRequiredStrongAuthTimeout =
mParentDevicePolicyManager.getRequiredStrongAuthTimeout(ADMIN_RECEIVER_COMPONENT);
assertThat(actualRequiredStrongAuthTimeout).isEqualTo(requiredStrongAuthTimeout);
}
public abstract class FakeComponent extends BroadcastReceiver {}
}