use of eu.bcvsolutions.idm.core.api.entity.AbstractEntity_ in project CzechIdMng by bcvsolutions.
the class ProvisioningMergeTest method testSkipMergeValueIfContractExcluded.
@Test
public void testSkipMergeValueIfContractExcluded() {
SysSystemDto system = helper.createSystem("test_resource");
SysSystemMappingDto mapping = helper.createMapping(system);
IdmRoleDto roleOne = helper.createRole();
IdmRoleDto roleTwo = helper.createRole();
SysRoleSystemDto roleSystemOne = helper.createRoleSystem(roleOne, system);
SysRoleSystemDto roleSystemTwo = helper.createRoleSystem(roleTwo, system);
SysSchemaAttributeDto rightsSchemaAttribute = new SysSchemaAttributeDto();
rightsSchemaAttribute.setObjectClass(mapping.getObjectClass());
rightsSchemaAttribute.setName(RIGHTS_ATTRIBUTE);
rightsSchemaAttribute.setMultivalued(true);
rightsSchemaAttribute.setClassType(String.class.getName());
rightsSchemaAttribute.setReadable(true);
rightsSchemaAttribute.setUpdateable(true);
rightsSchemaAttribute = schemaAttributeService.save(rightsSchemaAttribute);
SysSystemAttributeMappingDto rightsAttribute = new SysSystemAttributeMappingDto();
rightsAttribute.setSchemaAttribute(rightsSchemaAttribute.getId());
rightsAttribute.setSystemMapping(mapping.getId());
rightsAttribute.setName(RIGHTS_ATTRIBUTE);
rightsAttribute.setStrategyType(AttributeMappingStrategyType.MERGE);
rightsAttribute = attributeMappingService.save(rightsAttribute);
SysRoleSystemAttributeDto roleAttributeOne = new SysRoleSystemAttributeDto();
roleAttributeOne.setName(RIGHTS_ATTRIBUTE);
roleAttributeOne.setEntityAttribute(false);
roleAttributeOne.setExtendedAttribute(false);
roleAttributeOne.setRoleSystem(roleSystemOne.getId());
roleAttributeOne.setStrategyType(AttributeMappingStrategyType.MERGE);
roleAttributeOne.setSystemAttributeMapping(rightsAttribute.getId());
roleAttributeOne.setTransformToResourceScript("return '" + ONE_VALUE + "';");
roleAttributeOne = roleSystemAttributeService.saveInternal(roleAttributeOne);
List<Serializable> controlledAttributeValues = attributeMappingService.getControlledAttributeValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE);
SysRoleSystemAttributeDto roleAttributeTwo = new SysRoleSystemAttributeDto();
roleAttributeTwo.setName(RIGHTS_ATTRIBUTE);
roleAttributeTwo.setEntityAttribute(false);
roleAttributeTwo.setExtendedAttribute(false);
roleAttributeTwo.setRoleSystem(roleSystemTwo.getId());
roleAttributeTwo.setStrategyType(AttributeMappingStrategyType.MERGE);
roleAttributeTwo.setSystemAttributeMapping(rightsAttribute.getId());
roleAttributeTwo.setTransformToResourceScript("return '" + TWO_VALUE + "';");
roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
controlledAttributeValues = attributeMappingService.getControlledAttributeValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE);
assertNotNull(controlledAttributeValues);
assertEquals(2, controlledAttributeValues.size());
assertTrue(controlledAttributeValues.contains(ONE_VALUE));
assertTrue(controlledAttributeValues.contains(TWO_VALUE));
SysAttributeControlledValueFilter attributeControlledValueFilter = new SysAttributeControlledValueFilter();
attributeControlledValueFilter.setAttributeMappingId(rightsAttribute.getId());
attributeControlledValueFilter.setHistoricValue(Boolean.TRUE);
List<Serializable> historicControlledValues = //
attributeControlledValueService.find(attributeControlledValueFilter, //
null).getContent().stream().map(//
SysAttributeControlledValueDto::getValue).collect(Collectors.toList());
assertNotNull(historicControlledValues);
assertEquals(0, historicControlledValues.size());
IdmIdentityDto identity = this.getHelper().createIdentity();
IdmIdentityContractDto contract = this.getHelper().getPrimeContract(identity);
// Set contract as excluded
contract.setState(ContractState.EXCLUDED);
contract = identityContractService.save(contract);
assertTrue(contract.isExcluded());
this.getHelper().createIdentityRole(identity, roleOne);
this.getHelper().createIdentityRole(identity, roleTwo);
SysProvisioningOperationFilter operationFilter = new SysProvisioningOperationFilter();
operationFilter.setEntityIdentifier(identity.getId());
List<SysProvisioningArchiveDto> archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
assertEquals(1, archives.size());
SysProvisioningArchiveDto archive = archives.get(0);
assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
ProvisioningContext provisioningContext = archive.getProvisioningContext();
Map<ProvisioningAttributeDto, Object> accountObject = provisioningContext.getAccountObject();
Entry<ProvisioningAttributeDto, Object> attributeEntry = accountObject.entrySet().stream().filter(entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
List<?> values = (List<?>) attributeEntry.getValue();
assertEquals(2, values.size());
// Set attribute TWO to skip value if contract is excluded
roleAttributeTwo.setSkipValueIfExcluded(true);
roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
// Save identity -> execute provisioning
identityService.save(identity);
archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
assertEquals(1, archives.size());
archive = archives.get(0);
assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
provisioningContext = archive.getProvisioningContext();
accountObject = provisioningContext.getAccountObject();
attributeEntry = //
accountObject.entrySet().stream().filter(//
entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
values = (List<?>) attributeEntry.getValue();
assertEquals(1, values.size());
assertEquals(ONE_VALUE, values.get(0));
// Set contract as not excluded
contract.setState(null);
contract = identityContractService.save(contract);
assertFalse(contract.isExcluded());
// Save identity -> execute provisioning
identityService.save(identity);
archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
assertEquals(1, archives.size());
archive = archives.get(0);
assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
provisioningContext = archive.getProvisioningContext();
accountObject = provisioningContext.getAccountObject();
attributeEntry = //
accountObject.entrySet().stream().filter(//
entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
values = (List<?>) attributeEntry.getValue();
assertEquals(2, values.size());
}
use of eu.bcvsolutions.idm.core.api.entity.AbstractEntity_ in project CzechIdMng by bcvsolutions.
the class DefaultLongPollingManager method baseCheckDeferredResult.
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void baseCheckDeferredResult(DeferredResult<OperationResultDto> deferredResult, LongPollingSubscriber subscriber, ModifiedFromFilter filter, ReadDtoService service, boolean checkCount) {
Assert.notNull(deferredResult, "Deferred result is required to check.");
Assert.notNull(subscriber.getEntityId(), "Subscriber is required to check deferred result.");
LOG.debug("Start baseCheckDeferredResult for deferred-result [{}] and subscriber [{}]", deferredResult, subscriber);
if (checkCount) {
long countOfentities = service.count(filter);
Long lastNumberOfEntities = subscriber.getLastNumberOfEntities();
subscriber.setLastNumberOfEntities(countOfentities);
if (lastNumberOfEntities != null && countOfentities != lastNumberOfEntities) {
// Notify FE -> Some of an entities were changed (refresh must be executed)
deferredResult.setResult(new OperationResultDto(OperationState.RUNNING));
return;
}
}
ZonedDateTime timeStamp = subscriber.getLastTimeStamp();
if (timeStamp == null) {
List<AbstractDto> entities = service.find(filter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName(), AbstractEntity_.modified.getName()))).getContent();
if (entities.isEmpty()) {
subscriber.setLastTimeStamp(ZonedDateTime.now());
return;
}
ZonedDateTime lastModified = this.getLastTimeStamp(entities.get(0));
subscriber.setLastTimeStamp(lastModified);
return;
}
// Try to find, if some from not finished entities were changed
// TODO: For search SysSyncLogs the filter by modifiedFrom didn't work properly.
// I didn't found reason why, but I hope using sort by created and modified fields will be works better.
// filter.setModifiedFrom(timeStamp);
List<AbstractDto> changedRequestsFromLastChecks = service.find(filter, PageRequest.of(0, 1, Sort.by(Direction.DESC, AbstractEntity_.created.getName(), AbstractEntity_.modified.getName()))).getContent();
if (!changedRequestsFromLastChecks.isEmpty()) {
AbstractDto changedRequestsFromLastCheck = changedRequestsFromLastChecks.get(0);
ZonedDateTime lastModified = this.getLastTimeStamp(changedRequestsFromLastCheck);
if (lastModified.isAfter(timeStamp)) {
// Notify FE -> Some of the entity was changed (refresh must be executed).
// Notified will be all suspended request for same entity ID!
this.suspendedRequests.stream().filter(request -> request.getEntityId().equals(subscriber.getEntityId())).forEach(request -> {
request.getResult().setResult(new OperationResultDto(OperationState.RUNNING));
});
subscriber.setLastTimeStamp(lastModified);
return;
}
}
// Nothing was changed
}
use of eu.bcvsolutions.idm.core.api.entity.AbstractEntity_ in project CzechIdMng by bcvsolutions.
the class ProvisioningMergeTest method testSkipAuthoritativeMergeValueIfContractExcluded.
@Test
public void testSkipAuthoritativeMergeValueIfContractExcluded() {
SysSystemDto system = helper.createSystem("test_resource");
SysSystemMappingDto mapping = helper.createMapping(system);
IdmRoleDto roleOne = helper.createRole();
IdmRoleDto roleTwo = helper.createRole();
SysRoleSystemDto roleSystemOne = helper.createRoleSystem(roleOne, system);
SysRoleSystemDto roleSystemTwo = helper.createRoleSystem(roleTwo, system);
SysSchemaAttributeDto rightsSchemaAttribute = new SysSchemaAttributeDto();
rightsSchemaAttribute.setObjectClass(mapping.getObjectClass());
rightsSchemaAttribute.setName(RIGHTS_ATTRIBUTE);
rightsSchemaAttribute.setMultivalued(true);
rightsSchemaAttribute.setClassType(String.class.getName());
rightsSchemaAttribute.setReadable(true);
rightsSchemaAttribute.setUpdateable(true);
rightsSchemaAttribute = schemaAttributeService.save(rightsSchemaAttribute);
SysSystemAttributeMappingDto rightsAttribute = new SysSystemAttributeMappingDto();
rightsAttribute.setSchemaAttribute(rightsSchemaAttribute.getId());
rightsAttribute.setSystemMapping(mapping.getId());
rightsAttribute.setName(RIGHTS_ATTRIBUTE);
rightsAttribute.setStrategyType(AttributeMappingStrategyType.AUTHORITATIVE_MERGE);
rightsAttribute = attributeMappingService.save(rightsAttribute);
SysRoleSystemAttributeDto roleAttributeOne = new SysRoleSystemAttributeDto();
roleAttributeOne.setName(RIGHTS_ATTRIBUTE);
roleAttributeOne.setEntityAttribute(false);
roleAttributeOne.setExtendedAttribute(false);
roleAttributeOne.setRoleSystem(roleSystemOne.getId());
roleAttributeOne.setStrategyType(AttributeMappingStrategyType.AUTHORITATIVE_MERGE);
roleAttributeOne.setSystemAttributeMapping(rightsAttribute.getId());
roleAttributeOne.setTransformToResourceScript("return '" + ONE_VALUE + "';");
roleAttributeOne = roleSystemAttributeService.saveInternal(roleAttributeOne);
SysRoleSystemAttributeDto roleAttributeTwo = new SysRoleSystemAttributeDto();
roleAttributeTwo.setName(RIGHTS_ATTRIBUTE);
roleAttributeTwo.setEntityAttribute(false);
roleAttributeTwo.setExtendedAttribute(false);
roleAttributeTwo.setRoleSystem(roleSystemTwo.getId());
roleAttributeTwo.setStrategyType(AttributeMappingStrategyType.AUTHORITATIVE_MERGE);
roleAttributeTwo.setSystemAttributeMapping(rightsAttribute.getId());
roleAttributeTwo.setTransformToResourceScript("return '" + TWO_VALUE + "';");
roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
IdmIdentityDto identity = this.getHelper().createIdentity();
IdmIdentityContractDto contract = this.getHelper().getPrimeContract(identity);
// Set contract as excluded
contract.setState(ContractState.EXCLUDED);
contract = identityContractService.save(contract);
assertTrue(contract.isExcluded());
this.getHelper().createIdentityRole(identity, roleOne);
this.getHelper().createIdentityRole(identity, roleTwo);
SysProvisioningOperationFilter operationFilter = new SysProvisioningOperationFilter();
operationFilter.setEntityIdentifier(identity.getId());
List<SysProvisioningArchiveDto> archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
assertEquals(1, archives.size());
SysProvisioningArchiveDto archive = archives.get(0);
assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
ProvisioningContext provisioningContext = archive.getProvisioningContext();
Map<ProvisioningAttributeDto, Object> accountObject = provisioningContext.getAccountObject();
Entry<ProvisioningAttributeDto, Object> attributeEntry = accountObject.entrySet().stream().filter(entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
List<?> values = (List<?>) attributeEntry.getValue();
assertEquals(2, values.size());
// Set attribute TWO to skip value if contract is excluded
roleAttributeTwo.setSkipValueIfExcluded(true);
roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
// Save identity -> execute provisioning
identityService.save(identity);
archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
assertEquals(1, archives.size());
archive = archives.get(0);
assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
provisioningContext = archive.getProvisioningContext();
accountObject = provisioningContext.getAccountObject();
attributeEntry = //
accountObject.entrySet().stream().filter(//
entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
values = (List<?>) attributeEntry.getValue();
assertEquals(1, values.size());
assertEquals(ONE_VALUE, values.get(0));
// Set contract as not excluded
contract.setState(null);
contract = identityContractService.save(contract);
assertFalse(contract.isExcluded());
// Save identity -> execute provisioning
identityService.save(identity);
archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
assertEquals(1, archives.size());
archive = archives.get(0);
assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
provisioningContext = archive.getProvisioningContext();
accountObject = provisioningContext.getAccountObject();
attributeEntry = //
accountObject.entrySet().stream().filter(//
entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
values = (List<?>) attributeEntry.getValue();
assertEquals(2, values.size());
}
use of eu.bcvsolutions.idm.core.api.entity.AbstractEntity_ in project CzechIdMng by bcvsolutions.
the class ProvisioningMergeTest method testSkipMergeValueIfTwoContractsExcluded.
@Test
public void testSkipMergeValueIfTwoContractsExcluded() {
SysSystemDto system = helper.createSystem("test_resource");
SysSystemMappingDto mapping = helper.createMapping(system);
IdmRoleDto roleOne = helper.createRole();
IdmRoleDto roleTwo = helper.createRole();
SysRoleSystemDto roleSystemOne = helper.createRoleSystem(roleOne, system);
SysRoleSystemDto roleSystemTwo = helper.createRoleSystem(roleTwo, system);
SysSchemaAttributeDto rightsSchemaAttribute = new SysSchemaAttributeDto();
rightsSchemaAttribute.setObjectClass(mapping.getObjectClass());
rightsSchemaAttribute.setName(RIGHTS_ATTRIBUTE);
rightsSchemaAttribute.setMultivalued(true);
rightsSchemaAttribute.setClassType(String.class.getName());
rightsSchemaAttribute.setReadable(true);
rightsSchemaAttribute.setUpdateable(true);
rightsSchemaAttribute = schemaAttributeService.save(rightsSchemaAttribute);
SysSystemAttributeMappingDto rightsAttribute = new SysSystemAttributeMappingDto();
rightsAttribute.setSchemaAttribute(rightsSchemaAttribute.getId());
rightsAttribute.setSystemMapping(mapping.getId());
rightsAttribute.setName(RIGHTS_ATTRIBUTE);
rightsAttribute.setStrategyType(AttributeMappingStrategyType.MERGE);
rightsAttribute = attributeMappingService.save(rightsAttribute);
SysRoleSystemAttributeDto roleAttributeOne = new SysRoleSystemAttributeDto();
roleAttributeOne.setName(RIGHTS_ATTRIBUTE);
roleAttributeOne.setEntityAttribute(false);
roleAttributeOne.setExtendedAttribute(false);
roleAttributeOne.setRoleSystem(roleSystemOne.getId());
roleAttributeOne.setStrategyType(AttributeMappingStrategyType.MERGE);
roleAttributeOne.setSystemAttributeMapping(rightsAttribute.getId());
roleAttributeOne.setTransformToResourceScript("return '" + ONE_VALUE + "';");
roleAttributeOne = roleSystemAttributeService.saveInternal(roleAttributeOne);
List<Serializable> controlledAttributeValues = attributeMappingService.getControlledAttributeValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE);
SysRoleSystemAttributeDto roleAttributeTwo = new SysRoleSystemAttributeDto();
roleAttributeTwo.setName(RIGHTS_ATTRIBUTE);
roleAttributeTwo.setEntityAttribute(false);
roleAttributeTwo.setExtendedAttribute(false);
roleAttributeTwo.setRoleSystem(roleSystemTwo.getId());
roleAttributeTwo.setStrategyType(AttributeMappingStrategyType.MERGE);
roleAttributeTwo.setSystemAttributeMapping(rightsAttribute.getId());
roleAttributeTwo.setTransformToResourceScript("return '" + TWO_VALUE + "';");
roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
controlledAttributeValues = attributeMappingService.getControlledAttributeValues(system.getId(), mapping.getEntityType(), RIGHTS_ATTRIBUTE);
assertNotNull(controlledAttributeValues);
assertEquals(2, controlledAttributeValues.size());
assertTrue(controlledAttributeValues.contains(ONE_VALUE));
assertTrue(controlledAttributeValues.contains(TWO_VALUE));
SysAttributeControlledValueFilter attributeControlledValueFilter = new SysAttributeControlledValueFilter();
attributeControlledValueFilter.setAttributeMappingId(rightsAttribute.getId());
attributeControlledValueFilter.setHistoricValue(Boolean.TRUE);
List<Serializable> historicControlledValues = //
attributeControlledValueService.find(attributeControlledValueFilter, //
null).getContent().stream().map(//
SysAttributeControlledValueDto::getValue).collect(Collectors.toList());
assertNotNull(historicControlledValues);
assertEquals(0, historicControlledValues.size());
IdmIdentityDto identity = this.getHelper().createIdentity();
IdmIdentityContractDto contractOne = this.getHelper().getPrimeContract(identity);
IdmIdentityContractDto contractTwo = this.getHelper().createContract(identity);
// Set contract one as excluded
contractOne.setState(ContractState.EXCLUDED);
contractOne = identityContractService.save(contractOne);
assertTrue(contractOne.isExcluded());
// Set contract two as not excluded
contractTwo.setState(null);
contractTwo = identityContractService.save(contractTwo);
assertFalse(contractTwo.isExcluded());
this.getHelper().createIdentityRole(identity, roleOne);
// Role two is assigned by contract one and contract two!
this.getHelper().createIdentityRole(contractOne, roleTwo);
this.getHelper().createIdentityRole(contractTwo, roleTwo);
SysProvisioningOperationFilter operationFilter = new SysProvisioningOperationFilter();
operationFilter.setEntityIdentifier(identity.getId());
List<SysProvisioningArchiveDto> archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
assertEquals(1, archives.size());
SysProvisioningArchiveDto archive = archives.get(0);
assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
ProvisioningContext provisioningContext = archive.getProvisioningContext();
Map<ProvisioningAttributeDto, Object> accountObject = provisioningContext.getAccountObject();
Entry<ProvisioningAttributeDto, Object> attributeEntry = accountObject.entrySet().stream().filter(entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
List<?> values = (List<?>) attributeEntry.getValue();
assertEquals(2, values.size());
// Set attribute TWO to skip value if contract is excluded
roleAttributeTwo.setSkipValueIfExcluded(true);
roleAttributeTwo = roleSystemAttributeService.saveInternal(roleAttributeTwo);
// Save identity -> execute provisioning
identityService.save(identity);
archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
assertEquals(1, archives.size());
archive = archives.get(0);
assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
provisioningContext = archive.getProvisioningContext();
accountObject = provisioningContext.getAccountObject();
attributeEntry = //
accountObject.entrySet().stream().filter(//
entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
values = (List<?>) attributeEntry.getValue();
// Skip was not executed, because there is two contracts assigned same role and
// second contract is not excluded
assertEquals(2, values.size());
// Set contract two as excluded
contractTwo.setState(ContractState.EXCLUDED);
contractTwo = identityContractService.save(contractTwo);
assertTrue(contractTwo.isExcluded());
// Save identity -> execute provisioning
identityService.save(identity);
archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
assertEquals(1, archives.size());
archive = archives.get(0);
assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
provisioningContext = archive.getProvisioningContext();
accountObject = provisioningContext.getAccountObject();
attributeEntry = //
accountObject.entrySet().stream().filter(//
entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
values = (List<?>) attributeEntry.getValue();
assertEquals(1, values.size());
assertEquals(ONE_VALUE, values.get(0));
// Set contract as not excluded
contractOne.setState(null);
contractOne = identityContractService.save(contractOne);
assertFalse(contractOne.isExcluded());
// Save identity -> execute provisioning
identityService.save(identity);
archives = provisioningArchiveService.find(operationFilter, PageRequest.of(0, 1, new Sort(Direction.DESC, AbstractEntity_.created.getName()))).getContent();
assertEquals(1, archives.size());
archive = archives.get(0);
assertEquals(ProvisioningEventType.UPDATE, archive.getOperationType());
provisioningContext = archive.getProvisioningContext();
accountObject = provisioningContext.getAccountObject();
attributeEntry = //
accountObject.entrySet().stream().filter(//
entry -> RIGHTS_ATTRIBUTE.equals(entry.getKey().getSchemaAttributeName())).findFirst().get();
values = (List<?>) attributeEntry.getValue();
assertEquals(2, values.size());
}
Aggregations