Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5f57c74 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix failing UserManagerServiceMockedTest related to admin flag" into main

parents ebb0b53a fcb36284
Loading
Loading
Loading
Loading
+45 −3
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import static android.multiuser.Flags.FLAG_BLOCK_PRIVATE_SPACE_CREATION;
import static android.multiuser.Flags.FLAG_DEMOTE_MAIN_USER;
import static android.multiuser.Flags.FLAG_DISALLOW_REMOVING_LAST_ADMIN_USER;
import static android.multiuser.Flags.FLAG_ENABLE_PRIVATE_SPACE_FEATURES;
import static android.multiuser.Flags.FLAG_HSU_NOT_ADMIN;
import static android.multiuser.Flags.FLAG_LOGOUT_USER_API;
import static android.multiuser.Flags.FLAG_UNICORN_MODE_REFACTORING_FOR_HSUM_READ_ONLY;
import static android.os.Flags.FLAG_ALLOW_PRIVATE_PROFILE;
@@ -1626,6 +1627,13 @@ public final class UserManagerServiceMockedTest {
    }

    @Test
    @EnableFlags(FLAG_HSU_NOT_ADMIN)
    public void testIsLastFullAdminUser_nonHsum_targetNotSystemUser_returnsFalse_hsuNotAdmin() {
        testIsLastFullAdminUser_nonHsum_targetNotSystemUser_returnsFalse();
    }

    @Test
    @DisableFlags(FLAG_HSU_NOT_ADMIN)
    public void testIsLastFullAdminUser_nonHsum_targetNotSystemUser_returnsFalse() {
        setSystemUserHeadless(false);
        addAdminUser(USER_ID);
@@ -1706,6 +1714,14 @@ public final class UserManagerServiceMockedTest {
    }

    @Test
    @EnableFlags(FLAG_HSU_NOT_ADMIN)
    public void
            testIsLastFullAdminUser_systemUserIsFullAdmin_targetIsOtherFullAdmin_returnsFalse_fl() {
        testIsLastFullAdminUser_systemUserIsFullAdmin_targetIsOtherFullAdmin_returnsFalse();
    }

    @Test
    @DisableFlags(FLAG_HSU_NOT_ADMIN)
    public void
            testIsLastFullAdminUser_systemUserIsFullAdmin_targetIsOtherFullAdmin_returnsFalse() {
        // Ensure system user (0) is full admin
@@ -1717,6 +1733,13 @@ public final class UserManagerServiceMockedTest {
    }

    @Test
    @EnableFlags(FLAG_HSU_NOT_ADMIN)
    public void testIsLastFullAdminUser_systemUserIsFullAdmin_targetIsSystemUser_returnsTrue_fl() {
        testIsLastFullAdminUser_systemUserIsFullAdmin_targetIsSystemUser_returnsTrue();
    }

    @Test
    @DisableFlags(FLAG_HSU_NOT_ADMIN)
    public void testIsLastFullAdminUser_systemUserIsFullAdmin_targetIsSystemUser_returnsTrue() {
        // Ensure system user (0) is full admin
        setSystemUserHeadless(false);
@@ -1728,6 +1751,13 @@ public final class UserManagerServiceMockedTest {
    }

    @Test
    @EnableFlags(FLAG_HSU_NOT_ADMIN)
    public void testIsLastFullAdminUser_targetAdmin_otherFullAdminIsSystemUser_returnsFalse_fl() {
        testIsLastFullAdminUser_targetAdmin_otherFullAdminIsSystemUser_returnsFalse();
    }

    @Test
    @DisableFlags(FLAG_HSU_NOT_ADMIN)
    public void testIsLastFullAdminUser_targetAdmin_otherFullAdminIsSystemUser_returnsFalse() {
        // Ensure system user (0) is full admin
        setSystemUserHeadless(false);
@@ -1827,7 +1857,15 @@ public final class UserManagerServiceMockedTest {
    }

    @Test
    public void testRevokeUserAdminFailsForSystemUser() {
    @EnableFlags(FLAG_HSU_NOT_ADMIN)
    public void testRevokeUserAdminFailsForSystemUser_nonHsum_hsuNotAdmin() {
        testRevokeUserAdminFailsForSystemUser_nonHsum();
    }

    @Test
    @DisableFlags(FLAG_HSU_NOT_ADMIN)
    public void testRevokeUserAdminFailsForSystemUser_nonHsum() {
        setSystemUserHeadless(false);
        mUms.revokeUserAdmin(UserHandle.USER_SYSTEM);

        assertThat(mUsers.get(UserHandle.USER_SYSTEM).info.isAdmin()).isTrue();
@@ -2239,12 +2277,16 @@ public final class UserManagerServiceMockedTest {
    }

    private void setSystemUserHeadless(boolean headless) {
        // Whether system user has FLAG_ADMIN is determined before test is run, based on
        // FLAG_HSU_NOT_ADMIN. If individual test sets this feature flag on/off, we must explicitly
        // set the FLAG_ADMIN for system user accordingly.
        int extraFlags = android.multiuser.Flags.hsuNotAdmin() ? FLAG_ADMIN : 0;
        UserData systemUser = mUsers.get(USER_SYSTEM);
        if (headless) {
            systemUser.info.flags &= ~UserInfo.FLAG_FULL;
            systemUser.info.flags &= ~(UserInfo.FLAG_FULL | extraFlags);
            systemUser.info.userType = UserManager.USER_TYPE_SYSTEM_HEADLESS;
        } else {
            systemUser.info.flags |= UserInfo.FLAG_FULL;
            systemUser.info.flags |= UserInfo.FLAG_FULL | extraFlags;
            systemUser.info.userType = UserManager.USER_TYPE_FULL_SYSTEM;
        }
        doReturn(headless).when(() -> UserManager.isHeadlessSystemUserMode());