use of eu.bcvsolutions.idm.core.api.dto.IdmContractPositionDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmContractPositionServiceIntegrationTest method testAssingRoleByNewAutomaticRoleForExistingContracts.
@Test
public void testAssingRoleByNewAutomaticRoleForExistingContracts() {
IdmRoleDto role = getHelper().createRole();
IdmTreeNodeDto treeNode = getHelper().createTreeNode();
IdmIdentityDto identity = getHelper().createIdentity((GuardedString) null);
IdmIdentityContractDto contract = getHelper().getPrimeContract(identity);
IdmContractPositionDto position = getHelper().createContractPosition(contract, treeNode);
// other
getHelper().createContractPosition(contract, getHelper().createTreeNode());
//
// TODO: this is really strange ... automatic role is assigned without automatic role id.
IdmRoleTreeNodeDto automaticRole = new IdmRoleTreeNodeDto();
automaticRole.setRecursionType(RecursionType.NO);
automaticRole.setRole(role.getId());
automaticRole.setTreeNode(treeNode.getId());
automaticRole = saveAutomaticRole(automaticRole, true);
//
List<IdmIdentityRoleDto> assignedRoles = identityRoleService.findAllByIdentity(identity.getId());
Assert.assertEquals(1, assignedRoles.size());
Assert.assertEquals(automaticRole.getId(), assignedRoles.get(0).getAutomaticRole());
Assert.assertEquals(position.getId(), assignedRoles.get(0).getContractPosition());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmContractPositionDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmContractPositionServiceIntegrationTest method testReferentialIntegrityOnContractDelete.
@Test
@Transactional
public void testReferentialIntegrityOnContractDelete() {
// prepare data
IdmIdentityDto identity = getHelper().createIdentity((GuardedString) null);
IdmIdentityContractDto contract = getHelper().createContract(identity);
getHelper().createContractPosition(contract);
//
IdmContractPositionFilter positionFilter = new IdmContractPositionFilter();
positionFilter.setIdentityContractId(contract.getId());
List<IdmContractPositionDto> positions = service.find(positionFilter, null).getContent();
Assert.assertEquals(1, positions.size());
//
getHelper().deleteContract(contract.getId());
//
positions = service.find(positionFilter, null).getContent();
Assert.assertTrue(positions.isEmpty());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmContractPositionDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmContractPositionServiceIntegrationTest method testAssingRoleForContractValidInTheFuture.
@Test
public void testAssingRoleForContractValidInTheFuture() {
IdmRoleDto role = getHelper().createRole();
IdmTreeNodeDto treeNode = getHelper().createTreeNode();
IdmRoleTreeNodeDto automaticRole = getHelper().createAutomaticRole(role, treeNode);
IdmIdentityDto identity = getHelper().createIdentity((GuardedString) null);
IdmIdentityContractDto contract = getHelper().createContract(identity, null, LocalDate.now().plusDays(2), null);
IdmContractPositionDto position = getHelper().createContractPosition(contract, null);
//
List<IdmIdentityRoleDto> assignedRoles = identityRoleService.findAllByIdentity(identity.getId());
Assert.assertTrue(assignedRoles.isEmpty());
//
position.setWorkPosition(treeNode.getId());
position = service.save(position);
//
assignedRoles = identityRoleService.findAllByIdentity(identity.getId());
Assert.assertEquals(1, assignedRoles.size());
Assert.assertEquals(automaticRole.getId(), assignedRoles.get(0).getAutomaticRole());
Assert.assertEquals(position.getId(), assignedRoles.get(0).getContractPosition());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmContractPositionDto in project CzechIdMng by bcvsolutions.
the class IdentityProvisioningTest method testProvisioningOnChangeContractPosition.
@Test
public void testProvisioningOnChangeContractPosition() {
SysSystemDto systemDto = helper.createTestResourceSystem(true);
SysSchemaAttributeFilter schemaAttributeFilter = new SysSchemaAttributeFilter();
schemaAttributeFilter.setSystemId(systemDto.getId());
IdmRoleDto roleWithSystem = helper.createRole();
helper.createRoleSystem(roleWithSystem, systemDto);
IdmIdentityDto identity = helper.createIdentity();
IdmIdentityContractDto primeContract = helper.getPrimeContract(identity);
assertNotNull(primeContract);
IdmContractPositionDto contractPosition = helper.createContractPosition(primeContract);
helper.createIdentityRole(identity, roleWithSystem, null, null);
identity.setFirstName(helper.createName());
identityService.save(identity);
TestResource resource = helper.findResource(identity.getUsername());
assertNotNull(resource);
String valueOnResource = resource.getFirstname();
assertEquals(identity.getFirstName(), valueOnResource);
// Change first name without call provisioning
identity.setFirstName(helper.createName());
identityService.saveInternal(identity);
resource = helper.findResource(identity.getUsername());
assertNotNull(resource);
assertNotEquals(identity.getFirstName(), resource.getFirstname());
// Save of position -> must execute provisioning
contractPositionService.save(contractPosition);
resource = helper.findResource(identity.getUsername());
assertNotNull(resource);
assertEquals(identity.getFirstName(), resource.getFirstname());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmContractPositionDto in project CzechIdMng by bcvsolutions.
the class DefaultIdentityProjectionManager method saveOtherPositions.
protected List<IdmContractPositionDto> saveOtherPositions(EntityEvent<IdmIdentityProjectionDto> event, BasePermission... permission) {
IdmIdentityProjectionDto dto = event.getContent();
IdmIdentityProjectionDto previousProjection = event.getOriginalSource();
List<IdmContractPositionDto> savedPositions = new ArrayList<>(dto.getOtherPositions().size());
IdmIdentityContractDto contract = dto.getContract();
//
// check other contract position has to be saved
IdmIdentityDto identity = dto.getIdentity();
if (identity.getFormProjection() != null) {
IdmFormProjectionDto formProjection = lookupService.lookupEmbeddedDto(dto.getIdentity(), IdmIdentity_.formProjection);
if (!formProjection.getProperties().getBooleanValue(IdentityFormProjectionRoute.PARAMETER_OTHER_POSITION)) {
LOG.debug("Projection [{}] doesn't save other contract positions.", formProjection.getCode());
return savedPositions;
}
}
//
for (IdmContractPositionDto otherPosition : dto.getOtherPositions()) {
if (otherPosition.getIdentityContract() == null) {
if (contract == null) {
throw new ForbiddenEntityException("contract", IdmBasePermission.READ);
}
otherPosition.setIdentityContract(contract.getId());
}
ContractPositionEventType positionEventType = ContractPositionEventType.CREATE;
if (!contractPositionService.isNew(otherPosition)) {
positionEventType = ContractPositionEventType.UPDATE;
}
ContractPositionEvent positionEvent = new ContractPositionEvent(positionEventType, otherPosition);
//
savedPositions.add(contractPositionService.publish(positionEvent, event, permission).getContent());
if (previousProjection != null) {
previousProjection.getOtherPositions().removeIf(p -> {
return Objects.equals(p.getId(), otherPosition.getId());
});
}
}
// remove not sent positions, if previous exists
if (previousProjection != null) {
for (IdmContractPositionDto contractPosition : previousProjection.getOtherPositions()) {
ContractPositionEventType positionEventType = ContractPositionEventType.DELETE;
ContractPositionEvent positionEvent = new ContractPositionEvent(positionEventType, contractPosition);
//
contractPositionService.publish(positionEvent, event, PermissionUtils.isEmpty(permission) ? null : IdmBasePermission.DELETE);
}
}
//
return savedPositions;
}
Aggregations