From 31bd11c3c138f1f25a01a6bced342777d30fc1a1 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Wed, 15 Mar 2017 10:46:01 +0100 Subject: [PATCH] Added test for MID-3799:1 to strings story (also updated configuration files accordingly). --- .../test/AbstractModelIntegrationTest.java | 13 ++++++ .../midpoint/testing/story/TestStrings.java | 40 +++++++++++++++++++ .../resources/common/system-configuration.xml | 4 ++ .../strings/roles/global-policy-rules.xml | 16 ++++++-- ...metarole-approval-role-approvers-first.xml | 11 ++--- .../metarole-approval-role-approvers-form.xml | 5 ++- .../roles/metarole-approval-security.xml | 4 +- 7 files changed, 82 insertions(+), 11 deletions(-) diff --git a/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java b/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java index e4286d77a7f..7d6ac6cfba6 100644 --- a/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java +++ b/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java @@ -1518,6 +1518,19 @@ protected AssignmentType getUserAssignment(String userOid, String roleOid) throw return null; } + protected AssignmentType getUserAssignment(String userOid, String roleOid, QName relation) + throws ObjectNotFoundException, SchemaException, SecurityViolationException, CommunicationException, ConfigurationException { + PrismObject user = getUser(userOid); + List assignments = user.asObjectable().getAssignment(); + for (AssignmentType assignment: assignments) { + ObjectReferenceType targetRef = assignment.getTargetRef(); + if (targetRef != null && roleOid.equals(targetRef.getOid()) && QNameUtil.match(relation, targetRef.getRelation())) { + return assignment; + } + } + return null; + } + protected void assertNoAssignments(PrismObject user) { MidPointAsserts.assertNoAssignments(user); } diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestStrings.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestStrings.java index f633a519d77..57ee40b02e9 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestStrings.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestStrings.java @@ -36,6 +36,7 @@ import com.evolveum.midpoint.schema.ObjectDeltaOperation; import com.evolveum.midpoint.schema.SearchResultList; import com.evolveum.midpoint.schema.constants.ObjectTypes; +import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.result.OperationResult; import com.evolveum.midpoint.schema.util.ObjectTypeUtil; import com.evolveum.midpoint.schema.util.WfContextUtil; @@ -1090,6 +1091,45 @@ public void test222FormApproveByCheese() throws Exception { // record #3: finishing process execution } + @Test + public void test250ApproverAssignment() throws Exception { + final String TEST_NAME = "test250ApproverAssignment"; + TestUtil.displayTestTile(this, TEST_NAME); + Task task = createTask(TestStrings.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + + dummyAuditService.clear(); + dummyTransport.clearMessages(); + + // WHEN + assignRole(userBobOid, roleATest1Oid, SchemaConstants.ORG_APPROVER, task, task.getResult()); + + // THEN + assertNull("bob has assigned a-test-1 as an approver", getUserAssignment(userBobOid, roleATest1Oid, SchemaConstants.ORG_APPROVER)); + + List workItems = getWorkItems(task, result); + displayWorkItems("Work item after start", workItems); + PrismObject wfTask = getTask(workItems.get(0).getTaskRef().getOid()); + display("wfTask", wfTask); + + ItemApprovalProcessStateType info = WfContextUtil.getItemApprovalProcessInfo(wfTask.asObjectable().getWorkflowContext()); + ApprovalSchemaType schema = info.getApprovalSchema(); + assertEquals("Wrong # of approval levels", 3, schema.getLevel().size()); + assertApprovalLevel(schema, 1, "Line managers", "P5D", 2); + assertApprovalLevel(schema, 2, "Security", "P7D", 1); + assertApprovalLevel(schema, 3, "Role approvers (all)", "P5D", 2); + assertStage(wfTask, 1, 3, "Line managers", null); + + List lifecycleMessages = dummyTransport.getMessages(DUMMY_WORK_ITEM_LIFECYCLE); + List allocationMessages = dummyTransport.getMessages(DUMMY_WORK_ITEM_ALLOCATION); + List processMessages = dummyTransport.getMessages(DUMMY_PROCESS); + display("work items lifecycle notifications", lifecycleMessages); + display("work items allocation notifications", allocationMessages); + display("processes notifications", processMessages); + + display("audit", dummyAuditService); + } + //endregion diff --git a/testing/story/src/test/resources/common/system-configuration.xml b/testing/story/src/test/resources/common/system-configuration.xml index 38a601dbc0d..352687e6d80 100644 --- a/testing/story/src/test/resources/common/system-configuration.xml +++ b/testing/story/src/test/resources/common/system-configuration.xml @@ -59,4 +59,8 @@ target/mail-notifications.log + + never + never + diff --git a/testing/story/src/test/resources/strings/roles/global-policy-rules.xml b/testing/story/src/test/resources/strings/roles/global-policy-rules.xml index c181e9a8e41..db30348884f 100644 --- a/testing/story/src/test/resources/strings/roles/global-policy-rules.xml +++ b/testing/story/src/test/resources/strings/roles/global-policy-rules.xml @@ -63,7 +63,9 @@ role-approvers-all-approval Approval of role assignment by all the role approvers - + + q:any + @@ -100,7 +102,9 @@ line-manager-approval Approval of role assignment by the line manager(s) - + + q:any + @@ -142,7 +146,9 @@ escalate-then-reject-for-levels-20-30 Automatic escalation followed by rejection for levels 10 and 40 (LM, role approvers) - + + http://midpoint.evolveum.com/xml/ns/public/model/policy/situation#assigned + @@ -198,7 +204,9 @@ auto-reject-for-levels-20-30 Automatic rejection for levels 20 and 30 (security, SoD) - + + http://midpoint.evolveum.com/xml/ns/public/model/policy/situation#assigned + diff --git a/testing/story/src/test/resources/strings/roles/metarole-approval-role-approvers-first.xml b/testing/story/src/test/resources/strings/roles/metarole-approval-role-approvers-first.xml index cc548ed3ab4..c8ebcb8b873 100644 --- a/testing/story/src/test/resources/strings/roles/metarole-approval-role-approvers-first.xml +++ b/testing/story/src/test/resources/strings/roles/metarole-approval-role-approvers-first.xml @@ -14,14 +14,18 @@ ~ limitations under the License. --> - + metarole-approval-role-approvers-first Requests to assign role holding this metarole will be approved by the role approver(s) using "first decides" method Metarole: approval by the role approver(s) - first decides - + + q:any + @@ -45,7 +49,4 @@ - - - \ No newline at end of file diff --git a/testing/story/src/test/resources/strings/roles/metarole-approval-role-approvers-form.xml b/testing/story/src/test/resources/strings/roles/metarole-approval-role-approvers-form.xml index a9e6dc96ce8..08df328f229 100644 --- a/testing/story/src/test/resources/strings/roles/metarole-approval-role-approvers-form.xml +++ b/testing/story/src/test/resources/strings/roles/metarole-approval-role-approvers-form.xml @@ -14,7 +14,9 @@ ~ limitations under the License. --> - + metarole-approval-role-approvers-form Always use along with approvers-all or approvers-first metarole! Metarole: approval by the role approver(s) with custom form @@ -23,6 +25,7 @@ add + q:any diff --git a/testing/story/src/test/resources/strings/roles/metarole-approval-security.xml b/testing/story/src/test/resources/strings/roles/metarole-approval-security.xml index a6a5c450d16..9656c778485 100644 --- a/testing/story/src/test/resources/strings/roles/metarole-approval-security.xml +++ b/testing/story/src/test/resources/strings/roles/metarole-approval-security.xml @@ -23,7 +23,9 @@ - + + q:any +