use of eu.bcvsolutions.idm.core.api.dto.IdmTreeTypeDto 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());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmTreeTypeDto in project CzechIdMng by bcvsolutions.
the class TreeSyncTest method initData.
private void initData(String treeTypeCode) {
// create test system
system = helper.createSystem("test_tree_resource");
system.setName(helper.createName());
system = systemService.save(system);
// key to EAV
IdmFormDefinitionDto formDefinition = systemService.getConnectorFormDefinition(system);
formService.saveValues(system, formDefinition, "keyColumn", ImmutableList.of("ID"));
// generate schema for system
List<SysSchemaObjectClassDto> objectClasses = systemService.generateSchema(system);
IdmTreeTypeDto treeType = treeTypeService.getByCode(treeTypeCode);
if (treeType == null) {
treeType = new IdmTreeTypeDto();
treeType.setCode(treeTypeCode);
treeType.setName(treeTypeCode);
treeType = treeTypeService.save(treeType);
}
// Create synchronization mapping
SysSystemMappingDto syncSystemMapping = new SysSystemMappingDto();
syncSystemMapping.setName("default_" + System.currentTimeMillis());
syncSystemMapping.setEntityType(SystemEntityType.TREE);
syncSystemMapping.setTreeType(treeType.getId());
syncSystemMapping.setOperationType(SystemOperationType.SYNCHRONIZATION);
syncSystemMapping.setObjectClass(objectClasses.get(0).getId());
final SysSystemMappingDto syncMapping = systemMappingService.save(syncSystemMapping);
createMapping(system, syncMapping);
initTreeData();
syncConfigService.find(null).getContent().forEach(config -> {
syncConfigService.delete(config);
});
}
use of eu.bcvsolutions.idm.core.api.dto.IdmTreeTypeDto 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);
}
use of eu.bcvsolutions.idm.core.api.dto.IdmTreeTypeDto 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());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmTreeTypeDto 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);
}
Aggregations