package org.ovirt.engine.core.bll; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertFalse; import static org.powermock.api.mockito.PowerMockito.mock; import static org.powermock.api.mockito.PowerMockito.mockStatic; import static org.powermock.api.mockito.PowerMockito.when; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.ovirt.engine.core.common.businessentities.RoleType; import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.core.common.businessentities.roles; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dao.PermissionDAO; import org.ovirt.engine.core.dao.RoleDAO; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest({DbFacade.class, MultiLevelAdministrationHandler.class}) @PowerMockIgnore("org.apache.log4j.*") public class MultiLevelAdministrationHandlerTest { private DbFacade dbFacade = mock(DbFacade.class); private Guid adElementId = Guid.NewGuid(); private Guid objectId = new Guid("aaa00000-0000-0000-0000-123456789aaa"); @Mock PermissionDAO permissionDAO; @Mock RoleDAO roleDAO; private DbFacade getDbFacadeMock() { return dbFacade; } @Before public void setUp() { MockitoAnnotations.initMocks(this); mockStatic(DbFacade.class); when(DbFacade.getInstance()).thenReturn(getDbFacadeMock()); when(getDbFacadeMock().getPermissionDAO()).thenReturn(permissionDAO); when(getDbFacadeMock().getRoleDAO()).thenReturn(roleDAO); } // Tests for isAdminUser Method @Test public void isAdminUserTrue() throws Exception { List<roles> roles = new ArrayList<roles>(); roles role = new roles("admin role", adElementId, "admin"); role.setType(RoleType.ADMIN); roles.add(role); when(DbFacade.getInstance().getRoleDAO().getAllForAdElement(adElementId)).thenReturn(roles); assertTrue(MultiLevelAdministrationHandler.isAdminUser(adElementId)); } @Test public void isAdminUserFalse() throws Exception { List<roles> roles = new ArrayList<roles>(); roles role = new roles("user role", adElementId, "user"); role.setType(RoleType.USER); roles.add(role); when(DbFacade.getInstance().getRoleDAO().getAllForAdElement(adElementId)).thenReturn(roles); assertFalse(MultiLevelAdministrationHandler.isAdminUser(adElementId)); } // Tests for isLastSuperUserGroup Method @Test public void isLastSuperUserGroupTrue() throws Exception { List<permissions> permissions = new ArrayList<permissions>(); permissions permisson = new permissions(adElementId, objectId, PredefinedRoles.SUPER_USER.getId()); permissions.add(permisson); when(DbFacade.getInstance().getPermissionDAO().getAllForAdElement(adElementId)).thenReturn(permissions); when(DbFacade.getInstance().getPermissionDAO().getAllForRole(PredefinedRoles.SUPER_USER.getId())).thenReturn(permissions); assertTrue(MultiLevelAdministrationHandler.isLastSuperUserGroup(adElementId)); } @Test public void isLastSuperUserGroupFalse() throws Exception { List<permissions> permissions1 = new ArrayList<permissions>(); List<permissions> permissions2 = new ArrayList<permissions>(); permissions permisson1 = new permissions(adElementId, objectId, PredefinedRoles.SUPER_USER.getId()); permissions permisson2 = new permissions(Guid.NewGuid(), objectId, PredefinedRoles.SUPER_USER.getId()); permissions1.add(permisson1); permissions2.add(permisson1); permissions2.add(permisson2); when(DbFacade.getInstance().getPermissionDAO().getAllForAdElement(adElementId)).thenReturn(permissions1); when(DbFacade.getInstance().getPermissionDAO().getAllForRole(PredefinedRoles.SUPER_USER.getId())).thenReturn(permissions2); assertFalse(MultiLevelAdministrationHandler.isLastSuperUserGroup(adElementId)); } // Tests for isLastSuperUserPermission Method @Test public void isLastSuperUserPermissionTrue() throws Exception { List<permissions> permissions = new ArrayList<permissions>(); permissions permisson = new permissions(adElementId, objectId, PredefinedRoles.SUPER_USER.getId()); permissions.add(permisson); when(DbFacade.getInstance().getPermissionDAO().getAllForRole(PredefinedRoles.SUPER_USER.getId())).thenReturn(permissions); assertTrue(MultiLevelAdministrationHandler.isLastSuperUserPermission(permisson.getrole_id())); } @Test public void isLastSuperUserPermissionFalse() throws Exception { List<permissions> permissions = new ArrayList<permissions>(); permissions permisson1 = new permissions(adElementId, objectId, PredefinedRoles.SUPER_USER.getId()); permissions permisson2 = new permissions(Guid.NewGuid(), objectId, PredefinedRoles.SUPER_USER.getId()); permissions.add(permisson1); permissions.add(permisson2); when(DbFacade.getInstance().getPermissionDAO().getAllForRole(PredefinedRoles.SUPER_USER.getId())).thenReturn(permissions); assertFalse(MultiLevelAdministrationHandler.isLastSuperUserPermission(permisson1.getrole_id())); } }