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