package org.ovirt.engine.core.dao; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.util.List; import org.junit.ClassRule; import org.junit.Test; import org.ovirt.engine.core.common.businessentities.Role; import org.ovirt.engine.core.common.businessentities.RoleType; import org.ovirt.engine.core.common.mode.ApplicationMode; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.MockConfigRule; public class RoleDaoTest extends BaseDaoTestCase { @ClassRule public static MockConfigRule mcr = new MockConfigRule(); private static final String GROUP_IDS = "26df4393-659b-4b8a-b0f6-3ee94d32e82f,08963ba9-b1c8-498d-989f-75cf8142eab7"; private static final Guid USER_ID = new Guid("9bf7c640-b620-456f-a550-0348f366544b"); private static final Guid OTHER_USER_ID = new Guid("9bf7c640-b620-456f-a550-0348f366544a"); private static final int ROLE_COUNT = 7; private static final int NON_ADMIN_ROLE_COUNT = 6; private RoleDao dao; private Role existingRole; private Role newRole; @Override public void setUp() throws Exception { super.setUp(); dao = dbFacade.getRoleDao(); existingRole = dao.get(new Guid("f5972bfa-7102-4d33-ad22-9dd421bfba78")); newRole = new Role(); newRole.setName("new role"); newRole.setDescription("This is a new role."); newRole.setType(RoleType.USER); newRole.setAllowsViewingChildren(false); newRole.setAppMode(ApplicationMode.AllModes); } /** * Ensures that the id must be valid. */ @Test public void testGetRoleWithInvalidId() { Role result = dao.get(Guid.newGuid()); assertNull(result); } /** * Ensures that retrieving a role works as expected. */ @Test public void testGetRole() { Role result = dao.get(existingRole.getId()); assertNotNull(result); assertEquals(existingRole, result); } /** * Ensures that an invalid name results in a null role. */ @Test public void testGetRoleByNameWithInvalidName() { Role result = dao.getByName("Farkle"); assertNull(result); } /** * Ensures that retrieving a role by name works as expected. */ @Test public void testGetRoleByName() { Role result = dao.getByName(existingRole.getName()); assertNotNull(result); assertEquals(existingRole, result); } /** * Ensures the right number of roles are returned. */ @Test public void testGetAllRoles() { List<Role> result = dao.getAll(); assertNotNull(result); assertFalse(result.isEmpty()); assertEquals(ROLE_COUNT, result.size()); } /** * Ensures the right number of non-admin roles are returned. */ @Test public void testGetAllNonAdminRoles() { List<Role> result = dao.getAllNonAdminRoles(); assertNotNull(result); assertFalse(result.isEmpty()); assertEquals(NON_ADMIN_ROLE_COUNT, result.size()); } /** * Ensures an admin role is returned */ @Test public void testAnyAdminRoleForUserAndGroups() { List<Role> result = dao.getAnyAdminRoleForUserAndGroups(USER_ID, GROUP_IDS, ApplicationMode.AllModes.getValue()); assertNotNull(result); assertFalse(result.isEmpty()); } /** * Ensures no admin role is returned */ @Test public void testNoAdminRoleForUserAndGroups() { List<Role> result = dao.getAnyAdminRoleForUserAndGroups(OTHER_USER_ID, GROUP_IDS, ApplicationMode.AllModes.getValue()); assertNotNull(result); assertTrue(result.isEmpty()); } @Test public void testGetAllForUsersAndGroupsInvalidUserAndGroups() { List<Role> result = dao.getAnyAdminRoleForUserAndGroups(Guid.newGuid(), Guid.newGuid().toString(), ApplicationMode.AllModes.getValue()); assertNotNull(result); assertTrue(result.isEmpty()); } /** * Ensures that saving a role works as expected. */ @Test public void testSaveRole() { dao.save(newRole); Role result = dao.getByName(newRole.getName()); assertNotNull(result); assertEquals(newRole, result); } /** * Ensures that updating a role works as expected. */ @Test public void testUpdateRole() { existingRole.setDescription("This is an updated description"); dao.update(existingRole); Role result = dao.get(existingRole.getId()); assertNotNull(result); assertEquals(existingRole, result); } /** * Asserts removing a role works as expected */ @Test public void testRemoveRole() { dao.remove(existingRole.getId()); Role result = dao.get(existingRole.getId()); assertNull(result); } }