DPM Test: DA and PO cannot call DPM.reboot()

Bug: 25304994
Change-Id: Ifaccf3625314f4bfcd7f99413abc9067cc3dd2f9
This commit is contained in:
Mahaver Chopra
2015-12-23 14:42:18 +00:00
parent 44b8102d71
commit f8373b5afc
3 changed files with 44 additions and 0 deletions

View File

@@ -207,6 +207,11 @@ public class DevicePolicyManagerServiceTestable extends DevicePolicyManagerServi
context.powerManager.goToSleep(time, reason, flags);
}
@Override
void powerManagerReboot(String reason) {
context.powerManager.reboot(reason);
}
@Override
boolean systemPropertiesGetBoolean(String key, boolean def) {
return context.systemProperties.getBoolean(key, def);

View File

@@ -1349,4 +1349,40 @@ public class DevicePolicyManagerTest extends DpmTestBase {
when(mContext.wifiManager.getConnectionInfo()).thenReturn(wi);
assertEquals("11:22:33:44:55:66", dpm.getWifiMacAddress());
}
public void testRebootCanOnlyBeCalledByDeviceOwner() throws Exception {
mContext.callerPermissions.add(permission.MANAGE_DEVICE_ADMINS);
mContext.callerPermissions.add(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS);
// In this test, change the caller user to "system".
mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
// Make sure admin1 is installed on system user.
setUpPackageManagerForAdmin(admin1, DpmMockContext.CALLER_SYSTEM_USER_UID);
// Set admin1 as DA.
dpm.setActiveAdmin(admin1, false);
assertTrue(dpm.isAdminActive(admin1));
try {
dpm.reboot(admin1);
fail("DA calls DPM.reboot(), did not throw expected SecurityException");
} catch (SecurityException expected) {
MoreAsserts.assertContainsRegex("does not own the device", expected.getMessage());
}
// Set admin1 as PO.
assertTrue(dpm.setProfileOwner(admin1, null, UserHandle.USER_SYSTEM));
try {
dpm.reboot(admin1);
fail("PO calls DPM.reboot(), did not throw expected SecurityException");
} catch (SecurityException expected) {
MoreAsserts.assertContainsRegex("does not own the device", expected.getMessage());
}
// Remove PO and add DO.
dpm.clearProfileOwner(admin1);
assertTrue(dpm.setDeviceOwner(admin1, null, UserHandle.USER_SYSTEM));
dpm.reboot(admin1);
}
}

View File

@@ -134,6 +134,9 @@ public class DpmMockContext extends MockContext {
public void goToSleep(long time, int reason, int flags) {
}
public void reboot(String reason) {
}
}
public static class SystemPropertiesForMock {