Skip to content

Commit

Permalink
Tests for approving assignment modifications.
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Oct 10, 2017
1 parent 41b6fd4 commit 840893b
Show file tree
Hide file tree
Showing 7 changed files with 828 additions and 26 deletions.
Expand Up @@ -15,6 +15,7 @@
*/
package com.evolveum.midpoint.model.test;

import static java.util.Collections.singleton;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.AssertJUnit.assertNotNull;
Expand Down Expand Up @@ -44,6 +45,7 @@
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.prism.*;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.mutable.MutableInt;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -92,20 +94,6 @@
import com.evolveum.midpoint.model.common.stringpolicy.ValuePolicyProcessor;
import com.evolveum.midpoint.notifications.api.NotificationManager;
import com.evolveum.midpoint.notifications.api.transports.Message;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.Item;
import com.evolveum.midpoint.prism.ItemDefinition;
import com.evolveum.midpoint.prism.PrismContainer;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.PrismReference;
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.PrismValue;
import com.evolveum.midpoint.prism.crypto.EncryptionException;
import com.evolveum.midpoint.prism.delta.ChangeType;
import com.evolveum.midpoint.prism.delta.ContainerDelta;
Expand Down Expand Up @@ -925,6 +913,17 @@ protected void unassignRole(String userOid, String roleOid) throws ObjectNotFoun
TestUtil.assertSuccess(result);
}

protected void unassignRoleByAssignmentValue(PrismObject<? extends FocusType> focus, String roleOid, Task task, OperationResult result) throws ObjectNotFoundException,
SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, ObjectAlreadyExistsException,
PolicyViolationException, SecurityViolationException {
AssignmentType assignment = findAssignmentByTargetRequired(focus, roleOid);
ObjectDelta<? extends FocusType> delta = DeltaBuilder.deltaFor(focus.getCompileTimeClass(), prismContext)
.item(FocusType.F_ASSIGNMENT)
.delete(assignment.clone())
.asObjectDeltaCast(focus.getOid());
modelService.executeChanges(singleton(delta), null, task, result);
}

protected void unassignRole(String userOid, String roleOid, Task task, OperationResult result) throws ObjectNotFoundException,
SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, ObjectAlreadyExistsException,
PolicyViolationException, SecurityViolationException {
Expand Down Expand Up @@ -2920,15 +2919,15 @@ protected void restartTask(String taskOid) throws CommonException {
taskManager.resumeTask(task, result);
} else if (task.getExecutionStatus() == TaskExecutionStatus.CLOSED) {
LOGGER.debug("Task {} is closed, scheduling it to run now", task);
taskManager.scheduleTasksNow(Collections.singleton(taskOid), result);
taskManager.scheduleTasksNow(singleton(taskOid), result);
} else if (task.getExecutionStatus() == TaskExecutionStatus.RUNNABLE) {
if (taskManager.getLocallyRunningTaskByIdentifier(task.getTaskIdentifier()) != null) {
// Task is really executing. Let's wait until it finishes; hopefully it won't start again (TODO)
LOGGER.debug("Task {} is running, waiting while it finishes before restarting", task);
waitForTaskFinish(taskOid, false);
}
LOGGER.debug("Task {} is finished, scheduling it to run now", task);
taskManager.scheduleTasksNow(Collections.singleton(taskOid), result);
taskManager.scheduleTasksNow(singleton(taskOid), result);
} else {
throw new IllegalStateException("Task " + task + " cannot be restarted, because its state is: " + task.getExecutionStatus());
}
Expand Down Expand Up @@ -4394,7 +4393,7 @@ protected void resetTriggerTask(String taskOid, File taskFile, OperationResult r
.item(TaskType.F_SCHEDULE).replace()
.asItemDeltas(),
result);
taskManager.resumeTasks(Collections.singleton(taskOid), result);
taskManager.resumeTasks(singleton(taskOid), result);
}

protected void repoAddObjects(List<ObjectType> objects, OperationResult result)
Expand Down
Expand Up @@ -239,6 +239,11 @@ public void initSystem(Task initTask, OperationResult initResult) throws Excepti
userTemplateAssigningRole1aOidAfter = repoAddObjectFromFile(USER_TEMPLATE_ASSIGNING_ROLE_1A_AFTER, initResult).getOid();
}

@Override
protected PrismObject<UserType> getDefaultActor() {
return userAdministrator;
}

protected void updateSystemConfiguration(SystemConfigurationType systemConfiguration) {
// nothing to do by default
}
Expand Down Expand Up @@ -863,21 +868,22 @@ protected String getObjectOid() {
protected List<ExpectedWorkItem> getExpectedWorkItems() { return null; }

protected void assertDeltaExecuted(int number, boolean yes, Task rootTask, OperationResult result) throws Exception { }
// mutually exclusive with getApprovalSequence
protected Boolean decideOnApproval(String executionId, org.activiti.engine.task.Task task) throws Exception { return true; }

protected void sortSubtasks(List<Task> subtasks) {
Collections.sort(subtasks, Comparator.comparing(this::getCompareKey));
private void sortSubtasks(List<Task> subtasks) {
subtasks.sort(Comparator.comparing(this::getCompareKey));
}

protected void sortWorkItems(List<WorkItemType> workItems) {
Collections.sort(workItems, Comparator.comparing(this::getCompareKey));
private void sortWorkItems(List<WorkItemType> workItems) {
workItems.sort(Comparator.comparing(this::getCompareKey));
}

protected String getCompareKey(Task task) {
private String getCompareKey(Task task) {
return task.getTaskPrismObject().asObjectable().getWorkflowContext().getTargetRef().getOid();
}

protected String getCompareKey(WorkItemType workItem) {
private String getCompareKey(WorkItemType workItem) {
return workItem.getOriginalAssigneeRef().getOid();
}

Expand Down

0 comments on commit 840893b

Please sign in to comment.