CTS UserManager: isProfile, isUserOfType, system
Add a few UserManager CTS tests.
Test: android.multiuser.cts.UserManagerTest
Fixes: 155116208
Fixes: 155115136
Bug: 155114273
Change-Id: I76e35eee277ffbd98725a9032b34b0a51aab761b
diff --git a/tests/tests/multiuser/src/android/multiuser/cts/UserManagerTest.java b/tests/tests/multiuser/src/android/multiuser/cts/UserManagerTest.java
index 8aa4e7f..af9898e 100644
--- a/tests/tests/multiuser/src/android/multiuser/cts/UserManagerTest.java
+++ b/tests/tests/multiuser/src/android/multiuser/cts/UserManagerTest.java
@@ -141,6 +141,8 @@
assertThat(cloneUserManager.isMediaSharedWithParent()).isTrue();
assertThat(cloneUserManager.isCredentialSharedWithParent()).isTrue();
assertThat(cloneUserManager.isCloneProfile()).isTrue();
+ assertThat(cloneUserManager.isProfile()).isTrue();
+ assertThat(cloneUserManager.isUserOfType(UserManager.USER_TYPE_PROFILE_CLONE)).isTrue();
final List<UserInfo> list = mUserManager.getUsers(true, true, true);
final UserHandle finalUserHandle = userHandle;
@@ -155,6 +157,53 @@
}
@Test
+ @SystemUserOnly(reason = "Profiles are only supported on system user.")
+ @EnsureHasPermission({CREATE_USERS, QUERY_USERS})
+ public void testManagedProfile() throws Exception {
+ UserHandle userHandle = null;
+
+ try {
+ userHandle = mUserManager.createProfile(
+ "Managed profile", UserManager.USER_TYPE_PROFILE_MANAGED, new HashSet<>());
+ assertThat(userHandle).isNotNull();
+
+ final UserManager umOfProfile = sContext
+ .createPackageContextAsUser("android", 0, userHandle)
+ .getSystemService(UserManager.class);
+
+ // TODO(b/222584163): Remove the if{} clause after v33 Sdk bump.
+ if (Build.VERSION.SDK_INT > Build.VERSION_CODES.S_V2) {
+ assertThat(umOfProfile.isManagedProfile()).isTrue();
+ }
+ assertThat(umOfProfile.isManagedProfile(userHandle.getIdentifier())).isTrue();
+ assertThat(umOfProfile.isProfile()).isTrue();
+ assertThat(umOfProfile.isUserOfType(UserManager.USER_TYPE_PROFILE_MANAGED)).isTrue();
+ } finally {
+ removeUser(userHandle);
+ }
+ }
+
+ @Test
+ @EnsureHasPermission({QUERY_USERS})
+ public void testSystemUser() throws Exception {
+ final UserManager umOfSys = sContext
+ .createPackageContextAsUser("android", 0, UserHandle.SYSTEM)
+ .getSystemService(UserManager.class);
+
+ assertThat(umOfSys.isSystemUser()).isTrue();
+
+ // We cannot demand what type of user SYSTEM is, but we can say some things it isn't.
+ assertThat(umOfSys.isUserOfType(UserManager.USER_TYPE_PROFILE_CLONE)).isFalse();
+ assertThat(umOfSys.isUserOfType(UserManager.USER_TYPE_PROFILE_MANAGED)).isFalse();
+ assertThat(umOfSys.isUserOfType(UserManager.USER_TYPE_FULL_GUEST)).isFalse();
+
+ assertThat(umOfSys.isProfile()).isFalse();
+ assertThat(umOfSys.isManagedProfile()).isFalse();
+ assertThat(umOfSys.isManagedProfile(UserHandle.USER_SYSTEM)).isFalse();
+ assertThat(umOfSys.isCloneProfile()).isFalse();
+ }
+
+ @Test
@SystemUserOnly(reason = "Restricted users are only supported on system user.")
public void testRestrictedUser() throws Exception {
UserHandle user = null;
@@ -174,7 +223,7 @@
final Context userContext = sContext.createPackageContextAsUser("system", 0, user);
final UserManager userUm = userContext.getSystemService(UserManager.class);
- // TODO(183239043): Remove the if{} clause after v33 Sdk bump.
+ // TODO(b/222584163): Remove the if{} clause after v33 Sdk bump.
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.S_V2) {
assertThat(userUm.isRestrictedProfile()).isTrue();
}
@@ -240,7 +289,12 @@
.getSystemService(UserManager.class);
assertThat(userManagerOfNewUser.getUserName()).isEqualTo(request.getName());
+ // TODO(b/222584163): Remove the if{} clause after v33 Sdk bump.
+ if (Build.VERSION.SDK_INT > Build.VERSION_CODES.S_V2) {
+ assertThat(userManagerOfNewUser.isUserNameSet()).isTrue();
+ }
assertThat(userManagerOfNewUser.getUserType()).isEqualTo(request.getUserType());
+ assertThat(userManagerOfNewUser.isUserOfType(request.getUserType())).isEqualTo(true);
// We can not test userIcon and accountOptions,
// because getters require MANAGE_USERS permission.
// And we are already testing accountName and accountType