Skip to content

Commit

Permalink
Tests for reconcile affected objects.
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Feb 18, 2015
1 parent 5216c3e commit 435740a
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 28 deletions.
Expand Up @@ -259,6 +259,12 @@ public static void assertSuccess(String message, OperationResultType result) {
}
}

public static void assertInProgressOrSuccess(OperationResult result) {
if (!result.isInProgress()) {
assertSuccess("Operation "+result.getOperation()+" result", result);
}
}

public static void assertSuccess(OperationResult result) {
assertSuccess("Operation "+result.getOperation()+" result", result);
}
Expand Down
Expand Up @@ -18,6 +18,7 @@
import static org.testng.AssertJUnit.assertNotNull;
import static com.evolveum.midpoint.test.IntegrationTestTools.display;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;

import java.io.File;
import java.util.ArrayList;
Expand Down Expand Up @@ -1378,23 +1379,27 @@ public void test701JackModifyJudgeDeleteConstructionRecompute() throws Exception
assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

Task task = taskManager.createTaskInstance(TestRbac.class.getName() + "." + TEST_NAME);
task.setOwner(getUser(USER_ADMINISTRATOR_OID));
OperationResult result = task.getResult();

PrismObject<UserType> userBefore = getUser(USER_JACK_OID);
display("User jack before", userBefore);

modifyRoleDeleteInducement(ROLE_JUDGE_OID, 1111L);

// WHEN
TestUtil.displayWhen(TEST_NAME);
recomputeUser(USER_JACK_OID, task, result);
modifyRoleDeleteInducement(ROLE_JUDGE_OID, 1111L, true, task);

// THEN
TestUtil.displayThen(TEST_NAME);
result.computeStatus();
TestUtil.assertSuccess(result);
TestUtil.assertInProgressOrSuccess(result);

assertTrue("task is not persistent", task.isPersistent());

assertAssignedRole(USER_JACK_OID, ROLE_JUDGE_OID, task, result);

waitForTaskFinish(task.getOid(), true);

assertNoDummyAccount(ACCOUNT_JACK_DUMMY_USERNAME);
}

Expand All @@ -1405,24 +1410,27 @@ public void test702JackModifyJudgeAddInducementHonorabilityRecompute() throws Ex
assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

Task task = taskManager.createTaskInstance(TestRbac.class.getName() + "." + TEST_NAME);
task.setOwner(getUser(USER_ADMINISTRATOR_OID));
OperationResult result = task.getResult();

PrismObject<UserType> userBefore = getUser(USER_JACK_OID);
display("User jack before", userBefore);

modifyRoleAddInducementTarget(ROLE_JUDGE_OID, ROLE_HONORABILITY_OID);

// WHEN
TestUtil.displayWhen(TEST_NAME);
recomputeUser(USER_JACK_OID, task, result);
modifyRoleAddInducementTarget(ROLE_JUDGE_OID, ROLE_HONORABILITY_OID, true, task);

// THEN
TestUtil.displayThen(TEST_NAME);
result.computeStatus();
TestUtil.assertSuccess(result);

TestUtil.assertInProgressOrSuccess(result);

assertTrue("task is not persistent", task.isPersistent());

assertAssignedRole(USER_JACK_OID, ROLE_JUDGE_OID, task, result);


waitForTaskFinish(task.getOid(), true);

