use of eu.bcvsolutions.idm.core.api.dto.filter.IdmContractSliceFilter in project CzechIdMng by bcvsolutions.
the class ContractSliceSyncTest method testIdentityProvisioningOnChangeContractBySlice.
@Test
public void testIdentityProvisioningOnChangeContractBySlice() {
SysSystemDto identitySystem = helper.createSystem(TestResource.TABLE_NAME);
helper.createMapping(identitySystem);
IdmRoleDto roleWithIdentitySystem = helper.createRole();
helper.createRoleSystem(roleWithIdentitySystem, identitySystem);
SysSystemDto system = initData();
Assert.assertNotNull(system);
AbstractSysSyncConfigDto config = doCreateSyncConfig(system);
Assert.assertTrue(config instanceof SysSyncContractConfigDto);
IdmIdentityDto owner = helper.createIdentity(CONTRACT_OWNER_ONE);
helper.createIdentity(CONTRACT_LEADER_ONE);
// Assign identity system to the owner.
helper.assignRoles(helper.getPrimeContract(owner), roleWithIdentitySystem);
SysProvisioningOperationFilter provisioningOperationFilter = new SysProvisioningOperationFilter();
provisioningOperationFilter.setEntityIdentifier(owner.getId());
provisioningOperationFilter.setSystemId(identitySystem.getId());
List<SysProvisioningArchiveDto> provisioningArchiveDtos = provisioningArchiveService.find(provisioningOperationFilter, null).getContent();
Assert.assertEquals(1, provisioningArchiveDtos.size());
IdmContractSliceFilter contractSliceFilter = new IdmContractSliceFilter();
contractSliceFilter.setIdentity(owner.getId());
contractSliceFilter.setProperty(IdmIdentityContract_.position.getName());
contractSliceFilter.setValue("1");
Assert.assertEquals(0, contractSliceService.find(contractSliceFilter, null).getTotalElements());
contractSliceFilter.setValue("2");
Assert.assertEquals(0, contractSliceService.find(contractSliceFilter, null).getTotalElements());
helper.startSynchronization(config);
SysSyncLogDto log = checkSyncLog(config, SynchronizationActionType.CREATE_ENTITY, 4);
Assert.assertFalse(log.isRunning());
Assert.assertFalse(log.isContainsError());
contractSliceFilter.setValue("1");
Assert.assertEquals(1, contractSliceService.find(contractSliceFilter, null).getTotalElements());
contractSliceFilter.setValue("2");
List<IdmContractSliceDto> slicesTwo = contractSliceService.find(contractSliceFilter, null).getContent();
Assert.assertEquals(1, slicesTwo.size());
contractSliceFilter.setValue("3");
List<IdmContractSliceDto> contractsThree = contractSliceService.find(contractSliceFilter, null).getContent();
Assert.assertEquals(1, contractsThree.size());
Assert.assertEquals(null, contractsThree.get(0).getState());
contractSliceFilter.setValue("4");
Assert.assertEquals(1, contractSliceService.find(contractSliceFilter, null).getTotalElements());
// Find created contract
IdmIdentityContractFilter contractFilter = new IdmIdentityContractFilter();
contractFilter.setIdentity(owner.getId());
List<IdmIdentityContractDto> contracts = contractService.find(contractFilter, null).getContent();
Assert.assertEquals(3, contracts.size());
// Slice with id "2" should be current using
Assert.assertEquals(1, contracts.stream().filter(c -> c.getPosition().equals("2") && c.isValid()).count());
Assert.assertTrue(slicesTwo.get(0).isUsingAsContract());
provisioningArchiveDtos = provisioningArchiveService.find(provisioningOperationFilter, null).getContent();
Assert.assertEquals(9, provisioningArchiveDtos.size());
// Delete log
syncLogService.delete(log);
// Slice with id "2" reassign from contract ONE to TWO
this.getBean().changeContractData();
helper.startSynchronization(config);
log = checkSyncLog(config, SynchronizationActionType.UPDATE_ENTITY, 4);
Assert.assertFalse(log.isRunning());
Assert.assertFalse(log.isContainsError());
// Find created contract
contractFilter = new IdmIdentityContractFilter();
contractFilter.setIdentity(owner.getId());
contracts = contractService.find(contractFilter, null).getContent();
Assert.assertEquals(3, contracts.size());
// Slice with id "2" should not be current used
Assert.assertEquals(0, contracts.stream().filter(c -> c.getPosition().equals("2") && c.isValid()).count());
// But slice with id "4" should be current used
Assert.assertEquals(1, contracts.stream().filter(c -> c.getPosition().equals("4") && c.isValid()).count());
Assert.assertTrue(slicesTwo.get(0).isUsingAsContract());
provisioningArchiveDtos = provisioningArchiveService.find(provisioningOperationFilter, null).getContent();
Assert.assertEquals(15, provisioningArchiveDtos.size());
// Delete log
syncLogService.delete(log);
}
use of eu.bcvsolutions.idm.core.api.dto.filter.IdmContractSliceFilter in project CzechIdMng by bcvsolutions.
the class ContractSliceSyncTest method deleteLastContractSlice.
@Test
public void deleteLastContractSlice() {
// init system
SysSystemDto system = initData();
this.getBean().deleteAllResourceData();
IdmIdentityDto identity = helper.createIdentity();
// first expired slice
this.getBean().createSlice("1", identity.getUsername(), null, null, null, null, null, LocalDate.now().minusDays(20), LocalDate.now().plusDays(10), LocalDate.now().minusDays(20), "ONE");
SysSyncContractConfigDto config = (SysSyncContractConfigDto) doCreateSyncConfig(system);
config.setStartOfHrProcesses(true);
config.setMissingAccountAction(ReconciliationMissingAccountActionType.DELETE_ENTITY);
config = (SysSyncContractConfigDto) syncConfigService.save(config);
helper.startSynchronization(config);
IdmContractSliceFilter filter = new IdmContractSliceFilter();
filter.setIdentity(identity.getId());
List<IdmContractSliceDto> slices = contractSliceService.find(filter, null).getContent();
assertEquals(1, slices.size());
IdmContractSliceDto sliceDto = slices.get(0);
assertEquals(LocalDate.now().minusDays(20), sliceDto.getValidFrom());
assertEquals(null, sliceDto.getValidTill());
// create second slice
this.getBean().createSlice("2", identity.getUsername(), null, null, null, null, null, LocalDate.now().minusDays(20), LocalDate.now().plusDays(10), LocalDate.now().minusDays(10), "ONE");
helper.startSynchronization(config);
slices = contractSliceService.find(filter, null).getContent();
assertEquals(2, slices.size());
for (IdmContractSliceDto slice : slices) {
if ("1".equals(slice.getDescription())) {
assertEquals(LocalDate.now().minusDays(20), slice.getValidFrom());
assertEquals(LocalDate.now().minusDays(10).minusDays(1), slice.getValidTill());
} else if ("2".equals(slice.getDescription())) {
assertEquals(LocalDate.now().minusDays(10), slice.getValidFrom());
assertEquals(null, slice.getValidTill());
} else {
fail("Slice with bad id!");
}
}
this.getBean().deleteSlice("2");
helper.startSynchronization(config);
slices = contractSliceService.find(filter, null).getContent();
assertEquals(1, slices.size());
sliceDto = slices.get(0);
assertEquals(LocalDate.now().minusDays(20), sliceDto.getValidFrom());
assertEquals(null, sliceDto.getValidTill());
// some tests expect data as contract slice with id 1. Just for sure we clear test slices
slices = contractSliceService.find(filter, null).getContent();
slices.forEach(slice -> {
contractSliceService.delete(slice);
});
identityService.delete(identity);
}
use of eu.bcvsolutions.idm.core.api.dto.filter.IdmContractSliceFilter in project CzechIdMng by bcvsolutions.
the class ContractSliceSyncTest method sliceWithDefaultPositionTest.
@Test
public void sliceWithDefaultPositionTest() {
SysSystemDto system = initData();
Assert.assertNotNull(system);
AbstractSysSyncConfigDto config = doCreateSyncConfig(system);
Assert.assertTrue(config instanceof SysSyncContractConfigDto);
IdmTreeTypeDto treeType = helper.createTreeType();
IdmTreeNodeDto defaultNode = helper.createTreeNode(treeType, null);
IdmTreeNodeDto workPositionOneNode = helper.createTreeNode(treeType, ContractSliceSyncTest.WORK_POSITION_CODE, null);
((SysSyncContractConfigDto) config).setDefaultTreeType(treeType.getId());
((SysSyncContractConfigDto) config).setDefaultTreeNode(defaultNode.getId());
config = syncConfigService.save(config);
IdmIdentityDto owner = helper.createIdentity(CONTRACT_OWNER_ONE);
helper.createIdentity(CONTRACT_LEADER_ONE);
IdmContractSliceFilter contractSliceFilter = new IdmContractSliceFilter();
contractSliceFilter.setProperty(IdmIdentityContract_.position.getName());
contractSliceFilter.setValue("1");
Assert.assertEquals(0, contractSliceService.find(contractSliceFilter, null).getTotalElements());
contractSliceFilter.setValue("2");
Assert.assertEquals(0, contractSliceService.find(contractSliceFilter, null).getTotalElements());
helper.startSynchronization(config);
SysSyncLogDto log = checkSyncLog(config, SynchronizationActionType.CREATE_ENTITY, 4);
Assert.assertFalse(log.isRunning());
Assert.assertFalse(log.isContainsError());
contractSliceFilter.setValue("1");
List<IdmContractSliceDto> slicesOne = contractSliceService.find(contractSliceFilter, null).getContent();
Assert.assertEquals(1, slicesOne.size());
// Must have sets ContractSliceSyncTest.WORK_POSITION_CODE work position
Assert.assertEquals(workPositionOneNode.getId(), slicesOne.get(0).getWorkPosition());
contractSliceFilter.setValue("2");
List<IdmContractSliceDto> slicesTwo = contractSliceService.find(contractSliceFilter, null).getContent();
Assert.assertEquals(1, slicesTwo.size());
// Must have sets default work position
Assert.assertEquals(defaultNode.getId(), slicesTwo.get(0).getWorkPosition());
contractSliceFilter.setValue("3");
List<IdmContractSliceDto> contractsThree = contractSliceService.find(contractSliceFilter, null).getContent();
Assert.assertEquals(1, contractsThree.size());
Assert.assertEquals(null, contractsThree.get(0).getState());
// Must have sets default work position
Assert.assertEquals(defaultNode.getId(), contractsThree.get(0).getWorkPosition());
contractSliceFilter.setValue("4");
Assert.assertEquals(1, contractSliceService.find(contractSliceFilter, null).getTotalElements());
// Find created contract
IdmIdentityContractFilter contractFilter = new IdmIdentityContractFilter();
contractFilter.setIdentity(owner.getId());
List<IdmIdentityContractDto> contracts = contractService.find(contractFilter, null).getContent();
Assert.assertEquals(3, contracts.size());
// Slice with id "2" should be current using and must have work position sets to
// default node
Assert.assertEquals(1, contracts.stream().filter(c -> c.getPosition().equals("2") && c.isValid() && c.getWorkPosition().equals(defaultNode.getId())).count());
Assert.assertTrue(slicesTwo.get(0).isUsingAsContract());
// Delete log
syncLogService.delete(log);
}
use of eu.bcvsolutions.idm.core.api.dto.filter.IdmContractSliceFilter in project CzechIdMng by bcvsolutions.
the class ContractSliceSyncTest method createContractSlicesEavTest.
/**
* Contract slices EAV use definition from the contracts
*/
@Test
public void createContractSlicesEavTest() {
SysSystemDto system = initData();
Assert.assertNotNull(system);
AbstractSysSyncConfigDto config = doCreateSyncConfig(system);
Assert.assertTrue(config instanceof SysSyncContractConfigDto);
helper.createIdentity(CONTRACT_OWNER_ONE);
helper.createIdentity(CONTRACT_OWNER_TWO);
helper.createIdentity(CONTRACT_LEADER_ONE);
IdmTreeTypeDto treeType = helper.createTreeType();
IdmTreeNodeDto defaultNode = helper.createTreeNode(treeType, null);
helper.createTreeNode(treeType, ContractSliceSyncTest.WORK_POSITION_CODE, null);
((SysSyncContractConfigDto) config).setDefaultTreeType(treeType.getId());
((SysSyncContractConfigDto) config).setDefaultTreeNode(defaultNode.getId());
config = syncConfigService.save(config);
IdmContractSliceFilter contractFilter = new IdmContractSliceFilter();
contractFilter.setProperty(IdmIdentityContract_.position.getName());
contractFilter.setValue("1");
Assert.assertEquals(0, contractSliceService.find(contractFilter, null).getTotalElements());
contractFilter.setValue("2");
Assert.assertEquals(0, contractSliceService.find(contractFilter, null).getTotalElements());
helper.startSynchronization(config);
SysSyncLogDto log = checkSyncLog(config, SynchronizationActionType.CREATE_ENTITY, 4);
Assert.assertFalse(log.isRunning());
Assert.assertFalse(log.isContainsError());
contractFilter.setValue("1");
List<IdmContractSliceDto> slices = contractSliceService.find(contractFilter, null).getContent();
Assert.assertEquals(1, slices.size());
IdmContractSliceDto slice = slices.get(0);
// Contract slices use EAV definition from the contracts
IdmFormDefinitionDto formDefinition = formService.getDefinition(IdmIdentityContract.class, FormService.DEFAULT_DEFINITION_CODE);
List<IdmFormValueDto> values = formService.getValues(slice, formDefinition, EXTENDED_ATTRIBUTE);
Assert.assertEquals(1, values.size());
Assert.assertEquals(slice.getPosition(), values.get(0).getValue());
// Enable different sync.
config.setDifferentialSync(true);
config = syncConfigService.save(config);
Assert.assertTrue(config.isDifferentialSync());
// Start sync with enable different sync - no change was made, so only ignore update should be made.
helper.startSynchronization(config);
// Three ignored updates
log = helper.checkSyncLog(config, SynchronizationActionType.UPDATE_ENTITY, 4, OperationResultType.IGNORE);
Assert.assertFalse(log.isRunning());
Assert.assertFalse(log.isContainsError());
// Change EAV slice value
formService.saveValues(slice, formDefinition, EXTENDED_ATTRIBUTE, Lists.newArrayList(getHelper().createName()));
// Start sync with enable different sync - EAV value changed, so standard ignore update should be made.
helper.startSynchronization(config);
log = helper.checkSyncLog(config, SynchronizationActionType.UPDATE_ENTITY, 1, OperationResultType.SUCCESS);
Assert.assertFalse(log.isRunning());
Assert.assertFalse(log.isContainsError());
// Delete log
syncLogService.delete(log);
}
use of eu.bcvsolutions.idm.core.api.dto.filter.IdmContractSliceFilter in project CzechIdMng by bcvsolutions.
the class ContractSliceSyncTest method createContractBySliceTest.
@Test
public void createContractBySliceTest() {
SysSystemDto system = initData();
Assert.assertNotNull(system);
AbstractSysSyncConfigDto config = doCreateSyncConfig(system);
Assert.assertTrue(config instanceof SysSyncContractConfigDto);
IdmIdentityDto owner = helper.createIdentity(CONTRACT_OWNER_ONE);
helper.createIdentity(CONTRACT_LEADER_ONE);
IdmContractSliceFilter contractSliceFilter = new IdmContractSliceFilter();
contractSliceFilter.setProperty(IdmIdentityContract_.position.getName());
contractSliceFilter.setValue("1");
Assert.assertEquals(0, contractSliceService.find(contractSliceFilter, null).getTotalElements());
contractSliceFilter.setValue("2");
Assert.assertEquals(0, contractSliceService.find(contractSliceFilter, null).getTotalElements());
helper.startSynchronization(config);
SysSyncLogDto log = checkSyncLog(config, SynchronizationActionType.CREATE_ENTITY, 4);
Assert.assertFalse(log.isRunning());
Assert.assertFalse(log.isContainsError());
contractSliceFilter.setValue("1");
Assert.assertEquals(1, contractSliceService.find(contractSliceFilter, null).getTotalElements());
contractSliceFilter.setValue("2");
List<IdmContractSliceDto> slicesTwo = contractSliceService.find(contractSliceFilter, null).getContent();
Assert.assertEquals(1, slicesTwo.size());
contractSliceFilter.setValue("3");
List<IdmContractSliceDto> contractsThree = contractSliceService.find(contractSliceFilter, null).getContent();
Assert.assertEquals(1, contractsThree.size());
Assert.assertEquals(null, contractsThree.get(0).getState());
contractSliceFilter.setValue("4");
Assert.assertEquals(1, contractSliceService.find(contractSliceFilter, null).getTotalElements());
// Find created contract
IdmIdentityContractFilter contractFilter = new IdmIdentityContractFilter();
contractFilter.setIdentity(owner.getId());
List<IdmIdentityContractDto> contracts = contractService.find(contractFilter, null).getContent();
Assert.assertEquals(3, contracts.size());
// Slice with id "2" should be current using
Assert.assertEquals(1, contracts.stream().filter(c -> c.getPosition().equals("2") && c.isValid()).count());
Assert.assertTrue(slicesTwo.get(0).isUsingAsContract());
// Delete log
syncLogService.delete(log);
}
Aggregations