CTS tests for DPM#getPolicyManagedProfiles

Fixes: 226132274
Test: atest DevicePolicyManagerTest
Change-Id: I220373f303b73e790674aae2045b64427eb88b37
diff --git a/tests/devicepolicy/src/android/devicepolicy/cts/DevicePolicyManagerTest.java b/tests/devicepolicy/src/android/devicepolicy/cts/DevicePolicyManagerTest.java
index 3d5b284..31a662c 100644
--- a/tests/devicepolicy/src/android/devicepolicy/cts/DevicePolicyManagerTest.java
+++ b/tests/devicepolicy/src/android/devicepolicy/cts/DevicePolicyManagerTest.java
@@ -38,6 +38,7 @@
 import static android.nfc.NfcAdapter.ACTION_NDEF_DISCOVERED;
 import static android.nfc.NfcAdapter.EXTRA_NDEF_MESSAGES;
 
+import static com.android.bedstead.nene.users.UserType.MANAGED_PROFILE_TYPE_NAME;
 import static com.android.bedstead.remotedpc.RemoteDpc.REMOTE_DPC_TEST_APP;
 import static com.android.queryable.queries.ServiceQuery.service;
 
@@ -102,6 +103,7 @@
 import com.android.bedstead.nene.packages.Package;
 import com.android.bedstead.nene.permissions.PermissionContext;
 import com.android.bedstead.nene.users.UserReference;
+import com.android.bedstead.nene.users.UserType;
 import com.android.bedstead.nene.utils.Poll;
 import com.android.bedstead.remotedpc.RemoteDpc;
 import com.android.bedstead.testapp.TestApp;
@@ -216,6 +218,8 @@
     private static final PersistableBundle ADMIN_EXTRAS_BUNDLE = createAdminExtrasBundle();
     private static final String TEST_KEY = "test_key";
     private static final String TEST_VALUE = "test_value";
+    private static final UserType MANAGED_PROFILE_USER_TYPE =
+            TestApis.users().supportedType(MANAGED_PROFILE_TYPE_NAME);
 
     @Before
     public void setUp() {
@@ -1706,6 +1710,7 @@
                 /* userdata= */ null);
     }
 
+    @Postsubmit(reason = "new test")
     @Test
     @RequireRunOnPrimaryUser
     @EnsureHasWorkProfile
@@ -1717,6 +1722,7 @@
                         /* migratedAccount= */ null));
     }
 
+    @Postsubmit(reason = "new test")
     @Test
     @EnsureHasPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS)
     public void finalizeWorkProfileProvisioning_nullManagedProfileUser_throwsException() {
@@ -1726,6 +1732,7 @@
                         /* migratedAccount= */ null));
     }
 
+    @Postsubmit(reason = "new test")
     @Test
     @EnsureHasPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS)
     public void finalizeWorkProfileProvisioning_nonExistingManagedProfileUser_throwsException() {
@@ -1735,6 +1742,7 @@
                         /* migratedAccount= */ null));
     }
 
+    @Postsubmit(reason = "new test")
     @Test
     @RequireRunOnPrimaryUser
     @EnsureHasSecondaryUser
@@ -1751,6 +1759,7 @@
         }
     }
 
+    @Postsubmit(reason = "new test")
     @Test
     @RequireRunOnPrimaryUser
     @EnsureHasWorkProfile
@@ -1768,6 +1777,7 @@
         }
     }
 
+    @Postsubmit(reason = "new test")
     @Test
     @EnsureHasPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS)
     @EnsureHasWorkProfile
@@ -1787,6 +1797,7 @@
         }
     }
 
+    @Postsubmit(reason = "new test")
     @Test
     @EnsureHasPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS)
     @EnsureHasWorkProfile
@@ -1807,4 +1818,45 @@
 
         }
     }
+
+    @Postsubmit(reason = "new test")
+    @Test
+    @EnsureHasNoDpc
+    @EnsureHasPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS)
+    public void getPolicyManagedProfiles_noManagedProfiles_returnsEmptyList() {
+        assertThat(sDevicePolicyManager.getPolicyManagedProfiles(
+                TestApis.context().instrumentationContext().getUser())).isEmpty();
+    }
+
+    @Postsubmit(reason = "new test")
+    @Test
+    @EnsureHasWorkProfile
+    @EnsureHasPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS)
+    public void getPolicyManagedProfiles_hasWorkProfile_returnsWorkProfileUser() {
+        assertThat(sDevicePolicyManager.getPolicyManagedProfiles(
+                TestApis.context().instrumentationContext().getUser()))
+                .containsExactly(sDeviceState.workProfile().userHandle());
+    }
+
+    @Postsubmit(reason = "new test")
+    @Test
+    @EnsureHasNoDpc
+    @EnsureHasPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS)
+    public void getPolicyManagedProfiles_hasManagedProfileNoProfileOwner_returnsEmptyList() {
+        try (UserReference user = TestApis.users().createUser().type(MANAGED_PROFILE_USER_TYPE)
+                .parent(TestApis.users().instrumented()).create()) {
+            assertThat(sDevicePolicyManager.getPolicyManagedProfiles(
+                    TestApis.context().instrumentationContext().getUser()))
+                    .isEmpty();
+        }
+    }
+
+    @Postsubmit(reason = "new test")
+    @Test
+    @EnsureHasNoDpc
+    @EnsureDoesNotHavePermission(MANAGE_PROFILE_AND_DEVICE_OWNERS)
+    public void getPolicyManagedProfiles_noPermission_returnsEmptyList() {
+        assertThrows(SecurityException.class, () -> sDevicePolicyManager.getPolicyManagedProfiles(
+                TestApis.context().instrumentationContext().getUser()));
+    }
 }