public void override(XMLGregorianCalendar overrideTimestamp) { override(XmlTypeConverter.toMillis(overrideTimestamp)); }
protected Clock createClock(XMLGregorianCalendar date) { Clock clock = new Clock(); clock.override(date); return clock; }
@Test public void test315HermanAssignJudgeBecomesInValid() throws Exception { final String TEST_NAME = "test315HermanAssignJudgeBecomesInValid"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); XMLGregorianCalendar start = (XMLGregorianCalendar) judgeAssignmentValidTo.clone(); start.add(XmlTypeConverter.createDuration(1*60*1000)); clock.override(start); display("Start", start); // WHEN // just wait waitForValidityNextRunAssertSuccess(); assertRoleJudgeInValid(TEST_NAME, task, result); }
/** * Move time a month ahead. The account that was disabled in a previous test should be * deleted now. */ @Test public void test215JackDummyAccountDeleteAfterMonth() throws Exception { final String TEST_NAME = "test215JackDummyAccountDeleteAfterMonth"; displayTestTitle(TEST_NAME); // GIVEN Task task = taskManager.createTaskInstance(TestMapping.class.getName() + "." + TEST_NAME); OperationResult result = task.getResult(); XMLGregorianCalendar time = clock.currentTimeXMLGregorianCalendar(); // A month and a day, to make sure we move past the trigger time.add(XmlTypeConverter.createDuration(true, 0, 1, 1, 0, 0, 0)); // WHEN TestUtil.displayWhen(TEST_NAME); clock.override(time); waitForTaskNextRunAssertSuccess(TASK_TRIGGER_SCANNER_OID, true); // THEN TestUtil.displayThen(TEST_NAME); assertNoDummyAccount(RESOURCE_DUMMY_RED_NAME, ACCOUNT_JACK_DUMMY_USERNAME); }
@Test public void test310HermanAssignJudgeBecomesValid() throws Exception { final String TEST_NAME = "test310HermanAssignJudgeBecomesValid"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); PrismObject<UserType> user = getUser(USER_HERMAN_OID); display("User before", user); XMLGregorianCalendar start = (XMLGregorianCalendar) judgeAssignmentValidFrom.clone(); start.add(XmlTypeConverter.createDuration(1*60*1000)); clock.override(start); display("Start", start); // WHEN // just wait waitForValidityNextRunAssertSuccess(); assertRoleJudgeValid(TEST_NAME, task, result); }
clock.override(crrentNow);
clock.override(crrentNow);
@Test public void test232Drake40DaysAfterValidTo() throws Exception { final String TEST_NAME = "test232Drake40DaysAfterValidTo"; displayTestTitle(TEST_NAME); XMLGregorianCalendar start = (XMLGregorianCalendar) drakeValidTo.clone(); start.add(XmlTypeConverter.createDuration(true, 0, 0, 40, 0, 0, 0)); clock.override(start); display("Start", start); // WHEN // just wait waitForValidityNextRunAssertSuccess(); waitForTaskNextRunAssertSuccess(TASK_TRIGGER_SCANNER_OID, true); // THEN PrismObject<UserType> userDrakeAfter = getUser(USER_DRAKE_OID); display("Drake after", userDrakeAfter); assertEffectiveActivation(userDrakeAfter, ActivationStatusType.DISABLED); assertLinks(userDrakeAfter, 0); assertNoDummyAccount(RESOURCE_DUMMY_RED_NAME, "drake"); }
@Test public void test224Drake1DaysAfterValidFrom() throws Exception { final String TEST_NAME = "test224Drake1DaysAfterValidFrom"; displayTestTitle(TEST_NAME); XMLGregorianCalendar start = (XMLGregorianCalendar) drakeValidFrom.clone(); start.add(XmlTypeConverter.createDuration(true, 0, 0, 1, 0, 0, 0)); clock.override(start); display("Start", start); // WHEN // just wait waitForValidityNextRunAssertSuccess(); waitForTaskNextRunAssertSuccess(TASK_TRIGGER_SCANNER_OID, true); // THEN PrismObject<UserType> userDrakeAfter = getUser(USER_DRAKE_OID); display("Drake after", userDrakeAfter); assertEffectiveActivation(userDrakeAfter, ActivationStatusType.ENABLED); String accountRedOid = getLinkRefOid(userDrakeAfter, RESOURCE_DUMMY_RED_OID); PrismObject<ShadowType> accountRed = getShadowModel(accountRedOid); display("Drake account RED after", accountRed); assertDummyAccount(RESOURCE_DUMMY_RED_NAME, "drake", "Francis Drake", true); }
@Test public void test226Drake1DayBeforeValidTo() throws Exception { final String TEST_NAME = "test226Drake1DayBeforeValidTo"; displayTestTitle(TEST_NAME); XMLGregorianCalendar start = (XMLGregorianCalendar) drakeValidTo.clone(); start.add(XmlTypeConverter.createDuration(false, 0, 0, 1, 0, 0, 0)); clock.override(start); display("Start", start); // WHEN // just wait waitForValidityNextRunAssertSuccess(); waitForTaskNextRunAssertSuccess(TASK_TRIGGER_SCANNER_OID, true); // THEN PrismObject<UserType> userDrakeAfter = getUser(USER_DRAKE_OID); display("Drake after", userDrakeAfter); assertEffectiveActivation(userDrakeAfter, ActivationStatusType.ENABLED); String accountRedOid = getLinkRefOid(userDrakeAfter, RESOURCE_DUMMY_RED_OID); PrismObject<ShadowType> accountRed = getShadowModel(accountRedOid); display("Drake account RED after", accountRed); assertDummyAccount(RESOURCE_DUMMY_RED_NAME, "drake", "Francis Drake", true); }
/** * Move the time to the future. See if the time-based mapping in user template is properly recomputed. */ @Test public void test800Kaboom() throws Exception { final String TEST_NAME = "test800Kaboom"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); assumeAssignmentPolicy(AssignmentPolicyEnforcementType.RELATIVE); importObjectFromFile(TASK_TRIGGER_SCANNER_FILE); waitForTaskStart(TASK_TRIGGER_SCANNER_OID, false); XMLGregorianCalendar now = clock.currentTimeXMLGregorianCalendar(); now.add(XmlTypeConverter.createDuration("P1M1D")); clock.override(now); // WHEN waitForTaskNextRunAssertSuccess(TASK_TRIGGER_SCANNER_OID, true); // THEN PrismObject<UserType> userJack = modelService.getObject(UserType.class, USER_JACK_OID, null, task, result); PrismAsserts.assertPropertyValue(userJack, UserType.F_ADDITIONAL_NAME, PrismTestUtil.createPolyString("Kaboom!")); assertNoTrigger(userJack); }
@Test public void test222Drake4DaysBeforeValidFrom() throws Exception { final String TEST_NAME = "test222Drake4DaysBeforeValidFrom"; displayTestTitle(TEST_NAME); XMLGregorianCalendar start = (XMLGregorianCalendar) drakeValidFrom.clone(); start.add(XmlTypeConverter.createDuration(false, 0, 0, 4, 0, 0, 0)); clock.override(start); display("Start", start); // WHEN // just wait waitForValidityNextRunAssertSuccess(); waitForTaskNextRunAssertSuccess(TASK_TRIGGER_SCANNER_OID, true); // THEN // Make sure that it is effectivelly disabled PrismObject<UserType> userDrakeAfter = getUser(USER_DRAKE_OID); display("Drake after", userDrakeAfter); assertEffectiveActivation(userDrakeAfter, ActivationStatusType.DISABLED); String accountRedOid = getLinkRefOid(userDrakeAfter, RESOURCE_DUMMY_RED_OID); PrismObject<ShadowType> accountRed = getShadowModel(accountRedOid); display("Drake account RED after", accountRed); assertDummyAccount(RESOURCE_DUMMY_RED_NAME, "drake", "Francis Drake", false); }
@Test public void test228Drake1DayAfterValidTo() throws Exception { final String TEST_NAME = "test228Drake1DayAfterValidTo"; displayTestTitle(TEST_NAME); XMLGregorianCalendar start = (XMLGregorianCalendar) drakeValidTo.clone(); start.add(XmlTypeConverter.createDuration(true, 0, 0, 1, 0, 0, 0)); clock.override(start); display("Start", start); // WHEN // just wait waitForValidityNextRunAssertSuccess(); waitForTaskNextRunAssertSuccess(TASK_TRIGGER_SCANNER_OID, true); // THEN PrismObject<UserType> userDrakeAfter = getUser(USER_DRAKE_OID); display("Drake after", userDrakeAfter); assertEffectiveActivation(userDrakeAfter, ActivationStatusType.DISABLED); String accountRedOid = getLinkRefOid(userDrakeAfter, RESOURCE_DUMMY_RED_OID); PrismObject<ShadowType> accountRed = getShadowModel(accountRedOid); display("Drake account RED after", accountRed); assertDisableReasonShadow(accountRed, SchemaConstants.MODEL_DISABLE_REASON_MAPPED); assertDummyAccount(RESOURCE_DUMMY_RED_NAME, "drake", "Francis Drake", false); }
@Test public void test230Drake20DaysAfterValidTo() throws Exception { final String TEST_NAME = "test230Drake20DaysAfterValidTo"; displayTestTitle(TEST_NAME); XMLGregorianCalendar start = (XMLGregorianCalendar) drakeValidTo.clone(); start.add(XmlTypeConverter.createDuration(true, 0, 0, 20, 0, 0, 0)); clock.override(start); display("Start", start); // WHEN // just wait waitForValidityNextRunAssertSuccess(); waitForTaskNextRunAssertSuccess(TASK_TRIGGER_SCANNER_OID, true); // THEN PrismObject<UserType> userDrakeAfter = getUser(USER_DRAKE_OID); display("Drake after", userDrakeAfter); assertEffectiveActivation(userDrakeAfter, ActivationStatusType.DISABLED); String accountRedOid = getLinkRefOid(userDrakeAfter, RESOURCE_DUMMY_RED_OID); PrismObject<ShadowType> accountRed = getShadowModel(accountRedOid); display("Drake account RED after", accountRed); assertDisableReasonShadow(accountRed, SchemaConstants.MODEL_DISABLE_REASON_MAPPED); assertDummyAccount(RESOURCE_DUMMY_RED_NAME, "drake", "Francis Drake", false); }
@Test public void test190HermanGoesInvalid() throws Exception { final String TEST_NAME = "test190HermanGoesInvalid"; displayTestTitle(TEST_NAME); // GIVEN Task task = createTask(TEST_NAME); OperationResult result = task.getResult(); XMLGregorianCalendar startCal = clock.currentTimeXMLGregorianCalendar(); PrismObject<UserType> userHermanBefore = getUser(USER_HERMAN_OID); XMLGregorianCalendar validTo = userHermanBefore.asObjectable().getActivation().getValidTo(); assertEffectiveActivation(userHermanBefore, ActivationStatusType.ENABLED); assertValidityStatus(userHermanBefore, TimeIntervalStatusType.IN); // Let's move the clock tiny bit after herman's validTo validTo.add(XmlTypeConverter.createDuration(100)); clock.override(validTo); /// WHEN TestUtil.displayWhen(TEST_NAME); waitForValidityNextRunAssertSuccess(); // THEN TestUtil.displayThen(TEST_NAME); // THEN XMLGregorianCalendar endCal = clock.currentTimeXMLGregorianCalendar(); PrismObject<UserType> userHermanAfter = getUser(USER_HERMAN_OID); assertEffectiveActivation(userHermanAfter, ActivationStatusType.DISABLED); assertValidityStatus(userHermanAfter, TimeIntervalStatusType.AFTER); assertLastScanTimestamp(TASK_VALIDITY_SCANNER_OID, startCal, endCal); }
@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); }