From 32aa786c3f4747388bb73532b3ccd262eb4df7fa Mon Sep 17 00:00:00 2001 From: Tom Page Date: Thu, 13 Oct 2022 11:43:41 +0100 Subject: [PATCH] ACS-3651 Convert RulesTestsUtils to a service bean. Update a few dummy folder nodes to use real folders. --- .../test/java/org/alfresco/rest/RestTest.java | 4 + .../alfresco/rest/rules/CreateRulesTests.java | 85 ++++++------ .../alfresco/rest/rules/DeleteRulesTests.java | 9 +- .../rest/rules/ExecuteRulesTests.java | 68 +++++----- .../rest/rules/GetInheritedRulesTests.java | 11 +- .../alfresco/rest/rules/GetRuleSetsTests.java | 25 ++-- .../alfresco/rest/rules/GetRulesTests.java | 25 ++-- .../org/alfresco/rest/rules/ReorderRules.java | 3 +- .../rest/rules/RuleSetLinksTests.java | 22 ++- .../alfresco/rest/rules/RulesTestsUtils.java | 125 ++++++++++++++---- .../alfresco/rest/rules/UpdateRulesTests.java | 99 ++++++-------- 11 files changed, 258 insertions(+), 218 deletions(-) diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/RestTest.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/RestTest.java index f4104eda88..92fff70016 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/RestTest.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/RestTest.java @@ -5,6 +5,7 @@ import java.lang.reflect.Method; import org.alfresco.dataprep.WorkflowService; import org.alfresco.rest.core.RestProperties; import org.alfresco.rest.core.RestWrapper; +import org.alfresco.rest.rules.RulesTestsUtils; import org.alfresco.utility.LogFactory; import org.alfresco.utility.TasProperties; import org.alfresco.utility.data.DataContent; @@ -61,6 +62,9 @@ public abstract class RestTest extends AbstractTestNGSpringContextTests @Autowired protected WorkflowService workflow; + @Autowired + protected RulesTestsUtils rulesUtils; + protected SiteModel testSite; @BeforeSuite(alwaysRun = true) 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 80c0cf132a..a556378859 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 @@ -26,21 +26,12 @@ package org.alfresco.rest.rules; import static java.util.stream.Collectors.toList; + import static org.alfresco.rest.actions.access.AccessRestrictionUtil.ERROR_MESSAGE_ACCESS_RESTRICTED; import static org.alfresco.rest.rules.RulesTestsUtils.ID; import static org.alfresco.rest.rules.RulesTestsUtils.INVERTED; import static org.alfresco.rest.rules.RulesTestsUtils.IS_SHARED; import static org.alfresco.rest.rules.RulesTestsUtils.RULE_NAME_DEFAULT; -import static org.alfresco.rest.rules.RulesTestsUtils.createAddAudioAspectAction; -import static org.alfresco.rest.rules.RulesTestsUtils.createCompositeCondition; -import static org.alfresco.rest.rules.RulesTestsUtils.createCustomActionModel; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModel; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModelWithDefaultValues; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModelWithModifiedValues; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleWithPrivateAction; -import static org.alfresco.rest.rules.RulesTestsUtils.createSimpleCondition; -import static org.alfresco.rest.rules.RulesTestsUtils.createVariousActions; -import static org.alfresco.rest.rules.RulesTestsUtils.createVariousConditions; import static org.alfresco.utility.constants.UserRole.SiteCollaborator; import static org.alfresco.utility.constants.UserRole.SiteConsumer; import static org.alfresco.utility.constants.UserRole.SiteContributor; @@ -98,12 +89,12 @@ public class CreateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void createRule() { - RestRuleModel ruleModel = createRuleModelWithModifiedValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithModifiedValues(); RestRuleModel rule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); - RestRuleModel expectedRuleModel = createRuleModelWithModifiedValues(); + RestRuleModel expectedRuleModel = rulesUtils.createRuleModelWithModifiedValues(); restClient.assertStatusCodeIs(CREATED); rule.assertThat().isEqualTo(expectedRuleModel, ID, IS_SHARED) .assertThat().field(ID).isNotNull() @@ -145,7 +136,7 @@ public class CreateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES }) public void createRuleWithEmptyName() { - RestRuleModel ruleModel = createRuleModel(""); + RestRuleModel ruleModel = rulesUtils.createRuleModel(""); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); @@ -157,7 +148,7 @@ public class CreateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES }) public void duplicateRuleNameIsAcceptable() { - RestRuleModel ruleModel = createRuleModel("duplicateRuleName"); + RestRuleModel ruleModel = rulesUtils.createRuleModel("duplicateRuleName"); STEP("Create two identical rules"); RestRuleModel ruleA = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); @@ -244,7 +235,7 @@ public class CreateRulesTests extends RestTest { STEP("Create a list of rules in one POST request"); List ruleNames = List.of("ruleA", "ruleB", "ruleC"); - List ruleModels = ruleNames.stream().map(RulesTestsUtils::createRuleModel).collect(toList()); + List ruleModels = ruleNames.stream().map(rulesUtils::createRuleModel).collect(toList()); RestRuleModelsCollection rules = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .createListOfRules(ruleModels); @@ -263,10 +254,10 @@ public class CreateRulesTests extends RestTest public void createRulesWithOneError() { STEP("Try to create a three rules but the middle one has an error."); - RestRuleModel ruleA = createRuleModel("ruleA"); - RestRuleModel ruleB = createRuleModel(""); + RestRuleModel ruleA = rulesUtils.createRuleModel("ruleA"); + RestRuleModel ruleB = rulesUtils.createRuleModel(""); // Don't set a name for Rule B. - RestRuleModel ruleC = createRuleModel("ruleC"); + RestRuleModel ruleC = rulesUtils.createRuleModel("ruleC"); List ruleModels = List.of(ruleA, ruleB, ruleC); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet().createListOfRules(ruleModels); @@ -279,7 +270,7 @@ public class CreateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES }) public void createRuleWithoutDescription() { - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); UserModel admin = dataUser.getAdminUser(); RestRuleModel rule = restClient.authenticateUser(admin).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -295,7 +286,7 @@ public class CreateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES }) public void createRuleWithoutTriggers() { - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); UserModel admin = dataUser.getAdminUser(); RestRuleModel rule = restClient.authenticateUser(admin).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -311,7 +302,7 @@ public class CreateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES }) public void createRuleWithoutErrorScript() { - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); UserModel admin = dataUser.getAdminUser(); RestRuleModel rule = restClient.authenticateUser(admin).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -327,7 +318,7 @@ public class CreateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES }) public void createRuleWithSharedFlag() { - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); ruleModel.setIsShared(true); UserModel admin = dataUser.getAdminUser(); @@ -344,7 +335,7 @@ public class CreateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void createRuleAndIncludeFieldsInResponse() { - RestRuleModel ruleModel = createRuleModel("ruleName"); + RestRuleModel ruleModel = rulesUtils.createRuleModel("ruleName"); RestRuleModel rule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .include("isShared") @@ -363,7 +354,7 @@ public class CreateRulesTests extends RestTest STEP(String.format("Add a user with '%s' role in the private site's folder", userRole.toString())); UserModel userWithRole = dataUser.createRandomTestUser(); dataUser.addUserToSite(userWithRole, privateSite, userRole); - RestRuleModel ruleModel = createRuleModel("testRule", List.of(createAddAudioAspectAction())); + RestRuleModel ruleModel = rulesUtils.createRuleModel("testRule", List.of(rulesUtils.createAddAudioAspectAction())); return restClient.authenticateUser(userWithRole).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet().createSingleRule(ruleModel); } @@ -377,10 +368,10 @@ public class CreateRulesTests extends RestTest final UserModel admin = dataUser.getAdminUser(); final RestRuleModel rule = restClient.authenticateUser(admin).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() - .createSingleRule(createVariousActions()); + .createSingleRule(rulesUtils.createVariousActions()); - RestRuleModel expectedRuleModel = createRuleModelWithDefaultValues(); - expectedRuleModel.setActions(createVariousActions().getActions()); + RestRuleModel expectedRuleModel = rulesUtils.createRuleModelWithDefaultValues(); + expectedRuleModel.setActions(rulesUtils.createVariousActions().getActions()); expectedRuleModel.setTriggers(List.of("inbound")); restClient.assertStatusCodeIs(CREATED); @@ -393,7 +384,7 @@ public class CreateRulesTests extends RestTest public void createRuleWithActions_userCannotUsePrivateAction() { restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() - .createSingleRule(createRuleWithPrivateAction()); + .createSingleRule(rulesUtils.createRuleWithPrivateAction()); restClient.assertStatusCodeIs(FORBIDDEN) .assertLastError().containsSummary(ERROR_MESSAGE_ACCESS_RESTRICTED); @@ -404,7 +395,7 @@ public class CreateRulesTests extends RestTest public void createRuleWithActions_adminCanUsePrivateAction() { restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() - .createSingleRule(createRuleWithPrivateAction()); + .createSingleRule(rulesUtils.createRuleWithPrivateAction()); restClient.assertStatusCodeIs(CREATED); } @@ -415,7 +406,7 @@ public class CreateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void createRuleWithoutActionsShouldFail() { - final RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + final RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); ruleModel.setActions(null); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -431,7 +422,7 @@ public class CreateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void createRuleWithInvalidActionsShouldFail() { - final RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + final RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); final RestActionBodyExecTemplateModel invalidAction = new RestActionBodyExecTemplateModel(); final String actionDefinitionId = "invalid-definition-value"; invalidAction.setActionDefinitionId(actionDefinitionId); @@ -451,7 +442,7 @@ public class CreateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void createRuleWithMissingActionParametersShouldFail() { - final RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + final RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); final RestActionBodyExecTemplateModel invalidAction = new RestActionBodyExecTemplateModel(); final String actionDefinitionId = "copy"; invalidAction.setActionDefinitionId(actionDefinitionId); @@ -472,11 +463,11 @@ public class CreateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void createRuleWithActionParameterNotFulfillingConstraint() { - final RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + final RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); final String actionDefinitionId = "script"; final String scriptRef = "script-ref"; final String scriptNodeId = "dummy-script-node-id"; - final RestActionBodyExecTemplateModel scriptAction = createCustomActionModel(actionDefinitionId, Map.of(scriptRef, scriptNodeId)); + final RestActionBodyExecTemplateModel scriptAction = rulesUtils.createCustomActionModel(actionDefinitionId, Map.of(scriptRef, scriptNodeId)); ruleModel.setActions(List.of(scriptAction)); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -495,7 +486,7 @@ public class CreateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void createRuleWithoutInvalidActionParameterShouldFail() { - final RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + final RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); final RestActionBodyExecTemplateModel invalidAction = new RestActionBodyExecTemplateModel(); final String actionDefinitionId = "add-features"; invalidAction.setActionDefinitionId(actionDefinitionId); @@ -517,7 +508,7 @@ public class CreateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void createRuleWithoutMandatoryActionParametersShouldFail() { - final RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + final RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); final RestActionBodyExecTemplateModel invalidAction = new RestActionBodyExecTemplateModel(); final String actionDefinitionId = "copy"; invalidAction.setActionDefinitionId(actionDefinitionId); @@ -537,14 +528,14 @@ public class CreateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void createRuleWithConditions() { - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); - ruleModel.setConditions(createVariousConditions()); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); + ruleModel.setConditions(rulesUtils.createVariousConditions()); RestRuleModel rule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); - RestRuleModel expectedRuleModel = createRuleModelWithDefaultValues(); - expectedRuleModel.setConditions(createVariousConditions()); + RestRuleModel expectedRuleModel = rulesUtils.createRuleModelWithDefaultValues(); + expectedRuleModel.setConditions(rulesUtils.createVariousConditions()); expectedRuleModel.setTriggers(List.of("inbound")); restClient.assertStatusCodeIs(CREATED); rule.assertThat().isEqualTo(expectedRuleModel, ID, IS_SHARED); @@ -556,13 +547,13 @@ public class CreateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void createRuleWithConditions_emptyConditionList() { - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); - ruleModel.setConditions(createCompositeCondition(null)); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); + ruleModel.setConditions(rulesUtils.createCompositeCondition(null)); RestRuleModel rule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); - RestRuleModel expectedRuleModel = createRuleModelWithDefaultValues(); + RestRuleModel expectedRuleModel = rulesUtils.createRuleModelWithDefaultValues(); expectedRuleModel.setTriggers(List.of("inbound")); restClient.assertStatusCodeIs(CREATED); rule.assertThat().isEqualTo(expectedRuleModel, ID, IS_SHARED); @@ -576,12 +567,12 @@ public class CreateRulesTests extends RestTest { STEP("Try to create a rule with non existing category in conditions."); String fakeCategoryId = "bdba5f9f-fake-id22-803b-349bcfd06fd1"; - RestCompositeConditionDefinitionModel conditions = createCompositeCondition(List.of( - createCompositeCondition(!INVERTED, List.of( - createSimpleCondition("category", "equals", fakeCategoryId) + RestCompositeConditionDefinitionModel conditions = rulesUtils.createCompositeCondition(List.of( + rulesUtils.createCompositeCondition(!INVERTED, List.of( + rulesUtils.createSimpleCondition("category", "equals", fakeCategoryId) )) )); - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); ruleModel.setConditions(conditions); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/DeleteRulesTests.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/DeleteRulesTests.java index c7a720075d..84ce44d59e 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/DeleteRulesTests.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/DeleteRulesTests.java @@ -27,7 +27,6 @@ package org.alfresco.rest.rules; import static java.util.stream.Collectors.toList; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModel; import static org.alfresco.utility.constants.UserRole.SiteCollaborator; import static org.alfresco.utility.constants.UserRole.SiteContributor; import static org.alfresco.utility.constants.UserRole.SiteManager; @@ -83,7 +82,7 @@ public class DeleteRulesTests extends RestTest final FolderModel ruleFolder = dataContent.usingUser(user).usingSite(site).createFolder(); final List createdRules = Stream.of("ruleA", "ruleB", "ruleC") .map(ruleName -> { - RestRuleModel ruleModel = createRuleModel(ruleName); + RestRuleModel ruleModel = rulesUtils.createRuleModel(ruleName); return restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); }) @@ -187,7 +186,7 @@ public class DeleteRulesTests extends RestTest final UserModel privateUser = dataUser.createRandomTestUser(); final SiteModel privateSite = dataSite.usingUser(privateUser).createPrivateRandomSite(); final FolderModel privateFolder = dataContent.usingUser(privateUser).usingSite(privateSite).createFolder(); - final RestRuleModel ruleModel = createRuleModel("Private site rule"); + final RestRuleModel ruleModel = rulesUtils.createRuleModel("Private site rule"); final RestRuleModel createdRule = restClient.authenticateUser(privateUser).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); @@ -228,7 +227,7 @@ public class DeleteRulesTests extends RestTest final UserModel privateUser = dataUser.createRandomTestUser(); final SiteModel privateSite = dataSite.usingUser(privateUser).createPrivateRandomSite(); final FolderModel privateFolder = dataContent.usingUser(privateUser).usingSite(privateSite).createFolder(); - final RestRuleModel ruleModel = createRuleModel("Private site rule"); + final RestRuleModel ruleModel = rulesUtils.createRuleModel("Private site rule"); final RestRuleModel createdRule = restClient.authenticateUser(privateUser).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); @@ -248,7 +247,7 @@ public class DeleteRulesTests extends RestTest private RestRuleModel createRule(FolderModel ruleFolder) { STEP("Create a rule in the folder"); - final RestRuleModel ruleModel = createRuleModel("Test rule"); + final RestRuleModel ruleModel = rulesUtils.createRuleModel("Test rule"); return restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); } } diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/ExecuteRulesTests.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/ExecuteRulesTests.java index 97dac2f192..ae578699da 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/ExecuteRulesTests.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/ExecuteRulesTests.java @@ -28,16 +28,9 @@ package org.alfresco.rest.rules; import static org.alfresco.rest.rules.RulesTestsUtils.AUDIO_ASPECT; import static org.alfresco.rest.rules.RulesTestsUtils.LOCKABLE_ASPECT; import static org.alfresco.rest.rules.RulesTestsUtils.RULE_NAME_DEFAULT; -import static org.alfresco.rest.rules.RulesTestsUtils.assertThat; -import static org.alfresco.rest.rules.RulesTestsUtils.createAddAspectAction; -import static org.alfresco.rest.rules.RulesTestsUtils.createCustomActionModel; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleExecutionRequest; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModel; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModelWithDefaultValues; import static org.alfresco.utility.report.log.Step.STEP; import java.util.List; -import java.util.Map; import org.alfresco.dataprep.CMISUtil; import org.alfresco.rest.RestTest; @@ -54,7 +47,6 @@ import org.alfresco.utility.model.UserModel; import org.springframework.http.HttpStatus; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Ignore; import org.testng.annotations.Test; /** @@ -91,11 +83,11 @@ public class ExecuteRulesTests extends RestTest childFolderFile = dataContent.usingUser(user).usingResource(childFolder).createContent(CMISUtil.DocumentType.TEXT_PLAIN); STEP("Create rules for parent and rule folders"); - RestActionBodyExecTemplateModel addLockableAspectAction = createAddAspectAction(LOCKABLE_ASPECT); - RestRuleModel ruleModel = createRuleModel(RULE_NAME_DEFAULT, List.of(addLockableAspectAction)); + RestActionBodyExecTemplateModel addLockableAspectAction = rulesUtils.createAddAspectAction(LOCKABLE_ASPECT); + RestRuleModel ruleModel = rulesUtils.createRuleModel(RULE_NAME_DEFAULT, List.of(addLockableAspectAction)); ruleModel.setIsInheritable(true); parentFolderRule = restClient.authenticateUser(user).withCoreAPI().usingNode(parentFolder).usingDefaultRuleSet().createSingleRule(ruleModel); - childFolderRule = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolder).usingDefaultRuleSet().createSingleRule(createRuleModelWithDefaultValues()); + childFolderRule = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolder).usingDefaultRuleSet().createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); } /** @@ -107,17 +99,17 @@ public class ExecuteRulesTests extends RestTest STEP("Check if file aspects don't contain Audio one"); RestNodeModel fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).notContainsAspects(AUDIO_ASPECT); + rulesUtils.assertThat(fileNode).notContainsAspects(AUDIO_ASPECT); STEP("Execute rule"); - RestRuleExecutionModel executionResult = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolder).executeRules(createRuleExecutionRequest()); + RestRuleExecutionModel executionResult = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolder).executeRules(rulesUtils.createRuleExecutionRequest()); restClient.assertStatusCodeIs(HttpStatus.CREATED); executionResult.assertThat().field("isEachSubFolderIncluded").is(false); STEP("Check if only Audio aspect was added"); fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).containsAspects(AUDIO_ASPECT); + rulesUtils.assertThat(fileNode).containsAspects(AUDIO_ASPECT); } /** @@ -129,10 +121,10 @@ public class ExecuteRulesTests extends RestTest STEP("Check if file aspects don't contain Audio and Lockable ones"); RestNodeModel fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).notContainsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); + rulesUtils.assertThat(fileNode).notContainsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); STEP("Execute rules including inherited rules"); - RestRuleExecutionModel ruleExecutionRequest = createRuleExecutionRequest(); + RestRuleExecutionModel ruleExecutionRequest = rulesUtils.createRuleExecutionRequest(); RestRuleExecutionModel executionResult = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolder).executeRules(ruleExecutionRequest); restClient.assertStatusCodeIs(HttpStatus.CREATED); executionResult.assertThat().field("isEachSubFolderIncluded").is(false); @@ -140,7 +132,7 @@ public class ExecuteRulesTests extends RestTest STEP("Check if Audio and Lockable aspects were added"); fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).containsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); + rulesUtils.assertThat(fileNode).containsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); } /** @@ -152,15 +144,15 @@ public class ExecuteRulesTests extends RestTest STEP("Check if parent folder's file aspects don't contain Audio and Lockable ones"); RestNodeModel fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(parentFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).notContainsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); + rulesUtils.assertThat(fileNode).notContainsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); STEP("Check if child folder's file aspects don't contain Audio and Lockable ones"); fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).notContainsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); + rulesUtils.assertThat(fileNode).notContainsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); STEP("Execute rules on parent folder including sub-folders"); - RestRuleExecutionModel ruleExecutionRequest = createRuleExecutionRequest(); + RestRuleExecutionModel ruleExecutionRequest = rulesUtils.createRuleExecutionRequest(); ruleExecutionRequest.setIsEachSubFolderIncluded(true); RestRuleExecutionModel executionResult = restClient.authenticateUser(user).withCoreAPI().usingNode(parentFolder).executeRules(ruleExecutionRequest); restClient.assertStatusCodeIs(HttpStatus.CREATED); @@ -169,14 +161,14 @@ public class ExecuteRulesTests extends RestTest STEP("Check if Lockable aspects was added to parent folder's file"); fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(parentFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode) + rulesUtils.assertThat(fileNode) .containsAspects(LOCKABLE_ASPECT) .notContainsAspects(AUDIO_ASPECT); STEP("Check if Audio and Lockable aspects were added to child folder's file"); fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode) + rulesUtils.assertThat(fileNode) .containsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); } @@ -187,24 +179,24 @@ public class ExecuteRulesTests extends RestTest public void executeRules_disabledRule() { STEP("Disable child rules"); - RestRuleModel updatedChildRule = createRuleModelWithDefaultValues(); + RestRuleModel updatedChildRule = rulesUtils.createRuleModelWithDefaultValues(); updatedChildRule.setIsEnabled(false); restClient.authenticateUser(user).withCoreAPI().usingNode(childFolder).usingDefaultRuleSet().updateRule(childFolderRule.getId(), updatedChildRule); STEP("Check if file aspects don't contain Audio one"); RestNodeModel fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).notContainsAspects(AUDIO_ASPECT); + rulesUtils.assertThat(fileNode).notContainsAspects(AUDIO_ASPECT); STEP("Execute rule"); - RestRuleExecutionModel executionResult = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolder).executeRules(createRuleExecutionRequest()); + RestRuleExecutionModel executionResult = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolder).executeRules(rulesUtils.createRuleExecutionRequest()); restClient.assertStatusCodeIs(HttpStatus.CREATED); executionResult.assertThat().field("isEachSubFolderIncluded").is(false); STEP("Check if Audio aspect is still missing"); fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).notContainsAspects(AUDIO_ASPECT); + rulesUtils.assertThat(fileNode).notContainsAspects(AUDIO_ASPECT); } /** @@ -214,24 +206,24 @@ public class ExecuteRulesTests extends RestTest public void executeRules_notInheritableRule() { STEP("Set parent rule as not inheritable"); - RestRuleModel updatedParentRule = createRuleModelWithDefaultValues(); + RestRuleModel updatedParentRule = rulesUtils.createRuleModelWithDefaultValues(); updatedParentRule.setIsInheritable(false); restClient.authenticateUser(user).withCoreAPI().usingNode(parentFolder).usingDefaultRuleSet().updateRule(parentFolderRule.getId(), updatedParentRule); STEP("Check if file aspects don't contain Audio and Lockable ones"); RestNodeModel fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).notContainsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); + rulesUtils.assertThat(fileNode).notContainsAspects(AUDIO_ASPECT, LOCKABLE_ASPECT); STEP("Execute child folder rules including inherited rules"); - RestRuleExecutionModel executionResult = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolder).executeRules(createRuleExecutionRequest()); + RestRuleExecutionModel executionResult = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolder).executeRules(rulesUtils.createRuleExecutionRequest()); restClient.assertStatusCodeIs(HttpStatus.CREATED); executionResult.assertThat().field("isEachSubFolderIncluded").is(false); STEP("Check if Audio aspect is present and Lockable is still missing"); fileNode = restClient.authenticateUser(user).withCoreAPI().usingNode(childFolderFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode) + rulesUtils.assertThat(fileNode) .containsAspects(AUDIO_ASPECT) .notContainsAspects(LOCKABLE_ASPECT); } @@ -246,10 +238,10 @@ public class ExecuteRulesTests extends RestTest SiteModel privateSite = dataSite.usingAdmin().createPrivateRandomSite(); FolderModel privateFolder = dataContent.usingAdmin().usingSite(privateSite).createFolder(); dataContent.usingAdmin().usingResource(privateFolder).createContent(CMISUtil.DocumentType.TEXT_PLAIN); - restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet().createSingleRule(createRuleModelWithDefaultValues()); + restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet().createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); STEP("Try to execute private folder's rules by user"); - restClient.authenticateUser(user).withCoreAPI().usingNode(privateFolder).executeRules(createRuleExecutionRequest()); + restClient.authenticateUser(user).withCoreAPI().usingNode(privateFolder).executeRules(rulesUtils.createRuleExecutionRequest()); restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN); } @@ -264,11 +256,11 @@ public class ExecuteRulesTests extends RestTest SiteModel privateSite = dataSite.usingAdmin().createPrivateRandomSite(); FolderModel privateFolder = dataContent.usingAdmin().usingSite(privateSite).createFolder(); dataContent.usingAdmin().usingResource(privateFolder).createContent(CMISUtil.DocumentType.TEXT_PLAIN); - restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet().createSingleRule(createRuleModelWithDefaultValues()); + restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet().createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); dataUser.usingAdmin().addUserToSite(contributor, privateSite, UserRole.SiteContributor); STEP("Try to execute private folder's rules by contributor"); - restClient.authenticateUser(contributor).withCoreAPI().usingNode(privateFolder).executeRules(createRuleExecutionRequest()); + restClient.authenticateUser(contributor).withCoreAPI().usingNode(privateFolder).executeRules(rulesUtils.createRuleExecutionRequest()); restClient.assertStatusCodeIs(HttpStatus.FORBIDDEN); } @@ -284,22 +276,22 @@ public class ExecuteRulesTests extends RestTest SiteModel privateSite = dataSite.usingAdmin().createPrivateRandomSite(); FolderModel privateFolder = dataContent.usingAdmin().usingSite(privateSite).createFolder(); FileModel privateFile = dataContent.usingAdmin().usingResource(privateFolder).createContent(CMISUtil.DocumentType.TEXT_PLAIN); - restClient.authenticateUser(admin).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet().createSingleRule(createRuleModelWithDefaultValues()); + restClient.authenticateUser(admin).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet().createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); dataUser.usingAdmin().addUserToSite(collaborator, privateSite, UserRole.SiteCollaborator); STEP("Check if file aspects don't contain Audio one"); RestNodeModel fileNode = restClient.authenticateUser(admin).withCoreAPI().usingNode(privateFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).notContainsAspects(AUDIO_ASPECT); + rulesUtils.assertThat(fileNode).notContainsAspects(AUDIO_ASPECT); STEP("Execute private folder's rules by collaborator"); - restClient.authenticateUser(collaborator).withCoreAPI().usingNode(privateFolder).executeRules(createRuleExecutionRequest()); + restClient.authenticateUser(collaborator).withCoreAPI().usingNode(privateFolder).executeRules(rulesUtils.createRuleExecutionRequest()); restClient.assertStatusCodeIs(HttpStatus.CREATED); STEP("Check if Audio aspect is present"); fileNode = restClient.authenticateUser(admin).withCoreAPI().usingNode(privateFile).getNode(); restClient.assertStatusCodeIs(HttpStatus.OK); - assertThat(fileNode).containsAspects(AUDIO_ASPECT); + rulesUtils.assertThat(fileNode).containsAspects(AUDIO_ASPECT); } //TODO: add test(s) that would cover handling executing broken rule and/or broken rule execution (ACS-3699) diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetInheritedRulesTests.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetInheritedRulesTests.java index ebe1017b2c..396b576456 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetInheritedRulesTests.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetInheritedRulesTests.java @@ -25,7 +25,6 @@ */ package org.alfresco.rest.rules; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModelWithModifiedValues; import static org.alfresco.utility.report.log.Step.STEP; import static org.testng.Assert.assertEquals; @@ -72,9 +71,9 @@ public class GetInheritedRulesTests extends RestTest STEP("Create a parent and child folder, each with inheriting rules"); FolderModel parent = dataContent.usingUser(user).usingSite(site).createFolder(); FolderModel child = dataContent.usingUser(user).usingResource(parent).createFolder(); - RestRuleModel parentRule = createRuleModelWithModifiedValues(); + RestRuleModel parentRule = rulesUtils.createRuleModelWithDefaultValues(); parentRule = restClient.authenticateUser(user).withCoreAPI().usingNode(parent).usingDefaultRuleSet().createSingleRule(parentRule); - RestRuleModel childRule = createRuleModelWithModifiedValues(); + RestRuleModel childRule = rulesUtils.createRuleModelWithDefaultValues(); childRule = restClient.authenticateUser(user).withCoreAPI().usingNode(child).usingDefaultRuleSet().createSingleRule(childRule); STEP("Get the rules in the default rule set for the child folder"); @@ -111,9 +110,9 @@ public class GetInheritedRulesTests extends RestTest FolderModel folderB = dataContent.usingUser(user).usingResource(folderA).createFolder(); FolderModel folderC = dataContent.usingUser(user).usingResource(folderB).createFolder(); FolderModel folderD = dataContent.usingUser(user).usingResource(folderC).createFolder(); - RestRuleModel ruleB = restClient.authenticateUser(user).withCoreAPI().usingNode(folderB).usingDefaultRuleSet().createSingleRule(createRuleModelWithModifiedValues()); - RestRuleModel ruleC = restClient.authenticateUser(user).withCoreAPI().usingNode(folderC).usingDefaultRuleSet().createSingleRule(createRuleModelWithModifiedValues()); - RestRuleModel ruleD = restClient.authenticateUser(user).withCoreAPI().usingNode(folderD).usingDefaultRuleSet().createSingleRule(createRuleModelWithModifiedValues()); + RestRuleModel ruleB = restClient.authenticateUser(user).withCoreAPI().usingNode(folderB).usingDefaultRuleSet().createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); + RestRuleModel ruleC = restClient.authenticateUser(user).withCoreAPI().usingNode(folderC).usingDefaultRuleSet().createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); + RestRuleModel ruleD = restClient.authenticateUser(user).withCoreAPI().usingNode(folderD).usingDefaultRuleSet().createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); STEP("Link folderA to ruleSetD"); RestRuleSetLinkModel linkModel = new RestRuleSetLinkModel(); linkModel.setId(folderD.getNodeRef()); diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetRuleSetsTests.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetRuleSetsTests.java index 7c117d643d..e9e28e7f05 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetRuleSetsTests.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/GetRuleSetsTests.java @@ -26,9 +26,6 @@ package org.alfresco.rest.rules; import static org.alfresco.rest.requests.RuleSettings.IS_INHERITANCE_ENABLED; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModel; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModelWithDefaultValues; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModelWithModifiedValues; import static org.alfresco.utility.report.log.Step.STEP; import static org.junit.Assert.assertTrue; import static org.springframework.http.HttpStatus.FORBIDDEN; @@ -87,7 +84,7 @@ public class GetRuleSetsTests extends RestTest .usingIsInheritanceEnabledRuleSetting().updateSetting(doesntInherit); STEP("Create a rule in the folder."); - RestRuleModel ruleModel = createRuleModel("ruleName"); + RestRuleModel ruleModel = rulesUtils.createRuleModel("ruleName"); rule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); @@ -100,7 +97,7 @@ public class GetRuleSetsTests extends RestTest STEP("Use admin to create a private site containing a rule in a rule set that can be inherited."); SiteModel privateSite = dataSite.usingAdmin().createPrivateRandomSite(); privateFolder = dataContent.usingAdmin().usingSite(privateSite).createFolder(); - coreAPIForAdmin().usingNode(privateFolder).usingDefaultRuleSet().createSingleRule(createRuleModelWithModifiedValues()); + coreAPIForAdmin().usingNode(privateFolder).usingDefaultRuleSet().createSingleRule(rulesUtils.createRuleModelWithModifiedValues()); } /** Check we can get an empty list of rule sets. */ @@ -170,7 +167,7 @@ public class GetRuleSetsTests extends RestTest coreAPIForAdmin().usingNode(parentFolder).createRuleLink(linkModel); STEP("Create a rule on the child folder."); - coreAPIForUser().usingNode(childFolder).usingDefaultRuleSet().createSingleRule(createRuleModelWithDefaultValues()); + coreAPIForUser().usingNode(childFolder).usingDefaultRuleSet().createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); STEP("Check admin can view both rule sets."); RestRuleSetModelsCollection adminViewOfRuleSets = coreAPIForAdmin().usingNode(childFolder).getListOfRuleSets(); @@ -355,7 +352,7 @@ public class GetRuleSetsTests extends RestTest FolderModel descendantFolder = dataContent.usingUser(user).usingResource(linkingFolder).createFolder(); STEP("Create an inheritable rule in the folder and get the rule set id."); - RestRuleModel ruleModel = createRuleModelWithModifiedValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithModifiedValues(); coreAPIForUser().usingNode(folder).usingDefaultRuleSet().createSingleRule(ruleModel); RestRuleSetModelsCollection ruleSets = coreAPIForUser().usingNode(folder).getListOfRuleSets(); String ruleSetId = ruleSets.getEntries().get(0).onModel().getId(); @@ -397,7 +394,7 @@ public class GetRuleSetsTests extends RestTest dataUser.removeUserFromSite(user, siteModel); STEP("Create a rule in the folder and link to it from the other two."); - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); coreAPIForUser().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); RestRuleSetModelsCollection ruleSets = coreAPIForAdmin().usingNode(ruleFolder).getListOfRuleSets(); String ruleSetId = ruleSets.getEntries().get(0).onModel().getId(); @@ -427,7 +424,7 @@ public class GetRuleSetsTests extends RestTest STEP("Create a folder with a rule set and a private child folder to inherit it"); FolderModel ruleFolder = dataContent.usingUser(user).usingSite(siteModel).createFolder(); dataContent.usingAdmin().usingResource(ruleFolder).createFolder(); - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); coreAPIForUser().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); STEP("Remove the user from the site"); @@ -451,7 +448,7 @@ public class GetRuleSetsTests extends RestTest STEP("Create a site and a folder with a rule"); SiteModel siteModel = dataSite.usingUser(user).createPublicRandomSite(); FolderModel ruleFolder = dataContent.usingUser(user).usingSite(siteModel).createFolder(); - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); coreAPIForUser().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); STEP("Create a second folder in the site that links to the rule set"); @@ -479,7 +476,7 @@ public class GetRuleSetsTests extends RestTest STEP("Create a site and a folder with a rule"); SiteModel siteModel = dataSite.usingUser(user).createPublicRandomSite(); FolderModel ruleFolder = dataContent.usingUser(user).usingSite(siteModel).createFolder(); - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); coreAPIForUser().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); STEP("Create a second folder in the site that links to the rule set"); @@ -508,7 +505,7 @@ public class GetRuleSetsTests extends RestTest STEP("Create a folder with a rule set"); FolderModel ruleFolder = dataContent.usingUser(user).usingSite(siteModel).createFolder(); - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); coreAPIForUser().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); STEP("Create a private folder linking to the rule set"); @@ -540,7 +537,7 @@ public class GetRuleSetsTests extends RestTest STEP("Create a site, a folder with a rule and a child folder that inherits it"); SiteModel siteModel = dataSite.usingUser(user).createPublicRandomSite(); FolderModel ruleFolder = dataContent.usingUser(user).usingSite(siteModel).createFolder(); - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); coreAPIForUser().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); dataContent.usingUser(user).usingResource(ruleFolder).createFolder(); @@ -571,7 +568,7 @@ public class GetRuleSetsTests extends RestTest coreAPIForAdmin().usingNode(parentFolder).createRuleLink(linkModel); STEP("Create a rule on the child folder."); - coreAPIForUser().usingNode(childFolder).usingDefaultRuleSet().createSingleRule(createRuleModelWithDefaultValues()); + coreAPIForUser().usingNode(childFolder).usingDefaultRuleSet().createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); STEP("Use the admin user to get both rule sets."); RestRuleSetModelsCollection adminViewOfRuleSets = coreAPIForAdmin().usingNode(childFolder).getListOfRuleSets(); 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 8aceca3178..5f6f71d500 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 @@ -27,14 +27,13 @@ package org.alfresco.rest.rules; import static java.util.stream.Collectors.toList; -import static org.alfresco.rest.rules.RulesTestsUtils.*; import static org.alfresco.utility.constants.UserRole.SiteCollaborator; import static org.alfresco.utility.report.log.Step.STEP; import static org.junit.Assert.assertTrue; +import static org.springframework.http.HttpStatus.CREATED; import static org.springframework.http.HttpStatus.FORBIDDEN; import static org.springframework.http.HttpStatus.NOT_FOUND; import static org.springframework.http.HttpStatus.OK; -import static org.springframework.http.HttpStatus.CREATED; import java.util.List; import java.util.stream.IntStream; @@ -76,7 +75,7 @@ public class GetRulesTests extends RestTest STEP("Create rules in the folder"); createdRules = Stream.of("ruleA", "ruleB").map(ruleName -> { - RestRuleModel ruleModel = createRuleModel(ruleName); + RestRuleModel ruleModel = rulesUtils.createRuleModel(ruleName); return restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet().createSingleRule(ruleModel); }).collect(toList()); createdRuleA = createdRules.get(0); @@ -183,14 +182,14 @@ public class GetRulesTests extends RestTest public void getRulesOtherFieldsModified() { STEP("Create a rule with all other fields default values modified"); - RestRuleModel ruleModel = createRuleModelWithModifiedValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithModifiedValues(); ruleModel.setTriggers(List.of("update")); UserModel admin = dataUser.getAdminUser(); FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder(); RestRuleModel rule = restClient.authenticateUser(admin).withCoreAPI().usingNode(folder).usingDefaultRuleSet() .createSingleRule(ruleModel); - RestRuleModel expectedRuleModel = createRuleModelWithModifiedValues(); + RestRuleModel expectedRuleModel = rulesUtils.createRuleModelWithModifiedValues(); expectedRuleModel.setTriggers(List.of("update")); restClient.assertStatusCodeIs(CREATED); @@ -205,13 +204,13 @@ public class GetRulesTests extends RestTest public void getRulesDefaultFields() { STEP("Create a rule with all other fields default values"); - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); UserModel admin = dataUser.getAdminUser(); FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder(); RestRuleModel rule = restClient.authenticateUser(admin).withCoreAPI().usingNode(folder).usingDefaultRuleSet() .createSingleRule(ruleModel); - RestRuleModel expectedRuleModel = createRuleModelWithDefaultValues(); + RestRuleModel expectedRuleModel = rulesUtils.createRuleModelWithDefaultValues(); expectedRuleModel.setTriggers(List.of("inbound")); restClient.assertStatusCodeIs(CREATED); @@ -293,7 +292,7 @@ public class GetRulesTests extends RestTest UserModel privateUser = dataUser.createRandomTestUser(); SiteModel privateSite = dataSite.usingUser(privateUser).createPrivateRandomSite(); FolderModel privateFolder = dataContent.usingUser(privateUser).usingSite(privateSite).createFolder(); - RestRuleModel ruleModel = createRuleModel("Private site rule"); + RestRuleModel ruleModel = rulesUtils.createRuleModel("Private site rule"); restClient.authenticateUser(privateUser).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet().createSingleRule(ruleModel); STEP("Create a collaborator in the private site"); @@ -317,7 +316,7 @@ public class GetRulesTests extends RestTest 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()); + .createSingleRule(rulesUtils.createVariousActions()); STEP("Retrieve the created rule via the GET endpoint"); final RestRuleModel getRuleBody = restClient.authenticateUser(user).withCoreAPI().usingNode(folder).usingDefaultRuleSet().getSingleRule(rule.getId()); @@ -325,10 +324,10 @@ public class GetRulesTests extends RestTest 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("destination-folder=" + rulesUtils.getCopyDestinationFolder().getNodeRef()) .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("destination-folder=" + rulesUtils.getCheckOutDestinationFolder().getNodeRef()) .assertThat().field(ACTIONS).contains("assoc-name=cm:checkout"); } @@ -339,8 +338,8 @@ public class GetRulesTests extends RestTest public void getRulesConditions() { STEP("Create a rule with several conditions"); - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); - ruleModel.setConditions(createVariousConditions()); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); + ruleModel.setConditions(rulesUtils.createVariousConditions()); FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder(); diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/ReorderRules.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/ReorderRules.java index b531da50da..0303967726 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/ReorderRules.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/ReorderRules.java @@ -27,7 +27,6 @@ package org.alfresco.rest.rules; import static java.util.stream.Collectors.toList; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModelWithDefaultValues; import static org.alfresco.utility.report.log.Step.STEP; import static org.springframework.http.HttpStatus.FORBIDDEN; import static org.springframework.http.HttpStatus.OK; @@ -197,7 +196,7 @@ public class ReorderRules extends RestTest { return IntStream.range(0, 3).mapToObj(index -> { - RestRuleModel ruleModel = createRuleModelWithDefaultValues(); + RestRuleModel ruleModel = rulesUtils.createRuleModelWithDefaultValues(); return restClient.authenticateUser(user).withCoreAPI().usingNode(folder).usingDefaultRuleSet().createSingleRule(ruleModel); }).collect(toList()); } diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RuleSetLinksTests.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RuleSetLinksTests.java index e8067137b0..d37e42575b 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RuleSetLinksTests.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/RuleSetLinksTests.java @@ -25,8 +25,6 @@ */ package org.alfresco.rest.rules; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModel; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModelWithDefaultValues; import static org.alfresco.utility.constants.UserRole.SiteConsumer; import static org.alfresco.utility.report.log.Step.STEP; import static org.springframework.http.HttpStatus.BAD_REQUEST; @@ -79,7 +77,7 @@ public class RuleSetLinksTests extends RestTest final FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder(); STEP("Create a rule in the rule folder."); - RestRuleModel ruleModel = createRuleModel("ruleName"); + RestRuleModel ruleModel = rulesUtils.createRuleModel("ruleName"); RestRuleModel rule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); @@ -132,7 +130,7 @@ public class RuleSetLinksTests extends RestTest final FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder(); STEP("Create a rule in the rule folder."); - RestRuleModel ruleModel = createRuleModel("ruleName"); + RestRuleModel ruleModel = rulesUtils.createRuleModel("ruleName"); RestRuleModel rule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); @@ -223,10 +221,10 @@ public class RuleSetLinksTests extends RestTest final FolderModel folder2 = dataContent.usingUser(user).usingSite(site).createFolder(); STEP("Create rules in both folders."); - RestRuleModel ruleModel1 = createRuleModel("ruleName1"); + RestRuleModel ruleModel1 = rulesUtils.createRuleModel("ruleName1"); restClient.authenticateUser(user).withCoreAPI().usingNode(folder1).usingDefaultRuleSet() .createSingleRule(ruleModel1); - RestRuleModel ruleModel2 = createRuleModel("ruleName2"); + RestRuleModel ruleModel2 = rulesUtils.createRuleModel("ruleName2"); restClient.authenticateUser(user).withCoreAPI().usingNode(folder2).usingDefaultRuleSet() .createSingleRule(ruleModel2); @@ -272,7 +270,7 @@ public class RuleSetLinksTests extends RestTest final FolderModel childFolder = dataContent.usingUser(user).usingSite(site).usingResource(parentFolder).createFolder(); STEP("Create a rule in the parent folder."); - RestRuleModel ruleModel = createRuleModel("ruleName"); + RestRuleModel ruleModel = rulesUtils.createRuleModel("ruleName"); RestRuleModel rule = restClient.authenticateUser(user).withCoreAPI().usingNode(parentFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); @@ -324,7 +322,7 @@ public class RuleSetLinksTests extends RestTest SiteModel privateSite = dataSite.usingAdmin().createPrivateRandomSite(); FolderModel privateFolder = dataContent.usingAdmin().usingSite(privateSite).createFolder(); restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet() - .createSingleRule(createRuleModelWithDefaultValues()); + .createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); STEP("Use a normal user to try to link to the rule."); FolderModel publicFolder = dataContent.usingUser(user).usingSite(site).createFolder(); @@ -345,7 +343,7 @@ public class RuleSetLinksTests extends RestTest SiteModel privateSite = dataSite.usingAdmin().createPrivateRandomSite(); FolderModel privateFolder = dataContent.usingAdmin().usingSite(privateSite).createFolder(); restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet() - .createSingleRule(createRuleModelWithDefaultValues()); + .createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); STEP("Add the normal user as a consumer."); dataUser.usingAdmin().addUserToSite(user, privateSite, SiteConsumer); @@ -372,7 +370,7 @@ public class RuleSetLinksTests extends RestTest final FolderModel folder = dataContent.usingUser(user).usingSite(site).createFolder(); STEP("Create a rule in the rule folder."); - RestRuleModel ruleModel = createRuleModel("ruleName"); + RestRuleModel ruleModel = rulesUtils.createRuleModel("ruleName"); RestRuleModel rule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); @@ -453,7 +451,7 @@ public class RuleSetLinksTests extends RestTest SiteModel privateSite = dataSite.usingAdmin().createPrivateRandomSite(); FolderModel privateFolder = dataContent.usingAdmin().usingSite(privateSite).createFolder(); restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet() - .createSingleRule(createRuleModelWithDefaultValues()); + .createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); STEP("Add the user as a consumer."); dataUser.usingAdmin().addUserToSite(user, privateSite, SiteConsumer); @@ -484,7 +482,7 @@ public class RuleSetLinksTests extends RestTest SiteModel privateSite = dataSite.usingAdmin().createPrivateRandomSite(); FolderModel privateFolder = dataContent.usingAdmin().usingSite(privateSite).createFolder(); restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(privateFolder).usingDefaultRuleSet() - .createSingleRule(createRuleModelWithDefaultValues()); + .createSingleRule(rulesUtils.createRuleModelWithDefaultValues()); STEP("Add the user as a consumer."); dataUser.usingAdmin().addUserToSite(user, privateSite, SiteConsumer); 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 6fae429ace..8447946762 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 @@ -34,14 +34,29 @@ import java.util.Arrays; import java.util.List; import java.util.Map; +import org.alfresco.rest.core.RestWrapper; import org.alfresco.rest.model.RestActionBodyExecTemplateModel; +import org.alfresco.rest.model.RestActionConstraintDataModel; +import org.alfresco.rest.model.RestActionConstraintModel; +import org.alfresco.rest.model.RestActionDefinitionModel; import org.alfresco.rest.model.RestCompositeConditionDefinitionModel; import org.alfresco.rest.model.RestNodeModel; +import org.alfresco.rest.model.RestParameterDefinitionModel; import org.alfresco.rest.model.RestRuleExecutionModel; import org.alfresco.rest.model.RestRuleModel; import org.alfresco.rest.model.RestSimpleConditionDefinitionModel; +import org.alfresco.utility.data.DataContent; +import org.alfresco.utility.data.DataSite; +import org.alfresco.utility.data.DataUserAIS; +import org.alfresco.utility.model.FolderModel; +import org.alfresco.utility.model.SiteModel; +import org.alfresco.utility.model.UserModel; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; -public class RulesTestsUtils +@Service +public class RulesTestsUtils implements InitializingBean { static final String RULE_NAME_DEFAULT = "ruleName"; static final String RULE_DESCRIPTION_DEFAULT = "rule description"; @@ -49,7 +64,9 @@ public class RulesTestsUtils static final boolean RULE_CASCADE_DEFAULT = true; static final boolean RULE_ASYNC_DEFAULT = true; static final boolean RULE_SHARED_DEFAULT = false; - static final String RULE_ERROR_SCRIPT_DEFAULT = "error-script"; + static final String RULE_SCRIPT_ID = "script"; + static final String RULE_SCRIPT_PARAM_ID = "script-ref"; + static final String RULE_ERROR_SCRIPT_LABEL = "Start Pooled Review and Approve Workflow"; static final String INBOUND = "inbound"; static final String UPDATE = "update"; static final String OUTBOUND = "outbound"; @@ -61,18 +78,74 @@ public class RulesTestsUtils static final String AUDIO_ASPECT = "audio:audio"; static final String LOCKABLE_ASPECT = "cm:lockable"; - public static RestRuleModel createRuleModelWithModifiedValues() + @Autowired + private RestWrapper restClient; + @Autowired + private DataUserAIS dataUser; + @Autowired + private DataSite dataSite; + @Autowired + private DataContent dataContent; + + private SiteModel site; + private String reviewAndApproveWorkflowNode; + + private FolderModel copyDestinationFolder; + + private FolderModel checkOutDestinationFolder; + /** + * Initialise the util class. + */ + @Override + public void afterPropertiesSet() + { + UserModel admin = dataUser.getAdminUser(); + // Obtain the node ref for the review and approve workflow. + RestActionDefinitionModel actionDef = restClient.authenticateUser(admin).withCoreAPI().usingActions().getActionDefinitionById(RULE_SCRIPT_ID); + RestParameterDefinitionModel paramDef = actionDef.getParameterDefinitions().stream().filter(param -> param.getName().equals(RULE_SCRIPT_PARAM_ID)).findFirst().get(); + String constraintName = paramDef.getParameterConstraintName(); + RestActionConstraintModel constraintDef = restClient.authenticateUser(admin).withCoreAPI().usingActions().getActionConstraintByName(constraintName); + RestActionConstraintDataModel reviewAndApprove = constraintDef.getConstraintValues().stream().filter(constraintValue -> constraintValue.getLabel().equals(RULE_ERROR_SCRIPT_LABEL)).findFirst().get(); + reviewAndApproveWorkflowNode = reviewAndApprove.getValue(); + + // Create a couple of public folders to be used as action destinations. + site = dataSite.usingUser(admin).createPublicRandomSite(); + copyDestinationFolder = dataContent.usingUser(admin).usingSite(site).createFolder(); + checkOutDestinationFolder = dataContent.usingUser(admin).usingSite(site).createFolder(); + } + + public RestRuleModel createRuleModelWithModifiedValues() { return createRuleModelWithModifiedValues(List.of(createAddAudioAspectAction())); } + /** + * Get the review and approve workflow node (throwing an exception if this utility class has not been initialised). + * + * @return The node ref of the script node. + */ + public String getReviewAndApproveWorkflowNode() + { + return reviewAndApproveWorkflowNode; + } + + public FolderModel getCopyDestinationFolder() + { + return copyDestinationFolder; + } + + public FolderModel getCheckOutDestinationFolder() + { + return checkOutDestinationFolder; + } + /** * Create a rule model filled with custom constant values. * * @param actions - rule's actions. * @return The created rule model. */ - public static RestRuleModel createRuleModelWithModifiedValues(List actions) + public RestRuleModel createRuleModelWithModifiedValues(List actions) { RestRuleModel ruleModel = createRuleModel(RULE_NAME_DEFAULT, actions); ruleModel.setDescription(RULE_DESCRIPTION_DEFAULT); @@ -81,17 +154,17 @@ public class RulesTestsUtils ruleModel.setIsAsynchronous(RULE_ASYNC_DEFAULT); ruleModel.setIsShared(RULE_SHARED_DEFAULT); ruleModel.setTriggers(RULE_TRIGGERS_DEFAULT); - ruleModel.setErrorScript(RULE_ERROR_SCRIPT_DEFAULT); + ruleModel.setErrorScript(getReviewAndApproveWorkflowNode()); return ruleModel; } - public static RestRuleModel createRuleModelWithDefaultValues() + public RestRuleModel createRuleModelWithDefaultValues() { return createRuleModel(RULE_NAME_DEFAULT); } - public static RestRuleModel createRuleModel(String name) + public RestRuleModel createRuleModel(String name) { return createRuleModel(name, List.of(createAddAudioAspectAction())); } @@ -103,7 +176,7 @@ public class RulesTestsUtils * @param actions Rule's actions. * @return The created rule model. */ - public static RestRuleModel createRuleModel(String name, List actions) + public RestRuleModel createRuleModel(String name, List actions) { RestRuleModel ruleModel = new RestRuleModel(); ruleModel.setIsEnabled(true); @@ -117,17 +190,17 @@ public class RulesTestsUtils * * @return The created action model. */ - public static RestActionBodyExecTemplateModel createAddAudioAspectAction() + public RestActionBodyExecTemplateModel createAddAudioAspectAction() { return createAddAspectAction(AUDIO_ASPECT); } - public static RestActionBodyExecTemplateModel createAddAspectAction(String aspect) + public RestActionBodyExecTemplateModel createAddAspectAction(String aspect) { return createCustomActionModel("add-features", Map.of("aspect-name", aspect)); } - public static RestActionBodyExecTemplateModel createCustomActionModel(String actionDefinitionId, Map params) + public RestActionBodyExecTemplateModel createCustomActionModel(String actionDefinitionId, Map params) { RestActionBodyExecTemplateModel restActionModel = new RestActionBodyExecTemplateModel(); restActionModel.setActionDefinitionId(actionDefinitionId); @@ -135,7 +208,7 @@ public class RulesTestsUtils return restActionModel; } - public static RestCompositeConditionDefinitionModel createEmptyConditionModel() + public RestCompositeConditionDefinitionModel createEmptyConditionModel() { RestCompositeConditionDefinitionModel conditions = new RestCompositeConditionDefinitionModel(); conditions.setInverted(!INVERTED); @@ -143,7 +216,7 @@ public class RulesTestsUtils return conditions; } - public static RestCompositeConditionDefinitionModel createVariousConditions() + public RestCompositeConditionDefinitionModel createVariousConditions() { return createCompositeCondition(List.of( createCompositeCondition(!INVERTED, List.of( @@ -162,14 +235,14 @@ public class RulesTestsUtils )); } - public static RestRuleModel createVariousActions() + public RestRuleModel createVariousActions() { final Map copyParams = - Map.of("destination-folder", "dummy-folder-node", "deep-copy", true); + Map.of("destination-folder", copyDestinationFolder.getNodeRef(), "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"); + Map.of("destination-folder", checkOutDestinationFolder.getNodeRef(), "assoc-name", "cm:checkout", + "assoc-type", "cm:contains"); final RestActionBodyExecTemplateModel checkOutAction = createCustomActionModel("check-out", checkOutParams); // The counter action takes no parameters, so check we can omit the "params" entry. final RestActionBodyExecTemplateModel counterAction = createCustomActionModel("counter", null); @@ -179,7 +252,7 @@ public class RulesTestsUtils return ruleModel; } - public static RestRuleModel createRuleWithPrivateAction() + public RestRuleModel createRuleWithPrivateAction() { RestActionBodyExecTemplateModel mailAction = new RestActionBodyExecTemplateModel(); mailAction.setActionDefinitionId(MAIL_ACTION); @@ -189,7 +262,7 @@ public class RulesTestsUtils return ruleModel; } - public static RestSimpleConditionDefinitionModel createSimpleCondition(String field, String comparator, String parameter) + public RestSimpleConditionDefinitionModel createSimpleCondition(String field, String comparator, String parameter) { RestSimpleConditionDefinitionModel simpleCondition = new RestSimpleConditionDefinitionModel(); simpleCondition.setField(field); @@ -198,23 +271,23 @@ public class RulesTestsUtils return simpleCondition; } - public static RestCompositeConditionDefinitionModel createCompositeCondition(List compositeConditions) + public RestCompositeConditionDefinitionModel createCompositeCondition(List compositeConditions) { return createCompositeCondition(AND, !INVERTED, compositeConditions, null); } - public static RestCompositeConditionDefinitionModel createCompositeCondition(boolean inverted, + public RestCompositeConditionDefinitionModel createCompositeCondition(boolean inverted, List simpleConditions) { return createCompositeCondition(AND, inverted, null, simpleConditions); } - public static RestRuleExecutionModel createRuleExecutionRequest() + public RestRuleExecutionModel createRuleExecutionRequest() { return createRuleExecutionRequest(false); } - public static RestRuleExecutionModel createRuleExecutionRequest(boolean eachSubFolderIncluded) + public RestRuleExecutionModel createRuleExecutionRequest(boolean eachSubFolderIncluded) { RestRuleExecutionModel ruleExecutionBody = new RestRuleExecutionModel(); ruleExecutionBody.setIsEachSubFolderIncluded(eachSubFolderIncluded); @@ -222,7 +295,7 @@ public class RulesTestsUtils return ruleExecutionBody; } - private static RestCompositeConditionDefinitionModel createCompositeCondition(String booleanMode, boolean inverted, + private RestCompositeConditionDefinitionModel createCompositeCondition(String booleanMode, boolean inverted, List compositeConditions, List simpleConditions) { RestCompositeConditionDefinitionModel compositeCondition = new RestCompositeConditionDefinitionModel(); @@ -234,12 +307,12 @@ public class RulesTestsUtils return compositeCondition; } - public static NodeAssertion assertThat(RestNodeModel node) + public NodeAssertion assertThat(RestNodeModel node) { return new NodeAssertion(node); } - public static class NodeAssertion + public class NodeAssertion { private final RestNodeModel node; diff --git a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/UpdateRulesTests.java b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/UpdateRulesTests.java index ef8edae581..ca4f2cf9a9 100644 --- a/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/UpdateRulesTests.java +++ b/packaging/tests/tas-restapi/src/test/java/org/alfresco/rest/rules/UpdateRulesTests.java @@ -33,19 +33,10 @@ import static org.alfresco.rest.rules.RulesTestsUtils.IS_SHARED; import static org.alfresco.rest.rules.RulesTestsUtils.RULE_ASYNC_DEFAULT; import static org.alfresco.rest.rules.RulesTestsUtils.RULE_CASCADE_DEFAULT; import static org.alfresco.rest.rules.RulesTestsUtils.RULE_ENABLED_DEFAULT; -import static org.alfresco.rest.rules.RulesTestsUtils.createCompositeCondition; -import static org.alfresco.rest.rules.RulesTestsUtils.createCustomActionModel; -import static org.alfresco.rest.rules.RulesTestsUtils.createAddAudioAspectAction; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModel; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleModelWithModifiedValues; -import static org.alfresco.rest.rules.RulesTestsUtils.createRuleWithPrivateAction; -import static org.alfresco.rest.rules.RulesTestsUtils.createSimpleCondition; -import static org.alfresco.rest.rules.RulesTestsUtils.createVariousConditions; import static org.alfresco.utility.constants.UserRole.SiteCollaborator; import static org.alfresco.utility.report.log.Step.STEP; import static org.springframework.http.HttpStatus.BAD_REQUEST; import static org.springframework.http.HttpStatus.FORBIDDEN; -import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR; import static org.springframework.http.HttpStatus.NOT_FOUND; import static org.springframework.http.HttpStatus.OK; @@ -96,7 +87,7 @@ public class UpdateRulesTests extends RestTest RestRuleModel rule = createAndSaveRule("Rule name"); STEP("Try to update the rule."); - RestRuleModel updatedRuleModel = createRuleModel("Updated rule name"); + RestRuleModel updatedRuleModel = rulesUtils.createRuleModel("Updated rule name"); RestRuleModel updatedRule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .updateRule(rule.getId(), updatedRuleModel); @@ -182,7 +173,7 @@ public class UpdateRulesTests extends RestTest RestRuleModel rule = createAndSaveRule("Rule name"); STEP("Try to update the rule to have no name."); - RestRuleModel updatedRuleModel = createRuleModel(""); + RestRuleModel updatedRuleModel = rulesUtils.createRuleModel(""); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet().updateRule(rule.getId(), updatedRuleModel); restClient.assertLastError().statusCodeIs(BAD_REQUEST) @@ -196,7 +187,7 @@ public class UpdateRulesTests extends RestTest RestRuleModel rule = createAndSaveRule("Rule name"); STEP("Try to update the rule id and check it isn't changed."); - RestRuleModel updatedRuleModel = createRuleModel("Rule name"); + RestRuleModel updatedRuleModel = rulesUtils.createRuleModel("Rule name"); updatedRuleModel.setId("new-rule-id"); RestRuleModel updatedRule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .updateRule(rule.getId(), updatedRuleModel); @@ -211,7 +202,7 @@ public class UpdateRulesTests extends RestTest RestRuleModel rule = createAndSaveRule("Rule name"); STEP("Try to update the rule."); - RestRuleModel updatedRuleModel = createRuleModel("Updated rule name"); + RestRuleModel updatedRuleModel = rulesUtils.createRuleModel("Updated rule name"); RestRuleModel updatedRule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .include(IS_SHARED) .updateRule(rule.getId(), updatedRuleModel); @@ -286,7 +277,7 @@ public class UpdateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void updateRuleFields() { - final RestRuleModel rule = createAndSaveRule(createRuleModelWithModifiedValues()); + final RestRuleModel rule = createAndSaveRule(rulesUtils.createRuleModelWithModifiedValues()); STEP("Try to update the rule fields."); rule.setName("Updated rule name"); @@ -296,8 +287,7 @@ public class UpdateRulesTests extends RestTest rule.setIsEnabled(!RULE_ENABLED_DEFAULT); rule.setIsInheritable(!RULE_CASCADE_DEFAULT); rule.setIsAsynchronous(!RULE_ASYNC_DEFAULT); - final String updatedErrorScript = "updated-error-script"; - rule.setErrorScript(updatedErrorScript); + rule.setErrorScript(null); final RestRuleModel updatedRule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .updateRule(rule.getId(), rule); @@ -310,10 +300,10 @@ public class UpdateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void updateRuleAddConditions() { - final RestRuleModel rule = createAndSaveRule(createRuleModelWithModifiedValues()); + final RestRuleModel rule = createAndSaveRule(rulesUtils.createRuleModelWithModifiedValues()); STEP("Try to update the rule and add conditions."); - rule.setConditions(createVariousConditions()); + rule.setConditions(rulesUtils.createVariousConditions()); final RestRuleModel updatedRule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .updateRule(rule.getId(), rule); @@ -327,7 +317,7 @@ public class UpdateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void updateRuleAddNullConditions() { - final RestRuleModel rule = createAndSaveRule(createRuleModelWithModifiedValues()); + final RestRuleModel rule = createAndSaveRule(rulesUtils.createRuleModelWithModifiedValues()); STEP("Try to update the rule and add null conditions."); rule.setConditions(null); @@ -344,13 +334,13 @@ public class UpdateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void updateRuleModifyConditions() { - final RestRuleModel ruleModelWithInitialValues = createRuleModelWithModifiedValues(); - ruleModelWithInitialValues.setConditions(createVariousConditions()); + final RestRuleModel ruleModelWithInitialValues = rulesUtils.createRuleModelWithModifiedValues(); + ruleModelWithInitialValues.setConditions(rulesUtils.createVariousConditions()); final RestRuleModel rule = createAndSaveRule(ruleModelWithInitialValues); STEP("Try to update the rule and modify conditions."); - final RestCompositeConditionDefinitionModel compositeCondition = createCompositeCondition( - List.of(createCompositeCondition(false, List.of(createSimpleCondition("tag", "equals", "sample_tag"))))); + final RestCompositeConditionDefinitionModel compositeCondition = rulesUtils.createCompositeCondition( + List.of(rulesUtils.createCompositeCondition(false, List.of(rulesUtils.createSimpleCondition("tag", "equals", "sample_tag"))))); rule.setConditions(compositeCondition); final RestRuleModel updatedRule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -365,8 +355,8 @@ public class UpdateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void updateRuleRemoveAllConditions() { - final RestRuleModel ruleModelWithInitialValues = createRuleModelWithModifiedValues(); - ruleModelWithInitialValues.setConditions(createVariousConditions()); + final RestRuleModel ruleModelWithInitialValues = rulesUtils.createRuleModelWithModifiedValues(); + ruleModelWithInitialValues.setConditions(rulesUtils.createVariousConditions()); final RestRuleModel rule = createAndSaveRule(ruleModelWithInitialValues); STEP("Try to update the rule and remove all conditions."); @@ -384,13 +374,13 @@ public class UpdateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void updateRuleWithInvalidCategoryInConditionAndFail() { - final RestRuleModel ruleModelWithInitialValues = createRuleModelWithModifiedValues(); - ruleModelWithInitialValues.setConditions(createVariousConditions()); + final RestRuleModel ruleModelWithInitialValues = rulesUtils.createRuleModelWithModifiedValues(); + ruleModelWithInitialValues.setConditions(rulesUtils.createVariousConditions()); final RestRuleModel rule = createAndSaveRule(ruleModelWithInitialValues); STEP("Try to update the rule with invalid condition."); - final RestCompositeConditionDefinitionModel conditions = createCompositeCondition( - List.of(createCompositeCondition(!INVERTED, List.of(createSimpleCondition("category", "equals", "fake-category-id"))))); + final RestCompositeConditionDefinitionModel conditions = rulesUtils.createCompositeCondition( + List.of(rulesUtils.createCompositeCondition(!INVERTED, List.of(rulesUtils.createSimpleCondition("category", "equals", "fake-category-id"))))); rule.setConditions(conditions); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -404,13 +394,13 @@ public class UpdateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void updateRuleWithConditionWithoutComparatorAndFail() { - final RestRuleModel ruleModelWithInitialValues = createRuleModelWithModifiedValues(); - ruleModelWithInitialValues.setConditions(createVariousConditions()); + final RestRuleModel ruleModelWithInitialValues = rulesUtils.createRuleModelWithModifiedValues(); + ruleModelWithInitialValues.setConditions(rulesUtils.createVariousConditions()); final RestRuleModel rule = createAndSaveRule(ruleModelWithInitialValues); STEP("Try to update the rule with invalid condition (null comparator when required non-null)."); - final RestCompositeConditionDefinitionModel conditions = createCompositeCondition( - List.of(createCompositeCondition(!INVERTED, List.of(createSimpleCondition("size", null, "65500"))))); + final RestCompositeConditionDefinitionModel conditions = rulesUtils.createCompositeCondition( + List.of(rulesUtils.createCompositeCondition(!INVERTED, List.of(rulesUtils.createSimpleCondition("size", null, "65500"))))); rule.setConditions(conditions); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -424,13 +414,13 @@ public class UpdateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void updateRuleWithConditionWithoutFieldAndFail() { - final RestRuleModel ruleModelWithInitialValues = createRuleModelWithModifiedValues(); - ruleModelWithInitialValues.setConditions(createVariousConditions()); + final RestRuleModel ruleModelWithInitialValues = rulesUtils.createRuleModelWithModifiedValues(); + ruleModelWithInitialValues.setConditions(rulesUtils.createVariousConditions()); final RestRuleModel rule = createAndSaveRule(ruleModelWithInitialValues); STEP("Try to update the rule with invalid condition (null field)."); - final RestCompositeConditionDefinitionModel conditions = createCompositeCondition( - List.of(createCompositeCondition(!INVERTED, List.of(createSimpleCondition(null, "greater_than", "65500"))))); + final RestCompositeConditionDefinitionModel conditions = rulesUtils.createCompositeCondition( + List.of(rulesUtils.createCompositeCondition(!INVERTED, List.of(rulesUtils.createSimpleCondition(null, "greater_than", "65500"))))); rule.setConditions(conditions); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -444,13 +434,13 @@ public class UpdateRulesTests extends RestTest @Test (groups = { TestGroup.REST_API, TestGroup.RULES, TestGroup.SANITY }) public void updateRuleWithConditionWithoutParamValueAndFail() { - final RestRuleModel ruleModelWithInitialValues = createRuleModelWithModifiedValues(); - ruleModelWithInitialValues.setConditions(createVariousConditions()); + final RestRuleModel ruleModelWithInitialValues = rulesUtils.createRuleModelWithModifiedValues(); + ruleModelWithInitialValues.setConditions(rulesUtils.createVariousConditions()); final RestRuleModel rule = createAndSaveRule(ruleModelWithInitialValues); STEP("Try to update the rule with invalid condition (null parameter)."); - final RestCompositeConditionDefinitionModel conditions = createCompositeCondition( - List.of(createCompositeCondition(!INVERTED, List.of(createSimpleCondition("size", "greater_than", ""))))); + final RestCompositeConditionDefinitionModel conditions = rulesUtils.createCompositeCondition( + List.of(rulesUtils.createCompositeCondition(!INVERTED, List.of(rulesUtils.createSimpleCondition("size", "greater_than", ""))))); rule.setConditions(conditions); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -466,14 +456,14 @@ public class UpdateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void updateRuleAddActions() { - final RestRuleModel rule = createAndSaveRule(createRuleModelWithModifiedValues()); + final RestRuleModel rule = createAndSaveRule(rulesUtils.createRuleModelWithModifiedValues()); STEP("Try to update the rule by adding several actions"); final Map copyParams = - Map.of("destination-folder", "dummy-folder-node", "deep-copy", true); - final RestActionBodyExecTemplateModel copyAction = createCustomActionModel("copy", copyParams); + Map.of("destination-folder", rulesUtils.getCopyDestinationFolder().getNodeRef(), "deep-copy", true); + final RestActionBodyExecTemplateModel copyAction = rulesUtils.createCustomActionModel("copy", copyParams); final Map addAspectParams = Map.of("aspect-name", "cm:taggable"); - final RestActionBodyExecTemplateModel addAspectAction = createCustomActionModel("add-features", addAspectParams); + final RestActionBodyExecTemplateModel addAspectAction = rulesUtils.createCustomActionModel("add-features", addAspectParams); rule.setActions(Arrays.asList(copyAction, addAspectAction)); final RestRuleModel updatedRule = restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -490,14 +480,13 @@ public class UpdateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void updateRuleAddCheckoutActionForOutboundShouldFail() { - final RestRuleModel rule = createAndSaveRule(createRuleModelWithModifiedValues()); + final RestRuleModel rule = createAndSaveRule(rulesUtils.createRuleModelWithModifiedValues()); STEP("Try to update the rule by adding checkout action"); 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"); + Map.of("destination-folder", rulesUtils.getCheckOutDestinationFolder().getNodeRef(), "assoc-name", "cm:checkout", + "assoc-type", "cm:contains"); + final RestActionBodyExecTemplateModel checkOutAction = rulesUtils.createCustomActionModel("check-out", checkOutParams); rule.setActions(List.of(checkOutAction)); restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() @@ -514,7 +503,7 @@ public class UpdateRulesTests extends RestTest @Test(groups = {TestGroup.REST_API, TestGroup.RULES}) public void updateRuleAddActionWithInvalidParamShouldFail() { - final RestRuleModel rule = createAndSaveRule(createRuleModelWithModifiedValues()); + final RestRuleModel rule = createAndSaveRule(rulesUtils.createRuleModelWithModifiedValues()); STEP("Try to update the rule by adding action with invalid parameter (non-existing namespace in value)"); final RestActionBodyExecTemplateModel action = new RestActionBodyExecTemplateModel(); @@ -539,7 +528,7 @@ public class UpdateRulesTests extends RestTest { STEP("Using admin create a rule with a private action."); RestRuleModel rule = restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() - .createSingleRule(createRuleWithPrivateAction()); + .createSingleRule(rulesUtils.createRuleWithPrivateAction()); STEP("Try to update the rule with a normal user."); rule.setName("Updated name"); @@ -556,7 +545,7 @@ public class UpdateRulesTests extends RestTest { STEP("Using admin create a rule with a private action."); RestRuleModel rule = restClient.authenticateUser(dataUser.getAdminUser()).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() - .createSingleRule(createRuleWithPrivateAction()); + .createSingleRule(rulesUtils.createRuleWithPrivateAction()); STEP("Try to update the rule with the admin user."); rule.setName("Updated name"); @@ -569,7 +558,7 @@ public class UpdateRulesTests extends RestTest private RestRuleModel createAndSaveRule(String name) { - return createAndSaveRule(name, List.of(createAddAudioAspectAction())); + return createAndSaveRule(name, List.of(rulesUtils.createAddAudioAspectAction())); } /** @@ -582,7 +571,7 @@ public class UpdateRulesTests extends RestTest private RestRuleModel createAndSaveRule(String name, List restActionModels) { STEP("Create a rule called " + name + ", containing actions: " + restActionModels); - RestRuleModel ruleModel = createRuleModel(name, restActionModels); + RestRuleModel ruleModel = rulesUtils.createRuleModel(name, restActionModels); return restClient.authenticateUser(user).withCoreAPI().usingNode(ruleFolder).usingDefaultRuleSet() .createSingleRule(ruleModel); }