From 55e1e299f8b3a780c0f0255ba1799a1ac5afe6d3 Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Thu, 3 Nov 2016 12:44:13 +0100 Subject: [PATCH] Fixing intests --- .../impl/lens/projector/FocusProcessor.java | 25 +++++++++++-------- .../midpoint/model/intest/TestActivation.java | 12 +++++---- .../intest/TestLoggingConfiguration.java | 2 +- .../intest/TestModelServiceContract.java | 4 +-- .../model/intest/TestMultiResource.java | 8 +++--- .../model/intest/sync/TestImportRecon.java | 2 +- 6 files changed, 30 insertions(+), 23 deletions(-) diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/FocusProcessor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/FocusProcessor.java index d30669afb05..3a34a9810a1 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/FocusProcessor.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/FocusProcessor.java @@ -630,6 +630,19 @@ private void recordEffectiveStatusDelta(LensFocusContext< throws SchemaException { PrismContainerDefinition activationDefinition = getActivationDefinition(); + // We always want explicit delta for effective status even if there is no real change + // we want to propagate enable/disable events to all the resources, even if we are enabling + // already enabled user (some resources may be disabled) + // This may produce duplicate delta, but that does not matter too much. The duplicate delta + // will be filtered out later. + PrismPropertyDefinition effectiveStatusDef = activationDefinition.findPropertyDefinition(ActivationType.F_EFFECTIVE_STATUS); + PropertyDelta effectiveStatusDelta + = effectiveStatusDef.createEmptyDelta(new ItemPath(UserType.F_ACTIVATION, ActivationType.F_EFFECTIVE_STATUS)); + effectiveStatusDelta.setValueToReplace(new PrismPropertyValue(effectiveStatusNew, OriginType.USER_POLICY, null)); + if (!focusContext.alreadyHasDelta(effectiveStatusDelta)){ + focusContext.swallowToProjectionWaveSecondaryDelta(effectiveStatusDelta); + } + // It is not enough to check alreadyHasDelta(). The change may happen in previous waves // and the secondary delta may no longer be here. When it comes to disableTimestamp we even // cannot rely on natural filtering of already executed deltas as the timestamp here may @@ -638,19 +651,11 @@ private void recordEffectiveStatusDelta(LensFocusContext< if (objectCurrent != null) { PrismProperty effectiveStatusPropCurrent = objectCurrent.findProperty(SchemaConstants.PATH_ACTIVATION_EFFECTIVE_STATUS); if (effectiveStatusPropCurrent != null && effectiveStatusNew.equals(effectiveStatusPropCurrent.getRealValue())) { - LOGGER.trace("Skipping setting of effective status and disableTimestamp because there was no change"); + LOGGER.trace("Skipping setting disableTimestamp because there was no change"); return; } } - - PrismPropertyDefinition effectiveStatusDef = activationDefinition.findPropertyDefinition(ActivationType.F_EFFECTIVE_STATUS); - PropertyDelta effectiveStatusDelta - = effectiveStatusDef.createEmptyDelta(new ItemPath(UserType.F_ACTIVATION, ActivationType.F_EFFECTIVE_STATUS)); - effectiveStatusDelta.setValueToReplace(new PrismPropertyValue(effectiveStatusNew, OriginType.USER_POLICY, null)); - if (!focusContext.alreadyHasDelta(effectiveStatusDelta)){ - focusContext.swallowToProjectionWaveSecondaryDelta(effectiveStatusDelta); - } - + PropertyDelta timestampDelta = LensUtil.createActivationTimestampDelta(effectiveStatusNew, now, activationDefinition, OriginType.USER_POLICY); if (!focusContext.alreadyHasDelta(timestampDelta)) { focusContext.swallowToProjectionWaveSecondaryDelta(timestampDelta); diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestActivation.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestActivation.java index cc4be884ff5..39b8ec92224 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestActivation.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestActivation.java @@ -256,7 +256,7 @@ public void test055ModifyUserJackEnable() throws Exception { assertAdministrativeStatusEnabled(userJack); assertValidity(userJack, null); assertEffectiveStatus(userJack, ActivationStatusType.ENABLED); - assertEnableTimestampFocus(userJack, start, end); + assertEnableTimestampFocus(userJack, null, start); TestUtil.assertModifyTimestamp(userJack, start, end); } @@ -658,7 +658,8 @@ public void test114ModifyUserJackEnable() throws Exception { assertAdministrativeStatusEnabled(userJack); assertDummyEnabled(ACCOUNT_JACK_DUMMY_USERNAME); - assertEnableTimestampFocus(userJack, startTime, endTime); + // No real change in effective status, therefore the enableTimestamp should be unchanged + assertEnableTimestampFocus(userJack, null, startTime); assertAccounts(USER_JACK_OID, 1); PrismObject account = getShadowModel(accountOid); @@ -708,7 +709,7 @@ public void test115ModifyUserJackAdministrativeStatusNull() throws Exception { } /** - * Modify both user and account activation. As password outbound mapping is weak the user should have its own state + * Modify both user and account activation. As outbound mapping is weak the user should have its own state * and account should have its own state. */ @Test @@ -740,7 +741,8 @@ public void test118ModifyJackActivationUserAndAccount() throws Exception { PrismObject userJack = getUser(USER_JACK_OID); display("User after change execution", userJack); assertUserJack(userJack, "Jack Sparrow"); - assertEnableTimestampFocus(userJack, startTime, endTime); + // No real change in effective status, therefore the enableTimestamp should be unchanged + assertEnableTimestampFocus(userJack, null, startTime); assertAdministrativeStatusEnabled(userJack); assertDummyDisabled("jack"); @@ -753,7 +755,7 @@ public void test118ModifyJackActivationUserAndAccount() throws Exception { } /** - * Add red dummy resource to the mix. This would be fun. + * Add red dummy resource to the mix. This will be fun. */ @Test public void test120ModifyUserJackAssignAccountDummyRed() throws Exception { diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestLoggingConfiguration.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestLoggingConfiguration.java index f3966ed6573..13993262118 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestLoggingConfiguration.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestLoggingConfiguration.java @@ -469,7 +469,7 @@ public void test101EnableBasicAudit() throws Exception { // THEN tailer.tail(); - tailer.assertAudit(3); + tailer.assertAudit(2); tailer.assertAuditRequest(); tailer.assertAuditExecution(); diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java index 9842fbc8a48..f5bf7ab5d2c 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestModelServiceContract.java @@ -2875,7 +2875,7 @@ public void test210AddUserMorganWithAssignment() throws Exception { // Check audit display("Audit", dummyAuditService); - dummyAuditService.assertRecords(3); + dummyAuditService.assertRecords(2); dummyAuditService.assertSimpleRecordSanity(); dummyAuditService.assertAnyRequestDeltas(); dummyAuditService.assertExecutionDeltas(3); @@ -3120,7 +3120,7 @@ public void test300AddUserJackWithAssignmentBlue() throws Exception { // Check audit display("Audit", dummyAuditService); - dummyAuditService.assertRecords(3); + dummyAuditService.assertRecords(2); dummyAuditService.assertSimpleRecordSanity(); dummyAuditService.assertAnyRequestDeltas(); dummyAuditService.assertExecutionDeltas(3); diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestMultiResource.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestMultiResource.java index 8a82a6394c9..a5bd55ea21d 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestMultiResource.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestMultiResource.java @@ -1773,13 +1773,13 @@ public void test403DavidAndGoliathDisableUser() throws Exception { // Check audit display("Audit", dummyAuditService); - dummyAuditService.assertRecords(5); // last one is duplicate + dummyAuditService.assertRecords(3); // last one is duplicate dummyAuditService.assertSimpleRecordSanity(); dummyAuditService.assertAnyRequestDeltas(); dummyAuditService.assertExecutionDeltas(0,2); dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, ShadowType.class); - dummyAuditService.assertExecutionDeltas(1,2); // user is again disabled here + dummyAuditService.assertExecutionDeltas(1,1); // user is again disabled here dummyAuditService.assertHasDelta(1,ChangeType.MODIFY, ShadowType.class); dummyAuditService.assertExecutionSuccess(); } @@ -1811,13 +1811,13 @@ public void test404DavidAndGoliathEnableUser() throws Exception { // Check audit display("Audit", dummyAuditService); - dummyAuditService.assertRecords(5); // last one is duplicate + dummyAuditService.assertRecords(3); // last one is duplicate dummyAuditService.assertSimpleRecordSanity(); dummyAuditService.assertAnyRequestDeltas(); dummyAuditService.assertExecutionDeltas(0,2); dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, UserType.class); dummyAuditService.assertHasDelta(0,ChangeType.MODIFY, ShadowType.class); - dummyAuditService.assertExecutionDeltas(1,2); // user is again disabled here + dummyAuditService.assertExecutionDeltas(1,1); // user is again disabled here dummyAuditService.assertHasDelta(1,ChangeType.MODIFY, ShadowType.class); dummyAuditService.assertExecutionSuccess(); } diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/sync/TestImportRecon.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/sync/TestImportRecon.java index 7116d0d28bf..aa7f0c6da85 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/sync/TestImportRecon.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/sync/TestImportRecon.java @@ -1252,7 +1252,7 @@ public void test230ReconcileDummyRename() throws Exception { addReconScripts(scripts, ACCOUNT_HTM_NAME, ACCOUNT_HTM_FULL_NAME, true); IntegrationTestTools.assertScripts(dummyResource.getScriptHistory(), scripts.toArray(new ProvisioningScriptSpec[0])); - assertReconAuditModifications(3, TASK_RECONCILE_DUMMY_OID); // the second modification is unlink + assertReconAuditModifications(2, TASK_RECONCILE_DUMMY_OID); // the second modification is unlink assertShadows(14);