From e41fc6af029adc6d0e70e8f24a2b227c3493659e Mon Sep 17 00:00:00 2001 From: Maciej Pichura <41297682+mpichura@users.noreply.github.com> Date: Mon, 7 Nov 2022 15:31:19 +0100 Subject: [PATCH] ACS-3855: Add validation for rule condition comparator. (#1538) --- .../alfresco/rest/rules/CreateRulesTests.java | 22 +++++++++++++++++++ .../RestRuleSimpleConditionModelMapper.java | 13 ++++++++++- ...estRuleSimpleConditionModelMapperTest.java | 17 ++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) 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 68605676b5..3cfc1902a0 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 @@ -951,6 +951,28 @@ public class CreateRulesTests extends RestTest restClient.assertLastError().containsSummary("Category in condition is invalid"); } + /** + * Check we get 400 error when condition comparator is invalid + */ + @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) + public void createRuleWithConditions_invalidComparator() + { + STEP("Try to create a rule with invalid comparator in conditions."); + final String comparator = "greaterthan"; + RestCompositeConditionDefinitionModel conditions = rulesUtils.createCompositeCondition(List.of( + rulesUtils.createCompositeCondition(!INVERTED, List.of( + rulesUtils.createSimpleCondition("size", comparator, "500") + )) + )); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); + ruleModel.setConditions(conditions); + + restClient.authenticateUser(user).withPrivateAPI().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); + + restClient.assertStatusCodeIs(BAD_REQUEST); + restClient.assertLastError().containsSummary("Comparator value for condition is invalid: " + comparator); + } + private String getAddPermissionsBody(String username, String role) { JsonObject userPermission = Json.createObjectBuilder().add("permissions", diff --git a/remote-api/src/main/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleSimpleConditionModelMapper.java b/remote-api/src/main/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleSimpleConditionModelMapper.java index 8f16fcb15c..45ba6fbdff 100644 --- a/remote-api/src/main/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleSimpleConditionModelMapper.java +++ b/remote-api/src/main/java/org/alfresco/rest/api/impl/mapper/rules/RestRuleSimpleConditionModelMapper.java @@ -64,6 +64,7 @@ public class RestRuleSimpleConditionModelMapper implements RestModelMapper objectUnderTest.toServiceModel(simpleConditionNullComparator)) + .isInstanceOf(InvalidArgumentException.class) + .hasMessageContaining(String.format(INVALID_COMPARATOR_VALUE, comparator)); + } + private static ActionCondition createActionCondition(final String actionDefinitionName) { return new ActionConditionImpl("fake-id", actionDefinitionName, createParameterValues());