@Test public void test410ManualReiterationUnavailable() throws Exception { final String TEST_NAME = "test410ManualReiterationUnavailable"; TestUtil.displayTestTitle(this, TEST_NAME); login(getUserFromRepo(USER_ADMINISTRATOR_OID)); // GIVEN Task task = taskManager.createTaskInstance(TestEscalation.class.getName() + "." + TEST_NAME); task.setOwner(userAdministrator.asPrismObject()); OperationResult result = task.getResult(); dummyTransport.clearMessages(); // WHEN TestUtil.displayWhen(TEST_NAME); clock.resetOverride(); clock.overrideDuration("P22D"); // +1 day relative to previous test try { certificationManager.reiterateCampaign(campaignOid, task, result); fail("unexpected success"); } catch (IllegalStateException e) { // THEN System.err.println("got expected exception: " + e.getMessage()); e.printStackTrace(); assertTrue("wrong exception message", e.getMessage().contains("maximum number of iterations (3) was reached")); } }
@Test public void test200CreateTaskE2() throws Exception { final String TEST_NAME = "test200CreateTaskE2"; TestUtil.displayTestTitle(this, TEST_NAME); login(userAdministrator); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); clock.resetOverride(); resetTriggerTask(TASK_TRIGGER_SCANNER_OID, TASK_TRIGGER_SCANNER_FILE, result); // WHEN assignRole(userJackOid, roleE2Oid, task, result); // should start approval process // THEN assertNotAssignedRole(userJackOid, roleE2Oid, task, result); List<WorkItemType> workItems = getWorkItems(task, result); displayWorkItems("Work items", workItems); approvalTaskOid = WfContextUtil.getTask(workItems.get(0)).getOid(); PrismObject<TaskType> wfTask = getTask(approvalTaskOid); display("workflow task", wfTask); // D-0 days: escalate (twice) assertEquals("Wrong # of triggers", 2, wfTask.asObjectable().getTrigger().size()); }
@Test public void test130Remediation() throws Exception { final String TEST_NAME = "test130Remediation"; TestUtil.displayTestTitle(this, TEST_NAME); login(getUserFromRepo(USER_ADMINISTRATOR_OID)); // GIVEN Task task = taskManager.createTaskInstance(TestEscalation.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); dummyTransport.clearMessages(); // WHEN TestUtil.displayWhen(TEST_NAME); clock.resetOverride(); clock.overrideDuration("P15D"); // stage ends at P14D waitForTaskNextRun(TASK_TRIGGER_SCANNER_OID, true, 20000, true); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); AccessCertificationCampaignType campaign = getCampaignWithCases(campaignOid); display("campaign after remediation", campaign); assertStateAndStage(campaign, AccessCertificationCampaignStateType.IN_REMEDIATION, 2); }
@Test public void test300Close() throws Exception { final String TEST_NAME = "test300Close"; TestUtil.displayTestTitle(this, TEST_NAME); login(getUserFromRepo(USER_ADMINISTRATOR_OID)); // GIVEN Task task = taskManager.createTaskInstance(TestEscalation.class.getName() + "." + TEST_NAME); task.setOwner(userAdministrator.asPrismObject()); OperationResult result = task.getResult(); dummyTransport.clearMessages(); // WHEN TestUtil.displayWhen(TEST_NAME); clock.resetOverride(); clock.overrideDuration("P19D"); // +1 day relative to previous test certificationManager.closeCampaign(campaignOid, true, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); AccessCertificationCampaignType campaign = getCampaignWithCases(campaignOid); display("campaign after close", campaign); assertStateAndStage(campaign, AccessCertificationCampaignStateType.CLOSED, 2); assertEquals("Wrong # of triggers", 0, campaign.getTrigger().size()); // no more automated reiterations }
@Test public void test130Complete() throws Exception { final String TEST_NAME = "test130Complete"; TestUtil.displayTestTitle(this, TEST_NAME); login(userAdministrator); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); clock.resetOverride(); clock.overrideDuration("P15D"); // at 0 (i.e. P14D) there is a delegate action waitForTaskNextRun(TASK_TRIGGER_SCANNER_OID, true, 20000, true); PrismObject<TaskType> wfTask = getTask(approvalTaskOid); display("task", wfTask); assertEquals("Wrong # of triggers", 0, wfTask.asObjectable().getTrigger().size()); Task rootTask = taskManager.getTaskByIdentifier(wfTask.asObjectable().getParent(), result); display("rootTask", rootTask); waitForTaskClose(rootTask, 60000); assertAssignedRole(userJackOid, roleE1Oid, task, result); }
@Test public void test140Close() throws Exception { final String TEST_NAME = "test140Close"; TestUtil.displayTestTitle(this, TEST_NAME); login(getUserFromRepo(USER_ADMINISTRATOR_OID)); // GIVEN Task task = taskManager.createTaskInstance(TestEscalation.class.getName() + "." + TEST_NAME); task.setOwner(userAdministrator.asPrismObject()); OperationResult result = task.getResult(); dummyTransport.clearMessages(); // WHEN TestUtil.displayWhen(TEST_NAME); clock.resetOverride(); clock.overrideDuration("P16D"); certificationManager.closeCampaign(campaignOid, true, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); AccessCertificationCampaignType campaign = getCampaignWithCases(campaignOid); display("campaign after close", campaign); assertStateAndStage(campaign, AccessCertificationCampaignStateType.CLOSED, 2); assertEquals("Wrong # of triggers", 1, campaign.getTrigger().size()); // reiterate }
@Test public void test400Close() throws Exception { final String TEST_NAME = "test300Close"; TestUtil.displayTestTitle(this, TEST_NAME); login(getUserFromRepo(USER_ADMINISTRATOR_OID)); // GIVEN Task task = taskManager.createTaskInstance(TestEscalation.class.getName() + "." + TEST_NAME); task.setOwner(userAdministrator.asPrismObject()); OperationResult result = task.getResult(); dummyTransport.clearMessages(); // WHEN TestUtil.displayWhen(TEST_NAME); clock.resetOverride(); clock.overrideDuration("P21D"); // +1 day relative to previous test certificationManager.closeCampaign(campaignOid, true, task, result); // THEN TestUtil.displayThen(TEST_NAME); result.computeStatus(); TestUtil.assertSuccess(result); AccessCertificationCampaignType campaign = getCampaignWithCases(campaignOid); display("campaign after close", campaign); assertStateAndStage(campaign, AccessCertificationCampaignStateType.CLOSED, 2); assertEquals("Wrong # of triggers", 0, campaign.getTrigger().size()); // no more automated reiterations }
@Test public void test120Escalate() throws Exception { final String TEST_NAME = "test120Escalate"; TestUtil.displayTestTitle(this, TEST_NAME); login(userAdministrator); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); clock.resetOverride(); clock.overrideDuration("P13D"); // at -P2D (i.e. P12D) there is a delegate action waitForTaskNextRun(TASK_TRIGGER_SCANNER_OID, true, 20000, true); WorkItemType workItem = getWorkItem(task, result); display("work item", workItem); PrismObject<TaskType> wfTask = getTask(WfContextUtil.getTask(workItem).getOid()); display("task", wfTask); assertEquals("Wrong # of triggers", 1, wfTask.asObjectable().getTrigger().size()); PrismAsserts.assertReferenceValues(ref(workItem.getAssigneeRef()), userLead1Oid, userLead2Oid); PrismAsserts.assertReferenceValue(ref(workItem.getOriginalAssigneeRef()), userLead1Oid); assertEquals("Wrong escalation level number", 1, WfContextUtil.getEscalationLevelNumber(workItem)); }
/** * Guybrush has an entitlement (swashbucklers), but after recomputation it should go away. */ @Test public void test700ReconcileGuybrush() throws Exception { final String TEST_NAME = "test700ReconcileGuybrush"; displayTestTitle(TEST_NAME); Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); clock.resetOverride(); dumpUserAndAccounts(getUser(USER_GUYBRUSH_OID), task, result); dumpOrangeGroups(task, result); // GIVEN DummyGroup dummyGroup = getDummyResource().getGroupByName(GROUP_DUMMY_SWASHBUCKLERS_NAME); dummyGroup.addMember(USER_GUYBRUSH_USERNAME); assertGroupMember(getDummyGroup(null, GROUP_DUMMY_SWASHBUCKLERS_NAME), USER_GUYBRUSH_USERNAME); // WHEN displayWhen(TEST_NAME); reconcileUser(USER_GUYBRUSH_OID, task, result); // THEN displayThen(TEST_NAME); dumpUserAndAccounts(getUser(USER_GUYBRUSH_OID), task, result); assertNoGroupMember(getDummyGroup(null, GROUP_DUMMY_SWASHBUCKLERS_NAME), USER_GUYBRUSH_USERNAME); assertSteadyResources(); }
clock.resetOverride(); clock.overrideDuration("P20D"); // +1 day relative to previous test certificationManager.reiterateCampaign(campaignOid, task, result);
clock.resetOverride(); clock.overrideDuration("P18D"); // campaign ends at P16D, reiteration scheduled to P17D waitForTaskNextRun(TASK_TRIGGER_SCANNER_OID, true, 20000, true);
clock.resetOverride(); clock.overrideDuration("P5DT20M"); // at 5D there's a deadline with auto-rejection waitForTaskNextRun(TASK_TRIGGER_SCANNER_OID, true, 20000, true);
@Test public void test100ImportValidityScannerTask() throws Exception { final String TEST_NAME = "test100ImportValidityScannerTask"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); // Pretend that the user was added a long time ago clock.override(LONG_LONG_TIME_AGO); addObject(USER_HERMAN_FILE); // Make sure that it is effectivelly disabled PrismObject<UserType> userHermanBefore = getUser(USER_HERMAN_OID); assertEffectiveActivation(userHermanBefore, ActivationStatusType.DISABLED); assertValidityStatus(userHermanBefore, TimeIntervalStatusType.BEFORE); clock.resetOverride(); XMLGregorianCalendar startCal = clock.currentTimeXMLGregorianCalendar(); /// WHEN TestUtil.displayWhen(TEST_NAME); importObjectFromFile(getValidityScannerTaskFileName()); waitForValidityTaskStart(); waitForValidityTaskFinish(); // THEN TestUtil.displayThen(TEST_NAME); XMLGregorianCalendar endCal = clock.currentTimeXMLGregorianCalendar(); assertLastScanTimestamp(TASK_VALIDITY_SCANNER_OID, startCal, endCal); PrismObject<UserType> userHermanAfter = getUser(USER_HERMAN_OID); assertEffectiveActivation(userHermanAfter, ActivationStatusType.ENABLED); assertValidityStatus(userHermanAfter, TimeIntervalStatusType.IN); }
clock.resetOverride(); clock.overrideDuration("P2D"); // first escalation is at P1D waitForTaskNextRun(TASK_TRIGGER_SCANNER_OID, true, 20000, true);
clock.resetOverride(); clock.overrideDuration("P4D"); // second escalation is at P3D waitForTaskNextRun(TASK_TRIGGER_SCANNER_OID, true, 20000, true);