use of eu.bcvsolutions.idm.acc.scheduler.task.impl.RetryProvisioningTaskExecutor in project CzechIdMng by bcvsolutions.
the class DefaultProvisioningExecutorIntegrationTest method testRetryProvisioning.
@Test
public void testRetryProvisioning() {
testProvisioningExceptionProcessor.setDisabled(false);
try {
SysSystemDto system = helper.createTestResourceSystem(true);
SysProvisioningOperationDto provisioningOperation = createProvisioningOperation(system, "firstname");
Map<ProvisioningAttributeDto, Object> accoutObject = provisioningOperation.getProvisioningContext().getAccountObject();
String uid = (String) accoutObject.get(getProvisioningAttribute(TestHelper.ATTRIBUTE_MAPPING_NAME));
DateTime now = new DateTime();
//
// publish event
// publish event
// 1 - create
provisioningExecutor.execute(provisioningOperation);
// is necessary to get again operation from service
SysProvisioningOperationFilter filter = new SysProvisioningOperationFilter();
filter.setSystemEntity(provisioningOperation.getSystemEntity());
filter.setSystemId(system.getId());
SysProvisioningOperationDto operation = provisioningOperationService.find(filter, null).getContent().get(0);
SysProvisioningBatchDto batch = provisioningBatchService.findBatch(system.getId(), operation.getEntityIdentifier(), operation.getSystemEntity());
Assert.assertEquals(OperationState.EXCEPTION, operation.getResultState());
Assert.assertEquals(AccResultCode.PROVISIONING_FAILED.name(), operation.getResult().getModel().getStatusEnum());
Assert.assertEquals(1, operation.getCurrentAttempt());
Assert.assertTrue(operation.getMaxAttempts() > 1);
Assert.assertTrue(batch.getNextAttempt().isAfter(now));
SysSystemEntityDto systemEntity = systemEntityService.getBySystemAndEntityTypeAndUid(system, SystemEntityType.IDENTITY, uid);
Assert.assertTrue(systemEntity.isWish());
Assert.assertNull(helper.findResource(uid));
//
batch.setNextAttempt(new DateTime());
provisioningBatchService.save(batch);
//
// retry - the same exception expected
RetryProvisioningTaskExecutor retryProvisioningTaskExecutor = new RetryProvisioningTaskExecutor();
Boolean result = longRunningTaskManager.executeSync(retryProvisioningTaskExecutor);
Assert.assertTrue(result);
operation = provisioningOperationService.get(operation.getId());
batch = provisioningBatchService.findBatch(system.getId(), operation.getEntityIdentifier(), systemEntity.getId());
Assert.assertEquals(2, operation.getCurrentAttempt());
Assert.assertTrue(batch.getNextAttempt().isAfter(now));
//
batch.setNextAttempt(new DateTime());
provisioningBatchService.save(batch);
//
// retry - expected success now
testProvisioningExceptionProcessor.setDisabled(true);
retryProvisioningTaskExecutor = new RetryProvisioningTaskExecutor();
result = longRunningTaskManager.executeSync(retryProvisioningTaskExecutor);
Assert.assertTrue(result);
//
systemEntity = systemEntityService.getBySystemAndEntityTypeAndUid(system, SystemEntityType.IDENTITY, uid);
Assert.assertFalse(systemEntity.isWish());
Assert.assertNotNull(helper.findResource(uid));
Assert.assertNull(provisioningBatchService.get(batch.getId()));
} finally {
testProvisioningExceptionProcessor.setDisabled(true);
}
}
Aggregations