use of org.junit.Assert.assertEquals in project CzechIdMng by bcvsolutions.
the class IdentitySyncTest method testCreateIdentityWithAutomaticRoleByEavAttribute.
@Test
public void testCreateIdentityWithAutomaticRoleByEavAttribute() {
String username = getHelper().createName();
SysSystemDto system = initData(username, "mockIdentity@idm.eu");
Assert.assertNotNull(system);
SysSyncIdentityConfigDto config = doCreateSyncConfig(system);
config.setCreateDefaultContract(true);
config.setStartAutoRoleRec(true);
syncConfigService.save(config);
//
// create form definition, roles, automatic role etc.
IdmRoleDto role = getHelper().createRole();
IdmRoleDto subRole = getHelper().createRole();
getHelper().createRoleComposition(role, subRole);
// sync supports default definition only
IdmFormAttributeDto formAttribute = new IdmFormAttributeDto(getHelper().createName());
IdmFormAttributeDto formAttributeIdentity = formService.saveAttribute(IdmIdentityDto.class, formAttribute);
//
IdmAutomaticRoleAttributeDto automaticRole = getHelper().createAutomaticRole(role.getId());
getHelper().createAutomaticRoleRule(automaticRole.getId(), AutomaticRoleAttributeRuleComparison.EQUALS, AutomaticRoleAttributeRuleType.IDENTITY_EAV, null, formAttributeIdentity.getId(), "mockIdentity@idm.eu");
//
// create mapping to eav attribute - leader = eav
SysSystemMappingDto syncSystemMapping = systemMappingService.get(config.getSystemMapping());
SysSystemAttributeMappingFilter attributeMappingFilter = new SysSystemAttributeMappingFilter();
attributeMappingFilter.setSystemMappingId(syncSystemMapping.getId());
SysSystemAttributeMappingDto lastnameAttributeMapping = schemaAttributeMappingService.findBySystemMappingAndName(syncSystemMapping.getId(), ATTRIBUTE_EMAIL);
lastnameAttributeMapping.setEntityAttribute(false);
lastnameAttributeMapping.setExtendedAttribute(true);
lastnameAttributeMapping.setIdmPropertyName(formAttributeIdentity.getCode());
schemaAttributeMappingService.save(lastnameAttributeMapping);
//
helper.startSynchronization(config);
SysSyncLogDto log = checkSyncLog(config, SynchronizationActionType.CREATE_ENTITY, 1, OperationResultType.SUCCESS);
Assert.assertFalse(log.isRunning());
IdmIdentityFilter identityFilter = new IdmIdentityFilter();
identityFilter.setUsername(username);
identityFilter.setAddEavMetadata(Boolean.TRUE);
List<IdmIdentityDto> identities = identityService.find(identityFilter, null).getContent();
Assert.assertEquals(1, identities.size());
Assert.assertEquals("mockIdentity@idm.eu", identities.get(0).getEavs().stream().filter(fi -> fi.getFormDefinition().isMain()).findFirst().get().getValues().stream().filter(v -> v.getFormAttribute().equals(formAttributeIdentity.getId())).findFirst().get().getShortTextValue());
IdmIdentityRoleFilter identityRoleFilter = new IdmIdentityRoleFilter();
identityRoleFilter.setIdentityId(identities.get(0).getId());
List<IdmIdentityRoleDto> assignedRoles = identityRoleService.find(identityRoleFilter, null).getContent();
Assert.assertEquals(2, assignedRoles.size());
Assert.assertTrue(assignedRoles.stream().anyMatch(ir -> ir.getRole().equals(role.getId())));
Assert.assertTrue(assignedRoles.stream().anyMatch(ir -> ir.getRole().equals(subRole.getId())));
// Delete log
syncLogService.delete(log);
syncConfigService.delete(config);
}
use of org.junit.Assert.assertEquals in project CzechIdMng by bcvsolutions.
the class IdentityContractSyncTest method testInvalidateAndCreateAnotherContractWithAutomaticRoles.
@Test
public void testInvalidateAndCreateAnotherContractWithAutomaticRoles() {
SysSystemDto system = initData();
SysSystemDto systemProvisioning = helper.createTestResourceSystem(true);
Assert.assertNotNull(system);
AbstractSysSyncConfigDto config = doCreateSyncConfig(system);
Assert.assertTrue(config instanceof SysSyncContractConfigDto);
IdmIdentityDto identity = getHelper().createIdentity((GuardedString) null);
contractService.delete(getHelper().getPrimeContract(identity));
//
// create first contract with validity and automatic role
String positionCode = getHelper().createName();
IdmTreeNodeDto node = getHelper().createTreeNode();
IdmRoleDto role = getHelper().createRole();
helper.createRoleSystem(role, systemProvisioning);
getHelper().createAutomaticRole(role, node);
IdmIdentityContractDto contract = new IdmIdentityContractDto();
contract.setIdentity(identity.getId());
contract.setValidFrom(LocalDate.now().minusMonths(1));
contract.setValidTill(LocalDate.now().plusMonths(1));
contract.setDescription(positionCode);
contract.setPosition(positionCode);
contract.setWorkPosition(node.getId());
contract = contractService.save(contract);
IdmIdentityContractFilter contractFilter = new IdmIdentityContractFilter();
contractFilter.setIdentity(identity.getId());
Assert.assertEquals(1, contractService.find(contractFilter, null).getTotalElements());
IdmIdentityRoleFilter identityRoleFilter = new IdmIdentityRoleFilter();
identityRoleFilter.setIdentityId(identity.getId());
List<IdmIdentityRoleDto> assignedRoles = identityRoleService.find(identityRoleFilter, null).getContent();
Assert.assertEquals(1, assignedRoles.size());
Assert.assertNotNull(assignedRoles.get(0).getValidFrom());
Assert.assertNotNull(assignedRoles.get(0).getValidTill());
Assert.assertEquals(contract.getValidFrom(), assignedRoles.get(0).getValidFrom());
Assert.assertEquals(contract.getValidTill(), assignedRoles.get(0).getValidTill());
// create target system entity - invalid
TestContractResource invalidContractResource = new TestContractResource();
invalidContractResource.setId(positionCode);
invalidContractResource.setName(positionCode);
invalidContractResource.setOwner(identity.getUsername());
invalidContractResource.setMain(Boolean.TRUE.toString());
invalidContractResource.setWorkposition(node.getId().toString());
invalidContractResource.setDescription(positionCode);
invalidContractResource.setValidTill(LocalDate.now().minusDays(1));
this.getBean().createContractData(invalidContractResource);
//
String validPositionCode = getHelper().createName();
TestContractResource validContractResource = new TestContractResource();
validContractResource.setId(validPositionCode);
validContractResource.setName(validPositionCode);
validContractResource.setOwner(identity.getUsername());
validContractResource.setMain(Boolean.FALSE.toString());
validContractResource.setWorkposition(node.getId().toString());
validContractResource.setDescription(validPositionCode);
this.getBean().createContractData(validContractResource);
//
helper.startSynchronization(config);
SysSyncLogDto log = checkSyncLog(config, SynchronizationActionType.LINK_AND_UPDATE_ENTITY, 1);
checkSyncLog(config, SynchronizationActionType.CREATE_ENTITY, 1);
UUID transactionId = log.getTransactionId();
Assert.assertFalse(log.isRunning());
List<IdmIdentityContractDto> contracts = contractService.find(contractFilter, null).getContent();
Assert.assertEquals(2, contracts.size());
Assert.assertTrue(contracts.stream().allMatch(c -> c.getTransactionId().equals(transactionId)));
Assert.assertTrue(contracts.stream().anyMatch(c -> c.isValid()));
Assert.assertTrue(contracts.stream().anyMatch(c -> !c.isValid()));
assignedRoles = identityRoleService.find(identityRoleFilter, null).getContent();
Assert.assertEquals(1, assignedRoles.size());
Assert.assertNull(assignedRoles.get(0).getValidFrom());
Assert.assertNull(assignedRoles.get(0).getValidTill());
Assert.assertEquals(transactionId, assignedRoles.get(0).getTransactionId());
// find provisioning archive => prevent drop and create => update only in this transaction id
SysProvisioningOperationFilter filter = new SysProvisioningOperationFilter();
filter.setSystemId(systemProvisioning.getId());
filter.setTransactionId(transactionId);
List<SysProvisioningArchiveDto> executedOperations = provisioningArchiveService.find(filter, null).getContent();
Assert.assertFalse(executedOperations.isEmpty());
Assert.assertTrue(executedOperations.stream().allMatch(o -> o.getOperationType() != ProvisioningEventType.DELETE));
Assert.assertTrue(executedOperations.stream().allMatch(o -> o.getResultState() == OperationState.EXECUTED));
// Delete log
syncLogService.delete(log);
}
use of org.junit.Assert.assertEquals in project CzechIdMng by bcvsolutions.
the class ContractSliceSyncTest method checkSyncLog.
private SysSyncLogDto checkSyncLog(AbstractSysSyncConfigDto config, SynchronizationActionType actionType, int count) {
SysSyncLogFilter logFilter = new SysSyncLogFilter();
logFilter.setSynchronizationConfigId(config.getId());
List<SysSyncLogDto> logs = syncLogService.find(logFilter, null).getContent();
Assert.assertEquals(1, logs.size());
SysSyncLogDto log = logs.get(0);
SysSyncActionLogFilter actionLogFilter = new SysSyncActionLogFilter();
actionLogFilter.setSynchronizationLogId(log.getId());
List<SysSyncActionLogDto> actions = syncActionLogService.find(actionLogFilter, null).getContent();
List<SysSyncActionLogDto> actionLogs = actions.stream().filter(action -> {
return actionType == action.getSyncAction();
}).collect(Collectors.toList());
List<SysSyncItemLogDto> result = new ArrayList<>();
actionLogs.forEach(actionLog -> {
SysSyncItemLogFilter itemLogFilter = new SysSyncItemLogFilter();
itemLogFilter.setSyncActionLogId(actionLog.getId());
List<SysSyncItemLogDto> items = syncItemLogService.find(itemLogFilter, null).getContent();
result.addAll(items);
});
Assert.assertEquals(count, result.size());
return log;
}
use of org.junit.Assert.assertEquals in project CzechIdMng by bcvsolutions.
the class DefaultSysProvisioningServiceTest method compileAttributesOverrloadedStrategyCreateTest.
@Test
@Transactional
public void compileAttributesOverrloadedStrategyCreateTest() {
List<SysRoleSystemAttributeDto> overloadingAttributes = new ArrayList<>();
List<AttributeMapping> defaultAttributes = new ArrayList<>();
initDataSystem();
initOverloadedAttributes(overloadingAttributes, defaultAttributes);
// roleOne
SysRoleSystemDto roleSystem1 = roleSystemService.get(overloadingAttributes.get(0).getRoleSystem());
IdmRoleDto roleDto = roleService.get(roleSystem1.getRole());
roleDto.setPriority(200);
roleDto = roleService.save(roleDto);
// roleTwo
SysRoleSystemDto roleSystem2 = roleSystemService.get(overloadingAttributes.get(1).getRoleSystem());
roleDto = roleService.get(roleSystem2.getRole());
roleDto.setPriority(500);
roleDto = roleService.save(roleDto);
// overloadedRoleOne
SysRoleSystemAttributeDto attribute1 = overloadingAttributes.get(0);
attribute1.setStrategyType(AttributeMappingStrategyType.CREATE);
attribute1 = roleSystemAttributeService.save(attribute1);
overloadingAttributes.set(0, attribute1);
// overloadedRoleTwo
SysRoleSystemAttributeDto attribute2 = overloadingAttributes.get(1);
attribute2.setStrategyType(AttributeMappingStrategyType.CREATE);
attribute2 = roleSystemAttributeService.save(attribute2);
overloadingAttributes.set(1, attribute2);
List<AttributeMapping> compilledAttributes = provisioningService.compileAttributes(defaultAttributes, overloadingAttributes, SystemEntityType.IDENTITY);
Assert.assertEquals(2, compilledAttributes.size());
Assert.assertTrue(compilledAttributes.stream().filter(attribute -> {
return "defOneOverloadedRoleTwo".equals(attribute.getName());
}).findFirst().isPresent());
}
use of org.junit.Assert.assertEquals in project CzechIdMng by bcvsolutions.
the class DefaultSysProvisioningServiceTest method compileAttributesOverrloadedDiffPriorityTest.
@Test
@Transactional
public void compileAttributesOverrloadedDiffPriorityTest() {
List<SysRoleSystemAttributeDto> overloadingAttributes = new ArrayList<>();
List<AttributeMapping> defaultAttributes = new ArrayList<>();
initDataSystem();
initOverloadedAttributes(overloadingAttributes, defaultAttributes);
// roleOne
SysRoleSystemDto roleSystem1 = roleSystemService.get(overloadingAttributes.get(0).getRoleSystem());
IdmRoleDto roleDto = roleService.get(roleSystem1.getRole());
roleDto.setPriority(200);
roleDto = roleService.save(roleDto);
// roleTwo
SysRoleSystemDto roleSystem2 = roleSystemService.get(overloadingAttributes.get(1).getRoleSystem());
roleDto = roleService.get(roleSystem2.getRole());
roleDto.setPriority(100);
roleDto = roleService.save(roleDto);
List<SysRoleSystemAttributeDto> freshOverloadingAttributes = new ArrayList<>();
overloadingAttributes.forEach(attribute -> {
freshOverloadingAttributes.add(roleSystemAttributeService.get(attribute.getId()));
});
List<AttributeMapping> compilledAttributes = provisioningService.compileAttributes(defaultAttributes, freshOverloadingAttributes, SystemEntityType.IDENTITY);
Assert.assertEquals(2, compilledAttributes.size());
Assert.assertTrue(compilledAttributes.stream().filter(attribute -> {
return "defOneOverloaded".equals(attribute.getName());
}).findFirst().isPresent());
}
Aggregations