diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/CreateRulesTests.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/CreateRulesTests.java index 170819ed18..89690ce5ac 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/CreateRulesTests.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/CreateRulesTests.java @@ -363,25 +363,13 @@ public class CreateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void createRuleWithActions() { - final Map copyParams = - Map.of("destination-folder", "dummy-folder-node", "deep-copy", true); - final RestActionBodyExecTemplateModel copyAction = createCustomActionModel("copy", copyParams); - final Map checkOutParams = - Map.of("destination-folder", "dummy-folder-node", "assoc-name", "cm:checkout", "assoc-type", - "cm:contains"); - final RestActionBodyExecTemplateModel checkOutAction = createCustomActionModel("check-out", checkOutParams); - final Map scriptParams = Map.of("script-ref", "dummy-script-node-id"); - final RestActionBodyExecTemplateModel scriptAction = createCustomActionModel("script", scriptParams); - final RestRuleModel ruleModel = createRuleModelWithDefaultValues(); - ruleModel.setActions(Arrays.asList(copyAction, checkOutAction, scriptAction)); - final UserModel admin = dataUser.getAdminUser(); final RestRuleModel rule = restClient.authenticateUser(admin).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() - .createSingleRule(ruleModel); + .createSingleRule(createVariousActions()); - final RestRuleModel expectedRuleModel = createRuleModelWithDefaultValues(); - expectedRuleModel.setActions(Arrays.asList(copyAction, checkOutAction, scriptAction)); + RestRuleModel expectedRuleModel = createRuleModelWithDefaultValues(); + expectedRuleModel.setActions(createVariousActions().getActions()); expectedRuleModel.setTriggers(List.of("inbound")); restClient.assertStatusCodeIs(CREATED); diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetRulesTests.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetRulesTests.java index cd036b5cb9..caa93a3fea 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetRulesTests.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetRulesTests.java @@ -63,6 +63,8 @@ public class GetRulesTests extends RestTest private RestRuleModel createdRuleA; private static final String IGNORE_ID = "id"; private static final String IGNORE_IS_SHARED = "isShared"; + private static final String ACTIONS = "actions"; + private static final String CONDITIONS = "conditions"; @BeforeClass(alwaysRun = true) public void dataPreparation() @@ -305,4 +307,56 @@ public class GetRulesTests extends RestTest restClient.assertStatusCodeIs(OK); rules.assertThat().entriesListContains("name", "Private site rule"); } + + /** + * Check we can GET Rule's actions. + */ + @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) + public void getRuleActions() + { + STEP("Create a rule with a few actions"); + FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder(); + final RestRuleModel rule = restClient.authenticateUser(user).withCoreAPI().usingNode(folder).usingDefaultRuleSet() + .createSingleRule(createVariousActions()); + + STEP("Retrieve the created rule via the GET endpoint"); + final RestRuleModel getRuleBody = restClient.authenticateUser(user).withCoreAPI().usingNode(folder).usingDefaultRuleSet().getSingleRule(rule.getId()); + + STEP("Assert that actions are returned as expected from the GET endpoint"); + restClient.assertStatusCodeIs(OK); + getRuleBody.assertThat().field(ACTIONS).contains("actionDefinitionId=copy") + .assertThat().field(ACTIONS).contains("destination-folder=dummy-folder-node") + .assertThat().field(ACTIONS).contains("deep-copy=true") + .assertThat().field(ACTIONS).contains("actionDefinitionId=check-out") + .assertThat().field(ACTIONS).contains("destination-folder=fake-folder-node") + .assertThat().field(ACTIONS).contains("assoc-name=cm:checkout"); + } + + /** + * Check we can GET rule's conditions. + */ + @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) + public void getRulesConditions() + { + STEP("Create a rule with several conditions"); + RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + ruleModel.setConditions(createVariousConditions()); + + FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder(); + + RestRuleModel rule = restClient.authenticateUser(user).withCoreAPI().usingNode(folder).usingDefaultRuleSet() + .createSingleRule(ruleModel); + + STEP("Retrieve the created rule via the GET endpoint"); + final RestRuleModel getRuleBody = restClient.authenticateUser(user).withCoreAPI().usingNode(folder).usingDefaultRuleSet().getSingleRule(rule.getId()); + + STEP("Assert that conditions are retrieved using the GET endpoint"); + restClient.assertStatusCodeIs(OK); + getRuleBody.assertThat().field(CONDITIONS).contains("comparator=ends") + .assertThat().field(CONDITIONS).contains("field=cm:creator") + .assertThat().field(CONDITIONS).contains("parameter=ski") + .assertThat().field(CONDITIONS).contains("comparator=begins") + .assertThat().field(CONDITIONS).contains("field=cm:modelVersion") + .assertThat().field(CONDITIONS).contains("parameter=1."); + } } diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RulesTestsUtils.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RulesTestsUtils.java index fdb2bf596f..111008c088 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RulesTestsUtils.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RulesTestsUtils.java @@ -26,6 +26,7 @@ package org.alfresco.rest.rules; import java.io.Serializable; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -144,6 +145,23 @@ public class RulesTestsUtils )); } + public static RestRuleModel createVariousActions() + { + final Map copyParams = + Map.of("destination-folder", "dummy-folder-node", "deep-copy", true); + final RestActionBodyExecTemplateModel copyAction = createCustomActionModel("copy", copyParams); + final Map checkOutParams = + Map.of("destination-folder", "fake-folder-node", "assoc-name", "cm:checkout", "assoc-type", + "cm:contains"); + final RestActionBodyExecTemplateModel checkOutAction = createCustomActionModel("check-out", checkOutParams); + final Map scriptParams = Map.of("script-ref", "dummy-script-node-id"); + final RestActionBodyExecTemplateModel scriptAction = createCustomActionModel("script", scriptParams); + final RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + ruleModel.setActions(Arrays.asList(copyAction, checkOutAction, scriptAction)); + + return ruleModel; + } + public static RestSimpleConditionDefinitionModel createSimpleCondition(String field, String comparator, String parameter) { RestSimpleConditionDefinitionModel simpleCondition = new RestSimpleConditionDefinitionModel();