use of eu.bcvsolutions.idm.acc.scheduler.task.impl.CancelProvisioningQueueTaskExecutor in project CzechIdMng by bcvsolutions.
the class CleanProvisioningQueueTaskExecutorIntegrationTest method testLrtWithFilterBatch.
@Test
public void testLrtWithFilterBatch() {
// create identity
IdmIdentityDto person = createIdentity("firstName" + System.currentTimeMillis(), "Surname" + System.currentTimeMillis(), "email" + System.currentTimeMillis() + "@gemail.eu", "000000009", false);
IdmIdentityDto personSecond = createIdentity("firstName" + System.currentTimeMillis(), "Surname" + System.currentTimeMillis(), "email" + System.currentTimeMillis() + "@gemail.eu", "000000009", false);
// create system read only
SysSystemDto system = helper.createTestResourceSystem(true);
system.setReadonly(true);
systemService.save(system);
// create role, "assign" role to system, "assign" role to identity
IdmRoleDto role = helper.createRole();
SysRoleSystemDto roleSystemDefault = helper.createRoleSystem(role, system);
roleSystemDefault.setSystemMapping(helper.getDefaultMapping(system).getId());
roleSystemService.save(roleSystemDefault);
IdmIdentityRoleDto identityRole = helper.createIdentityRole(person, role);
identityRole.setValidFrom(LocalDate.now().plusDays(1));
identityRoleService.save(identityRole);
// create system read only
SysSystemDto systemSecond = helper.createTestResourceSystem(true);
systemSecond.setReadonly(true);
systemService.save(systemSecond);
// create role, "assign" role to system, "assign" role to identity
IdmRoleDto roleSecond = helper.createRole();
SysRoleSystemDto roleSystemDefaultSecond = helper.createRoleSystem(roleSecond, systemSecond);
roleSystemDefaultSecond.setSystemMapping(helper.getDefaultMapping(systemSecond).getId());
roleSystemService.save(roleSystemDefaultSecond);
helper.createIdentityRole(personSecond, roleSecond);
// find items in provisioning queue// first system// 2 provisioning operations, but 1 batch
SysProvisioningOperationFilter filter = new SysProvisioningOperationFilter();
filter.setSystemId(system.getId());
Page<SysProvisioningOperationDto> page = sysProvisioningOperationService.find(filter, null);
Assert.assertEquals(2, page.getContent().size());
// find items in provisioning queue// second system
SysProvisioningOperationFilter filterSecond = new SysProvisioningOperationFilter();
filterSecond.setSystemId(systemSecond.getId());
Page<SysProvisioningOperationDto> pageSecond = sysProvisioningOperationService.find(filterSecond, null);
Assert.assertEquals(1, pageSecond.getContent().size());
UUID batchId = page.getContent().get(0).getBatch();
SysProvisioningBatchDto batch = sysProvisioningBatchService.get(batchId);
assertNotNull(batch);
// find items in provisioning queue
SysProvisioningOperationFilter filterBatch = new SysProvisioningOperationFilter();
filterBatch.setBatchId(batchId);
Page<SysProvisioningOperationDto> pageBatch = sysProvisioningOperationService.find(filterBatch, null);
Assert.assertEquals(2, pageBatch.getContent().size());
// create and start LRT to clean
CancelProvisioningQueueTaskExecutor lrt = new CancelProvisioningQueueTaskExecutor();
//
SysProvisioningOperationFilter filterLrt = new SysProvisioningOperationFilter();
filterLrt.setSystemId(system.getId());
filterLrt.setOperationType(ProvisioningEventType.CREATE);
//
// filter will find just 1 provisioning operation of same batch, but clean both
page = sysProvisioningOperationService.find(filterLrt, null);
Assert.assertEquals(1, page.getContent().size());
lrt.setFilter(filterLrt);
//
longRunningTaskManager.executeSync(lrt);
// items in queue are cleaned
filter = new SysProvisioningOperationFilter();
filter.setSystemId(system.getId());
page = sysProvisioningOperationService.find(filter, null);
Assert.assertEquals(0, page.getContent().size());
// find items in provisioning queue// both systems
pageSecond = sysProvisioningOperationService.find(filterSecond, null);
Assert.assertEquals(1, pageSecond.getContent().size());
// archive
SysProvisioningOperationFilter filterArchive = new SysProvisioningOperationFilter();
filterArchive.setSystemId(system.getId());
Page<SysProvisioningArchiveDto> archivePage = archiveService.find(filterArchive, null);
// 2 provisioning operation
Assert.assertEquals(2, archivePage.getContent().size());
}
use of eu.bcvsolutions.idm.acc.scheduler.task.impl.CancelProvisioningQueueTaskExecutor in project CzechIdMng by bcvsolutions.
the class SysProvisioningOperationController method cancelAll.
@ResponseBody
@PreAuthorize("hasAuthority('" + AccGroupPermission.SYSTEM_ADMIN + "')")
@RequestMapping(value = "/action/bulk/cancel", method = RequestMethod.PUT)
@ApiOperation(value = "Cancel provisioning queue", nickname = "cancelAllProvisioningQueue", tags = { SysProvisioningOperationController.TAG }, notes = "Cancel all operations from provisioning queue by given filter")
public ResponseEntity<?> cancelAll(@RequestParam(required = false) MultiValueMap<String, Object> parameters) {
SysProvisioningOperationFilter filter = toFilter(parameters);
// filter.setSystemId(getParameterConverter().toEntityUuid(parameters, "systemId", SysSystem.class));
//
CancelProvisioningQueueTaskExecutor lrt = new CancelProvisioningQueueTaskExecutor();
lrt.setFilter(filter);
//
LongRunningFutureTask<Boolean> futureTask = longRunningTaskManager.execute(lrt);
//
return new ResponseEntity<Object>(longRunningTaskManager.getLongRunningTask(futureTask), HttpStatus.ACCEPTED);
}
use of eu.bcvsolutions.idm.acc.scheduler.task.impl.CancelProvisioningQueueTaskExecutor in project CzechIdMng by bcvsolutions.
the class CleanProvisioningQueueTaskExecutorIntegrationTest method testLrtWithFilterBatch.
@Test
public void testLrtWithFilterBatch() {
// create identity
IdmIdentityDto person = createIdentity("firstName" + System.currentTimeMillis(), "Surname" + System.currentTimeMillis(), "email" + System.currentTimeMillis() + "@gemail.eu", "000000009", false);
IdmIdentityDto personSecond = createIdentity("firstName" + System.currentTimeMillis(), "Surname" + System.currentTimeMillis(), "email" + System.currentTimeMillis() + "@gemail.eu", "000000009", false);
// create system read only
SysSystemDto system = helper.createTestResourceSystem(true);
system.setReadonly(true);
systemService.save(system);
// create role, "assign" role to system, "assign" role to identity
IdmRoleDto role = helper.createRole();
SysRoleSystemDto roleSystemDefault = helper.createRoleSystem(role, system);
roleSystemDefault.setSystemMapping(helper.getDefaultMapping(system).getId());
roleSystemService.save(roleSystemDefault);
IdmIdentityRoleDto identityRole = helper.createIdentityRole(person, role);
identityRole.setValidFrom(LocalDate.now().plusDays(1));
identityRoleService.save(identityRole);
// create system read only
SysSystemDto systemSecond = helper.createTestResourceSystem(true);
systemSecond.setReadonly(true);
systemService.save(systemSecond);
// create role, "assign" role to system, "assign" role to identity
IdmRoleDto roleSecond = helper.createRole();
SysRoleSystemDto roleSystemDefaultSecond = helper.createRoleSystem(roleSecond, systemSecond);
roleSystemDefaultSecond.setSystemMapping(helper.getDefaultMapping(systemSecond).getId());
roleSystemService.save(roleSystemDefaultSecond);
helper.createIdentityRole(personSecond, roleSecond);
// find items in provisioning queue// first system// 2 provisioning operations, but 1 batch
SysProvisioningOperationFilter filter = new SysProvisioningOperationFilter();
filter.setSystemId(system.getId());
Page<SysProvisioningOperationDto> page = sysProvisioningOperationService.find(filter, null);
Assert.assertEquals(2, page.getContent().size());
// find items in provisioning queue// second system
SysProvisioningOperationFilter filterSecond = new SysProvisioningOperationFilter();
filterSecond.setSystemId(systemSecond.getId());
Page<SysProvisioningOperationDto> pageSecond = sysProvisioningOperationService.find(filterSecond, null);
Assert.assertEquals(1, pageSecond.getContent().size());
UUID batchId = page.getContent().get(0).getBatch();
SysProvisioningBatchDto batch = sysProvisioningBatchService.get(batchId);
assertNotNull(batch);
// find items in provisioning queue
SysProvisioningOperationFilter filterBatch = new SysProvisioningOperationFilter();
filterBatch.setBatchId(batchId);
Page<SysProvisioningOperationDto> pageBatch = sysProvisioningOperationService.find(filterBatch, null);
Assert.assertEquals(2, pageBatch.getContent().size());
// create and start LRT to clean
CancelProvisioningQueueTaskExecutor lrt = new CancelProvisioningQueueTaskExecutor();
//
SysProvisioningOperationFilter filterLrt = new SysProvisioningOperationFilter();
filterLrt.setSystemId(system.getId());
filterLrt.setOperationType(ProvisioningEventType.CREATE);
//
// filter will find just 1 provisioning operation of same batch, but clean both
page = sysProvisioningOperationService.find(filterLrt, null);
Assert.assertEquals(1, page.getContent().size());
lrt.setFilter(filterLrt);
//
longRunningTaskManager.executeSync(lrt);
// items in queue are cleaned
filter = new SysProvisioningOperationFilter();
filter.setSystemId(system.getId());
page = sysProvisioningOperationService.find(filter, null);
Assert.assertEquals(0, page.getContent().size());
batch = sysProvisioningBatchService.get(batchId);
assertNull(batch);
// find items in provisioning queue// both systems
pageSecond = sysProvisioningOperationService.find(filterSecond, null);
Assert.assertEquals(1, pageSecond.getContent().size());
// archive
SysProvisioningOperationFilter filterArchive = new SysProvisioningOperationFilter();
filterArchive.setSystemId(system.getId());
Page<SysProvisioningArchiveDto> archivePage = archiveService.find(filterArchive, null);
// 2 provisioning operation
Assert.assertEquals(2, archivePage.getContent().size());
}
Aggregations