package org.ovirt.engine.core.dao;
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
import org.ovirt.engine.core.common.VdcObjectType;
import org.ovirt.engine.core.common.businessentities.permissions;
import org.ovirt.engine.core.compat.Guid;
public class PermissionDAOTest extends BaseDAOTestCase {
private static final Guid STORAGE_POOL_ID = new Guid("6d849ebf-755f-4552-ad09-9a090cda105d");
private static final Guid ROLE_ID = new Guid("119caae6-5c1b-4a82-9858-dd9e5d2e1400");
private static final Guid AD_ELEMENT_ID = new Guid("9bf7c640-b620-456f-a550-0348f366544b");
private static final Guid VM_ENTITY_ID = new Guid("77296e00-0cad-4e5a-9299-008a7b6f4354");
private static final Guid EXISTING_PERMISSION_ID = new Guid("9304ce01-2f5f-41b5-92c7-9d69ef0bcfbc");
private static final Guid VDS_ENTITY_ID = new Guid("afce7a39-8e8c-4819-ba9c-796d316592e6");
private static final Guid VM_TEMPLATE_ENTITY_ID = new Guid("1b85420c-b84c-4f29-997e-0eb674b40b79");
private static final Guid VM_POOL_ENTITY_ID = new Guid("103cfd1d-18b1-4790-8a0c-1e52621b0076");
private static final Guid CLUSTER_ENTITY_ID = new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1");
private static final Guid SYSTEM_ENTITY_ID = new Guid("103cfd1d-18b1-4790-8a0c-1e52621b0077");
private static final Guid STORAGE_POOL_ENTITY_ID = new Guid("103cfd1d-18b1-4790-8a0c-1e52621b0078");
private static final Guid STORAGE_ENTITY_ID = new Guid("103cfd1d-18b1-4790-8a0c-1e52621b0079");
private static final Guid USER_ENTITY_ID = new Guid("9bf7c640-b620-456f-a550-0348f366544a");
private static final Guid ROLE_ENTITY_ID = new Guid("119caae6-5c1b-4a82-9858-dd9e5d2e1400");
private static final Guid VDS_GROUP_ID = new Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1");
private PermissionDAO dao;
private permissions new_permissions;
@Override
public void setUp() throws Exception {
super.setUp();
dao = prepareDAO(dbFacade.getPermissionDAO());
new_permissions = new permissions(AD_ELEMENT_ID, ROLE_ID, STORAGE_POOL_ID,
VdcObjectType.StoragePool);
}
/**
* Ensures that getting a permission with a bad id fails.
*/
@Test
public void testGetWithInvalidId() {
permissions result = dao.get(Guid.NewGuid());
assertNull(result);
}
/**
* Ensures that the right permission is retrieved.
*/
@Test
public void testGet() {
permissions result = dao.get(EXISTING_PERMISSION_ID);
assertNotNull(result);
assertEquals(EXISTING_PERMISSION_ID, result.getId());
}
/**
* Ensures that a null object is returned when the role is invalid.
*/
@Test
public void testGetAllForRoleAndAdElementAndObjectWithInvalidRole() {
permissions result = dao.getForRoleAndAdElementAndObject(
Guid.NewGuid(), AD_ELEMENT_ID, VM_ENTITY_ID);
assertNull(result);
}
/**
* Ensures that a null object is returned when the element is invalid.
*/
@Test
public void testGetAllForRoleAndAdElementAndObjectWithInvalidAdElement() {
permissions result = dao.getForRoleAndAdElementAndObject(ROLE_ID,
Guid.NewGuid(), VM_ENTITY_ID);
assertNull(result);
}
/**
* Ensures that a null object is returned when the object is invalid.
*/
@Test
public void testGetAllForRoleAndAdElementAndObjectWithInvalidObject() {
permissions result = dao.getForRoleAndAdElementAndObject(ROLE_ID,
AD_ELEMENT_ID, Guid.NewGuid());
assertNull(result);
}
/**
* Ensures that a null object is returned when the role is invalid.
*/
@Test
public void testGetAllForRoleAndAdElementAndObject() {
permissions result = dao.getForRoleAndAdElementAndObject(ROLE_ID,
AD_ELEMENT_ID, VM_ENTITY_ID);
assertNotNull(result);
assertEquals(ROLE_ID, result.getrole_id());
assertEquals(AD_ELEMENT_ID, result.getad_element_id());
assertEquals(VM_ENTITY_ID, result.getObjectId());
}
/**
* Ensures that an empty collection is returned.
*/
@Test
public void testGetAllForAdElementWithInvalidId() {
List<permissions> result = dao.getAllForAdElement(Guid.NewGuid());
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures that the right set of permissions are returned.
*/
@Test
public void testGetAllForAdElement() {
List<permissions> result = dao.getAllForAdElement(AD_ELEMENT_ID);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertEquals(AD_ELEMENT_ID, permission.getad_element_id());
}
}
/**
* Ensures that an empty collection is returned.
*/
@Test
public void testGetAllForAdElementOnlyWithInvalidId() {
List<permissions> result = dao.getAllDirectPermissionsForAdElement(Guid.NewGuid());
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures that the right set of permissions are returned.
*/
@Test
public void testGetAllForAdElementOnly() {
List<permissions> result = dao.getAllDirectPermissionsForAdElement(AD_ELEMENT_ID);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertEquals(AD_ELEMENT_ID, permission.getad_element_id());
}
}
/**
* Ensures that an empty collection is returned.
*/
@Test
public void testGetAllForEntityWithInvalidId() {
List<permissions> result = dao.getAllForEntity(Guid.NewGuid());
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures that the right permissions are returned for the specified id.
*/
@Test
public void testGetAllForEntity() {
List<permissions> result = dao.getAllForEntity(VM_ENTITY_ID);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertEquals(VM_ENTITY_ID, permission.getObjectId());
}
}
/**
* Ensures that an empty collection is returned.
*/
@Test
public void testGetAllForRoleWithInvalidRole() {
List<permissions> result = dao.getAllForRole(Guid.NewGuid());
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures that a collection of permissions are returned.
*/
@Test
public void testGetAllForRole() {
List<permissions> result = dao.getAllForRole(ROLE_ID);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertEquals(ROLE_ID, permission.getrole_id());
}
}
/**
* Ensures that an empty collection is returned if the specified role doesn't have any permissions with the
* specified ad element.
*/
@Test
public void testGetAllForRoleAndAdElementWithInvalidRole() {
List<permissions> result = dao.getAllForRoleAndAdElement(
Guid.NewGuid(), AD_ELEMENT_ID);
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures that an empty collection is returned if the specified element doesn't have any permissions with the
* specified role.
*/
@Test
public void testGetAllForRoleAndAdElementWithInvalidElement() {
List<permissions> result = dao.getAllForRoleAndAdElement(ROLE_ID,
Guid.NewGuid());
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures a collection is returned.
*/
@Test
public void testGetAllForRoleAndAdElement() {
List<permissions> result = dao.getAllForRoleAndAdElement(ROLE_ID,
AD_ELEMENT_ID);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertEquals(ROLE_ID, permission.getrole_id());
assertEquals(AD_ELEMENT_ID, permission.getad_element_id());
}
}
/**
* Ensures an empty collection is returned when the specified object and role don't have permissions.
*/
@Test
public void testGetAllForRoleAndObjectWithInvalidRole() {
List<permissions> result = dao.getAllForRoleAndObject(Guid.NewGuid(),
VM_ENTITY_ID);
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures an empty collection is returned when the specified object and role don't have permissions.
*/
@Test
public void testGetAllForRoleAndObjectWithInvalidEntity() {
List<permissions> result = dao.getAllForRoleAndObject(ROLE_ID,
Guid.NewGuid());
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures that the correct collection is returned.
*/
@Test
public void testGetAllForRoleAndObject() {
List<permissions> result = dao.getAllForRoleAndObject(ROLE_ID, VM_ENTITY_ID);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertEquals(ROLE_ID, permission.getrole_id());
assertEquals(VM_ENTITY_ID, permission.getObjectId());
}
}
/**
* Ensures an empty collection is returned when the entity has no permissions tree.
*/
@Test
public void testGetTreeForEntityWithInvalidEntity() {
List<permissions> result = dao.getTreeForEntity(Guid.NewGuid(),
VdcObjectType.AdElements);
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures that the type must match to get the right permissions.
*/
@Test
public void testGetTreeForEntityWithIncorrectType() {
List<permissions> result = dao.getTreeForEntity(VM_ENTITY_ID,
VdcObjectType.Bookmarks);
assertNotNull(result);
assertTrue(result.isEmpty());
}
/**
* Ensures the right list of permissions are returned for a given entity and type.
*/
@Test
public void testGetTreeForEntityWithVmType() {
List<permissions> result = dao.getTreeForEntity(VM_ENTITY_ID,
VdcObjectType.VM);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertTrue(VDS_GROUP_ID.equals(permission.getObjectId()) || VM_ENTITY_ID.equals(permission.getObjectId()));
}
}
@Test
public void testGetTreeForEntityWithVdsType() {
List<permissions> result = dao.getTreeForEntity(VDS_ENTITY_ID,
VdcObjectType.VDS);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertTrue(VDS_GROUP_ID.equals(permission.getObjectId()) || VDS_ENTITY_ID.equals(permission.getObjectId()));
}
}
@Test
public void testGetTreeForEntityWithVmTemplateType() {
List<permissions> result = dao.getTreeForEntity(VM_TEMPLATE_ENTITY_ID,
VdcObjectType.VmTemplate);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertTrue(VDS_GROUP_ID.equals(permission.getObjectId()) || VM_TEMPLATE_ENTITY_ID.equals(permission.getObjectId()));
}
}
@Test
public void testGetTreeForEntityWithVmPoolType() {
List<permissions> result = dao.getTreeForEntity(VM_POOL_ENTITY_ID,
VdcObjectType.VmPool);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertTrue(VDS_GROUP_ID.equals(permission.getObjectId()) || VM_POOL_ENTITY_ID.equals(permission.getObjectId()));
}
}
@Test
public void testGetTreeForEntityWithClusterType() {
List<permissions> result = dao.getTreeForEntity(CLUSTER_ENTITY_ID,
VdcObjectType.VdsGroups);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertTrue(VDS_GROUP_ID.equals(permission.getObjectId()) || CLUSTER_ENTITY_ID.equals(permission.getObjectId()));
}
}
@Test
public void testGetTreeForEntityWithSystemType() {
List<permissions> result = dao.getTreeForEntity(SYSTEM_ENTITY_ID,
VdcObjectType.System);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertTrue(SYSTEM_ENTITY_ID.equals(permission.getObjectId()));
}
}
@Test
public void testGetTreeForEntityWithStoragePoolType() {
List<permissions> result = dao.getTreeForEntity(STORAGE_POOL_ENTITY_ID,
VdcObjectType.StoragePool);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertEquals(STORAGE_POOL_ENTITY_ID, permission.getObjectId());
}
}
@Test
public void testGetTreeForEntityWithStorageType() {
List<permissions> result = dao.getTreeForEntity(STORAGE_ENTITY_ID,
VdcObjectType.Storage);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertEquals(STORAGE_ENTITY_ID, permission.getObjectId());
}
}
@Test
public void testGetTreeForEntityWithUserType() {
List<permissions> result = dao.getTreeForEntity(USER_ENTITY_ID,
VdcObjectType.User);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertEquals(USER_ENTITY_ID, permission.getObjectId());
}
}
@Test
public void testGetTreeForEntityWithRoleType() {
List<permissions> result = dao.getTreeForEntity(ROLE_ENTITY_ID,
VdcObjectType.Role);
assertNotNull(result);
assertFalse(result.isEmpty());
for (permissions permission : result) {
assertEquals(ROLE_ENTITY_ID, permission.getObjectId());
}
}
/**
* Ensures that saving a permission works as expected.
*/
@Test
public void testSave() {
dao.save(new_permissions);
permissions result = dao.getForRoleAndAdElementAndObject(
new_permissions.getrole_id(),
new_permissions.getad_element_id(),
new_permissions.getObjectId());
assertNotNull(result);
assertEquals(new_permissions, result);
}
/**
* Ensures that remove works as expected.
*/
@Test
public void testRemove() {
dao.remove(EXISTING_PERMISSION_ID);
permissions result = dao.get(EXISTING_PERMISSION_ID);
assertNull(result);
}
/**
* Ensures that all permissions for the specified entity are removed.
*/
@Test
public void testRemoveForEntity() {
List<permissions> before = dao.getAllForEntity(VM_ENTITY_ID);
// make sure we have some actual data to work with
assertFalse(before.isEmpty());
dao.removeForEntity(VM_ENTITY_ID);
List<permissions> after = dao.getAllForEntity(VM_ENTITY_ID);
assertTrue(after.isEmpty());
}
}