assertDefaultDummyAccount(ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true);
assertDefaultDummyAccountAttribute(ACCOUNT_JACK_DUMMY_USERNAME, "title", "Honorable");
assertDefaultDummyAccountAttribute(ACCOUNT_JACK_DUMMY_USERNAME, "weapon", "mouth", "pistol");
Expand Down Expand Up @@ -1484,7 +1492,7 @@ public void test709JackUnAssignRoleJudge() throws Exception {
TestUtil.displayThen(TEST_NAME);
result.computeStatus();
TestUtil.assertSuccess(result);

assertAssignedNoRole(USER_JACK_OID, task, result);
assertNoDummyAccount(ACCOUNT_JACK_DUMMY_USERNAME);
}
Expand All @@ -1496,6 +1504,7 @@ public void test710JackAssignRoleEmpty() throws Exception {
assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

Task task = taskManager.createTaskInstance(TestRbac.class.getName() + "." + TEST_NAME);
task.setOwner(getUser(USER_ADMINISTRATOR_OID));
OperationResult result = task.getResult();

PrismObject<UserType> userBefore = getUser(USER_JACK_OID);
Expand All @@ -1521,23 +1530,26 @@ public void test712JackModifyEmptyRoleAddInducementPirateRecompute() throws Exce
assumeAssignmentPolicy(AssignmentPolicyEnforcementType.FULL);

Task task = taskManager.createTaskInstance(TestRbac.class.getName() + "." + TEST_NAME);
task.setOwner(getUser(USER_ADMINISTRATOR_OID));
OperationResult result = task.getResult();

PrismObject<UserType> userBefore = getUser(USER_JACK_OID);
display("User jack before", userBefore);

modifyRoleAddInducementTarget(ROLE_EMPTY_OID, ROLE_PIRATE_OID);

// WHEN
TestUtil.displayWhen(TEST_NAME);
recomputeUser(USER_JACK_OID, task, result);
modifyRoleAddInducementTarget(ROLE_EMPTY_OID, ROLE_PIRATE_OID, true, task);

// THEN
TestUtil.displayThen(TEST_NAME);
result.computeStatus();
TestUtil.assertSuccess(result);

TestUtil.assertInProgressOrSuccess(result);

assertTrue("task is not persistent", task.isPersistent());

assertAssignedRole(USER_JACK_OID, ROLE_EMPTY_OID, task, result);

waitForTaskFinish(task.getOid(), true);

assertDefaultDummyAccount(ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true);
assertDefaultDummyAccountAttribute(ACCOUNT_JACK_DUMMY_USERNAME, "title", "Bloody Pirate");
Expand Down
Expand Up @@ -285,7 +285,7 @@ public void test110RecomputeSome() throws Exception {
TestUtil.assertSuccess(result);

// Now do something evil, remove "red" construction from judge role
modifyRoleDeleteInducement(ROLE_JUDGE_OID, 1111L);
modifyRoleDeleteInducement(ROLE_JUDGE_OID, 1111L, false, null);

displayRoles(task, result);

Expand Down
Expand Up @@ -24,6 +24,7 @@
import com.evolveum.midpoint.common.refinery.RefinedObjectClassDefinition;
import com.evolveum.midpoint.common.refinery.RefinedResourceSchema;
import com.evolveum.midpoint.model.api.ModelDiagnosticService;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.api.ModelInteractionService;
import com.evolveum.midpoint.model.api.ModelService;
import com.evolveum.midpoint.model.api.PolicyViolationException;
Expand Down Expand Up @@ -2599,8 +2600,10 @@ protected void modifyRoleAddConstruction(String roleOid, long inducementId, Stri
TestUtil.assertSuccess(result);
}

protected void modifyRoleAddInducementTarget(String roleOid, String targetOid) throws SchemaException, ObjectAlreadyExistsException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, PolicyViolationException, SecurityViolationException {
Task task = createTask(AbstractModelIntegrationTest.class.getName() + ".modifyRoleAddInducementTarget");
protected void modifyRoleAddInducementTarget(String roleOid, String targetOid, boolean reconcileAffected, Task task) throws SchemaException, ObjectAlreadyExistsException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, PolicyViolationException, SecurityViolationException {
if (task == null) {
task = createTask(AbstractModelIntegrationTest.class.getName() + ".modifyRoleAddInducementTarget");
}
OperationResult result = task.getResult();
AssignmentType inducement = new AssignmentType();
ObjectReferenceType targetRef = new ObjectReferenceType();
Expand All @@ -2609,9 +2612,15 @@ protected void modifyRoleAddInducementTarget(String roleOid, String targetOid) t
ObjectDelta<RoleType> roleDelta = ObjectDelta.createModificationAddContainer(RoleType.class, roleOid,
new ItemPath(new NameItemPathSegment(RoleType.F_INDUCEMENT)),
prismContext, inducement);
modelService.executeChanges(MiscSchemaUtil.createCollection(roleDelta), null, task, result);
ModelExecuteOptions options = new ModelExecuteOptions();
options.setReconcileAffected(reconcileAffected);
modelService.executeChanges(MiscSchemaUtil.createCollection(roleDelta), options, task, result);
result.computeStatus();
TestUtil.assertSuccess(result);
if (reconcileAffected) {
TestUtil.assertInProgressOrSuccess(result);
} else {
TestUtil.assertSuccess(result);
}
}

protected AssignmentType findInducementByTarget(String roleOid, String targetOid) throws SchemaException, ObjectAlreadyExistsException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, PolicyViolationException, SecurityViolationException {
Expand Down Expand Up @@ -2639,17 +2648,25 @@ protected void modifyRoleDeleteInducementTarget(String roleOid, String targetOid
TestUtil.assertSuccess(result);
}

protected void modifyRoleDeleteInducement(String roleOid, long inducementId) throws SchemaException, ObjectAlreadyExistsException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, PolicyViolationException, SecurityViolationException {
Task task = createTask(AbstractModelIntegrationTest.class.getName() + ".modifyRoleDeleteInducement");
protected void modifyRoleDeleteInducement(String roleOid, long inducementId, boolean reconcileAffected, Task task) throws SchemaException, ObjectAlreadyExistsException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, PolicyViolationException, SecurityViolationException {
if (task == null) {
task = createTask(AbstractModelIntegrationTest.class.getName() + ".modifyRoleDeleteInducement");
}
OperationResult result = task.getResult();

AssignmentType inducement = new AssignmentType();
inducement.setId(inducementId);
ObjectDelta<RoleType> roleDelta = ObjectDelta.createModificationDeleteContainer(RoleType.class, roleOid,
RoleType.F_INDUCEMENT, prismContext, inducement);
modelService.executeChanges(MiscSchemaUtil.createCollection(roleDelta), null, task, result);
ModelExecuteOptions options = new ModelExecuteOptions();
options.setReconcileAffected(reconcileAffected);
modelService.executeChanges(MiscSchemaUtil.createCollection(roleDelta), options, task, result);
result.computeStatus();
TestUtil.assertSuccess(result);
if (reconcileAffected) {
TestUtil.assertInProgressOrSuccess(result);
} else {
TestUtil.assertSuccess(result);
}
}

protected void modifyUserAddAccount(String userOid, File accountFile, Task task, OperationResult result) throws SchemaException, IOException, ObjectAlreadyExistsException, ObjectNotFoundException, ExpressionEvaluationException, CommunicationException, ConfigurationException, PolicyViolationException, SecurityViolationException {
Expand Down

0 comments on commit 435740a

Please sign in to comment.