Search in sources :

Example 91 with IdmTreeNodeDto

use of eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto in project CzechIdMng by bcvsolutions.

the class IdentityContractSyncTest method testDeleteDefaultTreeTypeAndNode.

@Test
public void testDeleteDefaultTreeTypeAndNode() {
    SysSystemDto system = initData();
    AbstractSysSyncConfigDto config = doCreateSyncConfig(system);
    Assert.assertTrue(config instanceof SysSyncContractConfigDto);
    SysSyncContractConfigDto configContract = (SysSyncContractConfigDto) config;
    // Set default tree type to sync configuration
    IdmTreeTypeDto treeType = getHelper().createTreeType();
    configContract.setDefaultTreeType(treeType.getId());
    // Set default tree node to sync configuration
    IdmTreeNodeDto treeNode = getHelper().createTreeNode(treeType, null);
    configContract.setDefaultTreeNode(treeNode.getId());
    config = syncConfigService.save(configContract);
    configContract = (SysSyncContractConfigDto) syncConfigService.get(config);
    Assert.assertEquals(treeType.getId(), configContract.getDefaultTreeType());
    Assert.assertEquals(treeNode.getId(), configContract.getDefaultTreeNode());
    treeNodeService.delete(treeNode);
    configContract = (SysSyncContractConfigDto) syncConfigService.get(config);
    Assert.assertEquals(treeType.getId(), configContract.getDefaultTreeType());
    Assert.assertNull(configContract.getDefaultTreeNode());
    treeTypeService.delete(treeType);
    configContract = (SysSyncContractConfigDto) syncConfigService.get(config);
    Assert.assertNull(configContract.getDefaultTreeType());
    Assert.assertNull(configContract.getDefaultTreeNode());
}
Also used : IdmTreeTypeDto(eu.bcvsolutions.idm.core.api.dto.IdmTreeTypeDto) AbstractSysSyncConfigDto(eu.bcvsolutions.idm.acc.dto.AbstractSysSyncConfigDto) SysSyncContractConfigDto(eu.bcvsolutions.idm.acc.dto.SysSyncContractConfigDto) IdmTreeNodeDto(eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto) SysSystemDto(eu.bcvsolutions.idm.acc.dto.SysSystemDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 92 with IdmTreeNodeDto

use of eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto in project CzechIdMng by bcvsolutions.

the class TreeSyncTest method testDifferentialSync.

@Test
public void testDifferentialSync() {
    String treeTypeCode = helper.createName();
    AbstractSysSyncConfigDto syncConfigCustom = this.getBean().doCreateSyncConfig(treeTypeCode, false);
    Assert.assertFalse(syncConfigService.isRunning(syncConfigCustom));
    IdmTreeTypeDto treeType = treeTypeService.find(null).getContent().stream().filter(tree -> {
        return tree.getName().equals(treeTypeCode);
    }).findFirst().get();
    // We want to sync all account under that node!
    IdmTreeNodeDto treeNodeExistedNode = helper.createTreeNode(treeType, null);
    syncConfigCustom.setRootsFilterScript("if(account){ def parentValue = account.getAttributeByName(\"" + helper.getSchemaColumnName("PARENT") + "\").getValue();" + " if(parentValue == null || parentValue.isEmpty()){" + "	 account.getAttributeByName(\"" + helper.getSchemaColumnName("PARENT") + "\").setValues([\"" + treeNodeExistedNode.getId() + "\"]); return Boolean.TRUE;}}" + " \nreturn Boolean.FALSE;");
    syncConfigService.save(syncConfigCustom);
    // 
    helper.startSynchronization(syncConfigCustom);
    // 
    SysSyncLogFilter logFilter = new SysSyncLogFilter();
    logFilter.setSynchronizationConfigId(syncConfigCustom.getId());
    List<SysSyncLogDto> logs = syncLogService.find(logFilter, null).getContent();
    Assert.assertEquals(1, logs.size());
    SysSyncLogDto log = logs.get(0);
    Assert.assertFalse(log.isRunning());
    Assert.assertFalse(log.isContainsError());
    helper.checkSyncLog(syncConfigCustom, SynchronizationActionType.CREATE_ENTITY, 6, OperationResultType.SUCCESS);
    // Enable different sync.
    syncConfigCustom.setDifferentialSync(true);
    syncConfigCustom = syncConfigService.save(syncConfigCustom);
    Assert.assertTrue(syncConfigCustom.isDifferentialSync());
    // Start sync with enable different sync - no change was made, so only ignore
    // update should be made.
    helper.startSynchronization(syncConfigCustom);
    log = helper.checkSyncLog(syncConfigCustom, SynchronizationActionType.UPDATE_ENTITY, 6, OperationResultType.IGNORE);
    Assert.assertFalse(log.isRunning());
    Assert.assertFalse(log.isContainsError());
    // Change code of node
    IdmTreeNodeDto root = treeNodeService.findRoots(treeType.getId(), null).getContent().get(0);
    List<IdmTreeNodeDto> children = treeNodeService.findChildrenByParent(root.getId(), null).getContent();
    Assert.assertEquals(1, children.size());
    IdmTreeNodeDto child = children.get(0);
    Assert.assertEquals(child.getCode(), "1");
    child.setCode(helper.createName());
    treeNodeService.save(child);
    // Start sync with enable different sync - Node code value changed, so standard update should be made.
    helper.startSynchronization(syncConfigCustom);
    log = helper.checkSyncLog(syncConfigCustom, SynchronizationActionType.UPDATE_ENTITY, 1, OperationResultType.SUCCESS);
    log = helper.checkSyncLog(syncConfigCustom, SynchronizationActionType.UPDATE_ENTITY, 5, OperationResultType.IGNORE);
    Assert.assertFalse(log.isRunning());
    Assert.assertFalse(log.isContainsError());
    // Delete log
    syncLogService.delete(log);
}
Also used : IdmTreeTypeDto(eu.bcvsolutions.idm.core.api.dto.IdmTreeTypeDto) AbstractSysSyncConfigDto(eu.bcvsolutions.idm.acc.dto.AbstractSysSyncConfigDto) SysSyncLogFilter(eu.bcvsolutions.idm.acc.dto.filter.SysSyncLogFilter) GuardedString(eu.bcvsolutions.idm.core.security.api.domain.GuardedString) IdmTreeNodeDto(eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto) SysSyncLogDto(eu.bcvsolutions.idm.acc.dto.SysSyncLogDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 93 with IdmTreeNodeDto

use of eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto in project CzechIdMng by bcvsolutions.

the class TreeSyncTest method testTreeWithAutomaticRoles.

@Test
public void testTreeWithAutomaticRoles() {
    IdmTreeTypeDto treeType = getHelper().createTreeType();
    // 
    // create synchronization
    AbstractSysSyncConfigDto syncConfigCustom = this.getBean().doCreateSyncConfig(treeType.getCode(), true);
    Assert.assertFalse(syncConfigService.isRunning(syncConfigCustom));
    // We want to sync all account under that node!
    IdmTreeNodeDto treeNodeExistedNode = helper.createTreeNode(treeType, null);
    syncConfigCustom.setRootsFilterScript("if(account){ def parentValue = account.getAttributeByName(\"" + helper.getSchemaColumnName("PARENT") + "\").getValue();" + " if(parentValue == null || parentValue.isEmpty()){" + "	 account.getAttributeByName(\"" + helper.getSchemaColumnName("PARENT") + "\").setValues([\"" + treeNodeExistedNode.getId() + "\"]); return Boolean.TRUE;}}" + " \nreturn Boolean.FALSE;");
    syncConfigService.save(syncConfigCustom);
    // 
    helper.startSynchronization(syncConfigCustom);
    // 
    SysSyncLogFilter logFilter = new SysSyncLogFilter();
    logFilter.setSynchronizationConfigId(syncConfigCustom.getId());
    List<SysSyncLogDto> logs = syncLogService.find(logFilter, null).getContent();
    Assert.assertEquals(1, logs.size());
    SysSyncLogDto log = logs.get(0);
    Assert.assertFalse(log.isRunning());
    Assert.assertFalse(log.isContainsError());
    // 
    helper.checkSyncLog(syncConfigCustom, SynchronizationActionType.CREATE_ENTITY, 6, OperationResultType.SUCCESS);
    // 
    // prepare contracts
    IdmTreeNodeFilter nodeFilter = new IdmTreeNodeFilter();
    nodeFilter.setTreeTypeId(treeType.getId());
    nodeFilter.setCode("112");
    List<IdmTreeNodeDto> results = treeNodeService.find(nodeFilter, null).getContent();
    IdmTreeNodeDto parentNode = results.get(0);
    nodeFilter.setCode("1111");
    // parent will be set by synchronization
    IdmTreeNodeDto node = treeNodeService.find(nodeFilter, null).getContent().get(0);
    // define automatic role for parent
    IdmRoleDto role = getHelper().createRole();
    IdmRoleTreeNodeDto automaticRole = getHelper().createRoleTreeNode(role, parentNode, RecursionType.DOWN, true);
    // create identity with contract on node
    IdmIdentityDto identity = getHelper().createIdentity((GuardedString) null);
    getHelper().createContract(identity, node);
    // no role should be assigned now
    List<IdmIdentityRoleDto> assignedRoles = identityRoleService.findAllByIdentity(identity.getId());
    Assert.assertTrue(assignedRoles.isEmpty());
    // 
    // change tree structure and synchronize
    this.getBean().changeParent("1111", "112");
    helper.startSynchronization(syncConfigCustom);
    log = helper.checkSyncLog(syncConfigCustom, SynchronizationActionType.UPDATE_ENTITY, 6, OperationResultType.SUCCESS);
    Assert.assertFalse(log.isRunning());
    Assert.assertFalse(log.isContainsError());
    // 
    assignedRoles = identityRoleService.findAllByIdentity(identity.getId());
    Assert.assertEquals(1, assignedRoles.size());
    Assert.assertEquals(automaticRole.getId(), assignedRoles.get(0).getAutomaticRole());
}
Also used : IdmRoleDto(eu.bcvsolutions.idm.core.api.dto.IdmRoleDto) IdmRoleTreeNodeDto(eu.bcvsolutions.idm.core.api.dto.IdmRoleTreeNodeDto) IdmTreeNodeFilter(eu.bcvsolutions.idm.core.api.dto.filter.IdmTreeNodeFilter) IdmTreeNodeDto(eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto) IdmTreeTypeDto(eu.bcvsolutions.idm.core.api.dto.IdmTreeTypeDto) AbstractSysSyncConfigDto(eu.bcvsolutions.idm.acc.dto.AbstractSysSyncConfigDto) SysSyncLogFilter(eu.bcvsolutions.idm.acc.dto.filter.SysSyncLogFilter) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) IdmIdentityRoleDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityRoleDto) SysSyncLogDto(eu.bcvsolutions.idm.acc.dto.SysSyncLogDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 94 with IdmTreeNodeDto

use of eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto in project CzechIdMng by bcvsolutions.

the class TreeSyncTest method syncNodesUnderExistsRoot.

@Test
public void syncNodesUnderExistsRoot() {
    String treeTypeCode = getHelper().createName();
    AbstractSysSyncConfigDto syncConfigCustom = this.getBean().doCreateSyncConfig(treeTypeCode, false);
    Assert.assertFalse(syncConfigService.isRunning(syncConfigCustom));
    IdmTreeTypeDto treeType = treeTypeService.find(null).getContent().stream().filter(tree -> {
        return tree.getName().equals(treeTypeCode);
    }).findFirst().get();
    // We want to sync all account under that node!
    IdmTreeNodeDto treeNodeExistedNode = helper.createTreeNode(treeType, null);
    syncConfigCustom.setRootsFilterScript("if(account){ def parentValue = account.getAttributeByName(\"" + helper.getSchemaColumnName("PARENT") + "\").getValue();" + " if(parentValue == null || parentValue.isEmpty()){" + "	 account.getAttributeByName(\"" + helper.getSchemaColumnName("PARENT") + "\").setValues([\"" + treeNodeExistedNode.getId() + "\"]); return Boolean.TRUE;}}" + " \nreturn Boolean.FALSE;");
    syncConfigService.save(syncConfigCustom);
    // 
    helper.startSynchronization(syncConfigCustom);
    // 
    SysSyncLogFilter logFilter = new SysSyncLogFilter();
    logFilter.setSynchronizationConfigId(syncConfigCustom.getId());
    List<SysSyncLogDto> logs = syncLogService.find(logFilter, null).getContent();
    Assert.assertEquals(1, logs.size());
    SysSyncLogDto log = logs.get(0);
    Assert.assertFalse(log.isRunning());
    Assert.assertFalse(log.isContainsError());
    helper.checkSyncLog(syncConfigCustom, SynchronizationActionType.CREATE_ENTITY, 6, OperationResultType.SUCCESS);
    Assert.assertEquals(1, treeNodeService.findRoots(treeType.getId(), null).getContent().size());
    IdmTreeNodeDto root = treeNodeService.findRoots(treeType.getId(), null).getContent().get(0);
    Assert.assertEquals(root, treeNodeExistedNode);
    List<IdmTreeNodeDto> children = treeNodeService.findChildrenByParent(root.getId(), null).getContent();
    Assert.assertEquals(1, children.size());
    IdmTreeNodeDto child = children.get(0);
    Assert.assertEquals(child.getCode(), "1");
    // Delete log
    syncLogService.delete(log);
}
Also used : IdmTreeTypeDto(eu.bcvsolutions.idm.core.api.dto.IdmTreeTypeDto) AbstractSysSyncConfigDto(eu.bcvsolutions.idm.acc.dto.AbstractSysSyncConfigDto) SysSyncLogFilter(eu.bcvsolutions.idm.acc.dto.filter.SysSyncLogFilter) GuardedString(eu.bcvsolutions.idm.core.security.api.domain.GuardedString) IdmTreeNodeDto(eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto) SysSyncLogDto(eu.bcvsolutions.idm.acc.dto.SysSyncLogDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 95 with IdmTreeNodeDto

use of eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto in project CzechIdMng by bcvsolutions.

the class IdmFormValueControllerRestTest method findValues.

@Test
public void findValues() throws Exception {
    IdmIdentityDto ownerIdentity = getHelper().createIdentity((GuardedString) null);
    IdmRoleDto ownerRole = getHelper().createRole();
    IdmIdentityContractDto ownerIdentityContract = getHelper().createContract(ownerIdentity);
    IdmTreeNodeDto ownerTreeNode = null;
    try {
        getHelper().loginAdmin();
        ownerTreeNode = getHelper().createTreeNode();
    } finally {
        logout();
    }
    // 
    Assert.assertEquals(1, prepareDataAndSearch(IdmIdentity.class, ownerIdentity));
    Assert.assertEquals(1, prepareDataAndSearch(IdmRole.class, ownerRole));
    Assert.assertEquals(1, prepareDataAndSearch(IdmTreeNode.class, ownerTreeNode));
    Assert.assertEquals(1, prepareDataAndSearch(IdmIdentityContract.class, ownerIdentityContract));
}
Also used : IdmRoleDto(eu.bcvsolutions.idm.core.api.dto.IdmRoleDto) IdmTreeNode(eu.bcvsolutions.idm.core.model.entity.IdmTreeNode) IdmRole(eu.bcvsolutions.idm.core.model.entity.IdmRole) IdmTreeNodeDto(eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) IdmIdentityContractDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto) IdmIdentity(eu.bcvsolutions.idm.core.model.entity.IdmIdentity) IdmIdentityContract(eu.bcvsolutions.idm.core.model.entity.IdmIdentityContract) AbstractReadWriteDtoControllerRestTest(eu.bcvsolutions.idm.core.api.rest.AbstractReadWriteDtoControllerRestTest) Test(org.junit.Test)

Aggregations

IdmTreeNodeDto (eu.bcvsolutions.idm.core.api.dto.IdmTreeNodeDto)231 Test (org.junit.Test)172 IdmIdentityDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto)130 AbstractIntegrationTest (eu.bcvsolutions.idm.test.api.AbstractIntegrationTest)122 IdmRoleDto (eu.bcvsolutions.idm.core.api.dto.IdmRoleDto)102 IdmTreeTypeDto (eu.bcvsolutions.idm.core.api.dto.IdmTreeTypeDto)102 IdmIdentityContractDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto)92 UUID (java.util.UUID)56 IdmRoleTreeNodeDto (eu.bcvsolutions.idm.core.api.dto.IdmRoleTreeNodeDto)44 GuardedString (eu.bcvsolutions.idm.core.security.api.domain.GuardedString)44 IdmIdentityRoleDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityRoleDto)42 IdmTreeNodeFilter (eu.bcvsolutions.idm.core.api.dto.filter.IdmTreeNodeFilter)39 Transactional (org.springframework.transaction.annotation.Transactional)38 ResultCodeException (eu.bcvsolutions.idm.core.api.exception.ResultCodeException)33 List (java.util.List)31 IdmIdentityContractFilter (eu.bcvsolutions.idm.core.api.dto.filter.IdmIdentityContractFilter)27 LocalDate (java.time.LocalDate)26 IdmContractPositionDto (eu.bcvsolutions.idm.core.api.dto.IdmContractPositionDto)25 Autowired (org.springframework.beans.factory.annotation.Autowired)25 SysSyncLogDto (eu.bcvsolutions.idm.acc.dto.SysSyncLogDto)23