Skip to content

Commit ffddb7f

Browse files
committed
more test
Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
1 parent ef5cf76 commit ffddb7f

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

server/src/test/java/com/cloud/user/AccountManagerImplTest.java

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.net.UnknownHostException;
2424
import java.util.ArrayList;
2525
import java.util.Arrays;
26+
import java.util.Collections;
2627
import java.util.HashMap;
2728
import java.util.List;
2829
import java.util.Map;
@@ -31,6 +32,7 @@
3132
import org.apache.cloudstack.acl.Role;
3233
import org.apache.cloudstack.acl.RoleService;
3334
import org.apache.cloudstack.acl.RoleType;
35+
import org.apache.cloudstack.acl.SecurityChecker;
3436
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
3537
import org.apache.cloudstack.api.command.admin.account.UpdateAccountCmd;
3638
import org.apache.cloudstack.api.command.admin.user.DeleteUserCmd;
@@ -1591,4 +1593,71 @@ public void testcheckCallerApiPermissionsForUserOperationsNotAllowedApis() {
15911593
accountManagerImpl.checkCallerApiPermissionsForUserOrAccountOperations(accountMock);
15921594
}
15931595
}
1596+
1597+
@Test
1598+
public void isRootAdminReturnsTrueWhenCheckerGrantsAccess() {
1599+
Account account = Mockito.mock(Account.class);
1600+
SecurityChecker checker = Mockito.mock(SecurityChecker.class);
1601+
Mockito.when(checker.checkAccess(account, null, null, "SystemCapability")).thenReturn(true);
1602+
List<SecurityChecker> securityCheckers = List.of(checker);
1603+
accountManagerImpl.setSecurityCheckers(securityCheckers);
1604+
boolean result = accountManagerImpl.isRootAdmin(account);
1605+
1606+
Assert.assertTrue(result);
1607+
}
1608+
1609+
@Test
1610+
public void isRootAdminReturnsFalseWhenCheckerDeniesAccess() {
1611+
Account account = Mockito.mock(Account.class);
1612+
SecurityChecker checker = Mockito.mock(SecurityChecker.class);
1613+
Mockito.when(checker.checkAccess(account, null, null, "SystemCapability")).thenThrow(PermissionDeniedException.class);
1614+
List<SecurityChecker> securityCheckers = List.of(checker);
1615+
accountManagerImpl.setSecurityCheckers(securityCheckers);
1616+
boolean result = accountManagerImpl.isRootAdmin(account);
1617+
1618+
Assert.assertFalse(result);
1619+
}
1620+
1621+
@Test
1622+
public void isRootAdminReturnsFalseWhenAccountIsNull() {
1623+
Account account = null;
1624+
boolean result = accountManagerImpl.isRootAdmin(account);
1625+
Assert.assertFalse(result);
1626+
}
1627+
1628+
@Test
1629+
public void isRootAdminReturnsFalseWhenNoCheckersExist() {
1630+
Account account = Mockito.mock(Account.class);
1631+
accountManagerImpl.setSecurityCheckers(Collections.emptyList());
1632+
boolean result = accountManagerImpl.isRootAdmin(account);
1633+
Assert.assertFalse(result);
1634+
}
1635+
1636+
@Test
1637+
public void isRootAdminReturnsTrueWhenMultipleCheckersGrantAccess() {
1638+
Account account = Mockito.mock(Account.class);
1639+
SecurityChecker checker1 = Mockito.mock(SecurityChecker.class);
1640+
SecurityChecker checker2 = Mockito.mock(SecurityChecker.class);
1641+
Mockito.when(checker1.checkAccess(account, null, null, "SystemCapability")).thenReturn(false);
1642+
Mockito.when(checker2.checkAccess(account, null, null, "SystemCapability")).thenReturn(true);
1643+
List<SecurityChecker> securityCheckers = List.of(checker1, checker2);
1644+
accountManagerImpl.setSecurityCheckers(securityCheckers);
1645+
boolean result = accountManagerImpl.isRootAdmin(account);
1646+
1647+
Assert.assertTrue(result);
1648+
}
1649+
1650+
@Test
1651+
public void isRootAdminReturnsFalseWhenSecondCheckerDenyAccess() {
1652+
Account account = Mockito.mock(Account.class);
1653+
SecurityChecker checker1 = Mockito.mock(SecurityChecker.class);
1654+
SecurityChecker checker2 = Mockito.mock(SecurityChecker.class);
1655+
Mockito.when(checker1.checkAccess(account, null, null, "SystemCapability")).thenReturn(false);
1656+
Mockito.when(checker2.checkAccess(account, null, null, "SystemCapability")).thenThrow(PermissionDeniedException.class);
1657+
List<SecurityChecker> securityCheckers = List.of(checker1, checker2);
1658+
accountManagerImpl.setSecurityCheckers(securityCheckers);
1659+
boolean result = accountManagerImpl.isRootAdmin(account);
1660+
1661+
Assert.assertFalse(result);
1662+
}
15941663
}

0 commit comments

Comments
 (0)