Skip to content

Commit

Permalink
Continuing with TestDelivery.
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Oct 5, 2017
1 parent c0880b0 commit 8861ff8
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 23 deletions.
Expand Up @@ -93,4 +93,5 @@ public class ExpressionConstants {
public static final QName VAR_CHANNEL = new QName(SchemaConstants.NS_C, "channel");
public static final QName VAR_WORKFLOW_CONTEXT = new QName(SchemaConstants.NS_C, "workflowContext");
public static final QName VAR_TASK = new QName(SchemaConstants.NS_C, "task");
public static final QName VAR_RULE_EVALUATION_CONTEXT = new QName(SchemaConstants.NS_C, "ruleEvaluationContext");
}
Expand Up @@ -45,6 +45,7 @@
import java.util.List;
import java.util.stream.Collectors;

import static com.evolveum.midpoint.schema.constants.ExpressionConstants.VAR_RULE_EVALUATION_CONTEXT;
import static com.evolveum.midpoint.util.MiscUtil.getSingleValue;

/**
Expand Down Expand Up @@ -72,6 +73,7 @@ public <F extends FocusType> ExpressionVariables createExpressionVariables(Polic
var.addVariableDefinition(ExpressionConstants.VAR_EVALUATED_ASSIGNMENT, null);
var.addVariableDefinition(ExpressionConstants.VAR_ASSIGNMENT, null);
}
var.addVariableDefinition(VAR_RULE_EVALUATION_CONTEXT, rctx);
return var;
}

Expand Down
Expand Up @@ -53,6 +53,7 @@
import java.util.*;

import static com.evolveum.midpoint.schema.constants.ExpressionConstants.VAR_OBJECT;
import static com.evolveum.midpoint.schema.constants.ExpressionConstants.VAR_RULE_EVALUATION_CONTEXT;
import static com.evolveum.midpoint.xml.ns._public.common.common_3.PolicyConstraintKindType.ASSIGNMENT_STATE;
import static com.evolveum.midpoint.xml.ns._public.common.common_3.PolicyConstraintKindType.OBJECT_STATE;
import static java.util.Collections.emptyList;
Expand Down Expand Up @@ -121,7 +122,7 @@ private <F extends FocusType> EvaluatedPolicyRuleTrigger<?> evaluateForObject(St
if (constraint.getExecuteScript() != null) {
Map<String, Object> variables = new HashMap<>();
variables.put(VAR_OBJECT.getLocalPart(), object);
variables.put("ruleEvaluationContext", ctx);
variables.put(VAR_RULE_EVALUATION_CONTEXT.getLocalPart(), ctx);
ExecutionContext resultingContext;
try {
resultingContext = scriptingExpressionEvaluator.evaluateExpressionPrivileged(constraint.getExecuteScript(), variables, ctx.task, result);
Expand Down
Expand Up @@ -138,7 +138,7 @@ public class TestDelivery extends AbstractStoryTest {

@BeforeSuite
public void setSchema() throws Exception {
System.out.println("Setting extension schema dir");
System.out.println("Setting extension schema dir to " + EXTENSION_SCHEMA_DIR);
ConfigurablePrismContextFactory.setExtensionDirOverride(EXTENSION_SCHEMA_DIR);
}

Expand Down Expand Up @@ -199,8 +199,8 @@ protected PrismObject<UserType> getDefaultActor() {
}

@Test
public void test100Assign_IT_2_fail() throws Exception {
final String TEST_NAME = "test100Assign_IT_2_fail";
public void test100Assign_IT_2_failure() throws Exception {
final String TEST_NAME = "test100Assign_IT_2_failure";
TestUtil.displayTestTitle(TEST_NAME);

Task task = createTask(TestDelivery.class.getName() + "." + TEST_NAME);
Expand All @@ -214,6 +214,21 @@ public void test100Assign_IT_2_fail() throws Exception {
}
}

@Test
public void test110Assign_IT_2_success() throws Exception {
final String TEST_NAME = "test110Assign_IT_2_success";
TestUtil.displayTestTitle(TEST_NAME);

Task task = createTask(TestDelivery.class.getName() + "." + TEST_NAME);
OperationResult result = task.getResult();

assignRole(userBarkeeperOid, roleIt2Oid, task, result); // hard constraint
result.computeStatus();
assertSuccess(result);

assertAssignedRole(userBarkeeperOid, roleIt2Oid, task, result);
}

// @Test
// public void test000Sanity() throws Exception {
// final String TEST_NAME = "test000Sanity";
Expand Down
29 changes: 10 additions & 19 deletions testing/story/src/test/resources/delivery/rules/k10.xml
Expand Up @@ -24,30 +24,21 @@
<policyRule>
<policyConstraints>
<objectState>
<filter>
<q:type>
<q:type>UserType</q:type>
<q:filter>
<q:all/>
</q:filter>
</q:type>
</filter>
<expression>
<script>
<code>
log.info('Evaluating rule on {}', object)
this.binding.variables.each {k,v -> log.info('{} = {}', k, v)}
!object.employeeType.contains('10')
</code>
</script>
</expression>
</objectState>
<objectState>
<filter>
<q:not>
<q:equal>
<q:path>employeeType</q:path>
<q:value>10</q:value>
</q:equal>
</q:not>
</filter>
</objectState>
<assignment/>
</policyConstraints>
<policyActions>
<enforcement/>
</policyActions>
<evaluationTarget>assignment</evaluationTarget>
</policyRule>
<order>2</order>
</inducement>
Expand Down
Expand Up @@ -42,6 +42,7 @@
<givenName>Barkeeper</givenName>
<familyName>Scumm</familyName>
<emailAddress>barkeeper@evolveum.com</emailAddress>
<employeeType>10</employeeType>
<credentials>
<password>
<value>a123456</value>
Expand Down

0 comments on commit 8861ff8

Please sign in to comment.