mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merge remote-tracking branch 'origin/feature/APPS-1722' into feature/APPS-1722
This commit is contained in:
@@ -0,0 +1,113 @@
|
|||||||
|
/*
|
||||||
|
* #%L
|
||||||
|
* Alfresco Records Management Module
|
||||||
|
* %%
|
||||||
|
* Copyright (C) 2005 - 2022 Alfresco Software Limited
|
||||||
|
* %%
|
||||||
|
* This file is part of the Alfresco software.
|
||||||
|
* -
|
||||||
|
* If the software was purchased under a paid Alfresco license, the terms of
|
||||||
|
* the paid license agreement will prevail. Otherwise, the software is
|
||||||
|
* provided under the following open source license terms:
|
||||||
|
* -
|
||||||
|
* Alfresco is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
* -
|
||||||
|
* Alfresco is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
* -
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
* #L%
|
||||||
|
*/
|
||||||
|
package org.alfresco.rest.rm.community.rules;
|
||||||
|
|
||||||
|
import org.alfresco.rest.rm.community.base.BaseRMRestTest;
|
||||||
|
import org.alfresco.rest.rm.community.model.record.Record;
|
||||||
|
import org.alfresco.rest.rm.community.model.recordcategory.RecordCategory;
|
||||||
|
import org.alfresco.rest.rm.community.model.recordcategory.RecordCategoryChild;
|
||||||
|
import org.alfresco.rest.rm.community.model.rules.ActionsOnRule;
|
||||||
|
import org.alfresco.rest.rm.community.model.rules.RuleDefinition;
|
||||||
|
import org.alfresco.rest.rm.community.requests.gscore.api.RecordFolderAPI;
|
||||||
|
import org.alfresco.rest.rm.community.requests.gscore.api.RecordsAPI;
|
||||||
|
import org.alfresco.rest.rm.community.smoke.CreateCategoriesTests;
|
||||||
|
import org.alfresco.rest.v0.RulesAPI;
|
||||||
|
import org.alfresco.test.AlfrescoTest;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import static org.alfresco.rest.core.v0.BaseAPI.NODE_PREFIX;
|
||||||
|
import static org.alfresco.rest.rm.community.base.TestData.ELECTRONIC_RECORD_NAME;
|
||||||
|
import static org.alfresco.rest.rm.community.base.TestData.NONELECTRONIC_RECORD_NAME;
|
||||||
|
import static org.alfresco.rest.rm.community.util.CommonTestUtils.generateTestPrefix;
|
||||||
|
import static org.alfresco.rest.rm.community.utils.CoreUtil.createBodyForMoveCopy;
|
||||||
|
import static org.alfresco.rest.rm.community.utils.CoreUtil.toContentModel;
|
||||||
|
import static org.alfresco.rest.rm.community.utils.FilePlanComponentsUtil.*;
|
||||||
|
import static org.alfresco.utility.data.RandomData.getRandomName;
|
||||||
|
import static org.alfresco.utility.report.log.Step.STEP;
|
||||||
|
import static org.springframework.http.HttpStatus.*;
|
||||||
|
|
||||||
|
public class CopyToRuleOnFoldersTest extends BaseRMRestTest {
|
||||||
|
|
||||||
|
private RecordCategory category;
|
||||||
|
private RecordCategoryChild folder1,folder2;
|
||||||
|
private final static String title = "Run in background";
|
||||||
|
private final String TEST_PREFIX = generateTestPrefix(CopyToRuleOnFoldersTest.class);
|
||||||
|
private final String RM_ADMIN = TEST_PREFIX + "rm_admin";
|
||||||
|
private final String electronicRecord = TEST_PREFIX + "record_electronic_for_copyTo";
|
||||||
|
private final String nonElectronicRecord = TEST_PREFIX + "record_non_electronic_for_copyTo";
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RulesAPI rulesAPI;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@AlfrescoTest(jira = "RM-2994")
|
||||||
|
public void copyToRuleOnFoldersTest()
|
||||||
|
{
|
||||||
|
|
||||||
|
RuleDefinition ruleDefinition = RuleDefinition.createNewRule().title("name").description("description1")
|
||||||
|
.runInBackground(true).title(title)
|
||||||
|
.actions(Collections.singletonList(ActionsOnRule.COPY_TO.getActionValue()));
|
||||||
|
|
||||||
|
|
||||||
|
STEP("Create the RM site if doesn't exist");
|
||||||
|
createRMSiteIfNotExists();
|
||||||
|
|
||||||
|
STEP("Create record categories and record folders");
|
||||||
|
category= createRootCategory(getRandomName("recordCategory"));
|
||||||
|
String folder1 = createCategoryFolderInFilePlan().getId();
|
||||||
|
String folder2 = createCategoryFolderInFilePlan().getId();
|
||||||
|
|
||||||
|
// create a rule on folder
|
||||||
|
rulesAPI.createRule(getAdminUser().getUsername(), getAdminUser().getPassword(), NODE_PREFIX + folder1, ruleDefinition);
|
||||||
|
|
||||||
|
// create electronic record in record folder
|
||||||
|
String electronicRecordId = createElectronicRecord(folder1, ELECTRONIC_RECORD_NAME).getId();
|
||||||
|
assertStatusCode(CREATED);
|
||||||
|
|
||||||
|
// create non-electronic record in record folder
|
||||||
|
String nonElectronicRecord = createElectronicRecord(folder1, NONELECTRONIC_RECORD_NAME).getId();
|
||||||
|
assertStatusCode(CREATED);
|
||||||
|
|
||||||
|
// Move the electronic and non-electronic records from "Category with records"> "Folder with rule"
|
||||||
|
// to "Copy Category with records" > "Folder with rule"
|
||||||
|
getRestAPIFactory().getNodeAPI(toContentModel(folder1)).copy(createBodyForMoveCopy(category.getId()));
|
||||||
|
getRestAPIFactory().getNodeAPI(toContentModel( electronicRecord)).move(createBodyForMoveCopy(folder2));
|
||||||
|
getRestAPIFactory().getNodeAPI(toContentModel( nonElectronicRecord)).move(createBodyForMoveCopy(folder2));
|
||||||
|
|
||||||
|
RecordsAPI recordsAPI = getRestAPIFactory().getRecordsAPI();
|
||||||
|
recordsAPI.deleteRecord(electronicRecord);
|
||||||
|
recordsAPI.deleteRecord(nonElectronicRecord);
|
||||||
|
assertStatusCode(NO_CONTENT);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,167 @@
|
|||||||
|
package org.alfresco.rest.rm.community.rules;
|
||||||
|
|
||||||
|
import org.alfresco.rest.model.RestNodeModel;
|
||||||
|
import org.alfresco.rest.rm.community.base.BaseRMRestTest;
|
||||||
|
import org.alfresco.rest.rm.community.model.record.Record;
|
||||||
|
import org.alfresco.rest.rm.community.model.recordcategory.RecordCategory;
|
||||||
|
import org.alfresco.rest.rm.community.model.recordcategory.RecordCategoryChild;
|
||||||
|
import org.alfresco.rest.rm.community.model.rules.ActionsOnRule;
|
||||||
|
import org.alfresco.rest.rm.community.model.rules.RuleDefinition;
|
||||||
|
import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainer;
|
||||||
|
import org.alfresco.rest.rm.community.model.user.UserRoles;
|
||||||
|
import org.alfresco.rest.rm.community.requests.gscore.api.RecordFolderAPI;
|
||||||
|
import org.alfresco.rest.v0.HoldsAPI;
|
||||||
|
import org.alfresco.rest.v0.RecordsAPI;
|
||||||
|
import org.alfresco.rest.v0.RulesAPI;
|
||||||
|
import org.alfresco.rest.v0.service.RoleService;
|
||||||
|
import org.alfresco.utility.model.UserModel;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.testng.annotations.BeforeClass;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import static java.lang.Integer.MAX_VALUE;
|
||||||
|
import static org.alfresco.rest.core.v0.BaseAPI.NODE_PREFIX;
|
||||||
|
import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentAlias.UNFILED_RECORDS_CONTAINER_ALIAS;
|
||||||
|
import static org.alfresco.rest.rm.community.util.CommonTestUtils.generateTestPrefix;
|
||||||
|
import static org.alfresco.rest.rm.community.utils.CoreUtil.createBodyForMoveCopy;
|
||||||
|
import static org.alfresco.rest.rm.community.utils.CoreUtil.toContentModel;
|
||||||
|
import static org.alfresco.rest.rm.community.utils.FilePlanComponentsUtil.*;
|
||||||
|
import static org.alfresco.utility.data.RandomData.getRandomAlphanumeric;
|
||||||
|
import static org.alfresco.utility.data.RandomData.getRandomName;
|
||||||
|
import static org.alfresco.utility.report.log.Step.STEP;
|
||||||
|
import static org.springframework.http.HttpStatus.CREATED;
|
||||||
|
import static org.springframework.http.HttpStatus.OK;
|
||||||
|
import static org.testng.Assert.assertNotNull;
|
||||||
|
|
||||||
|
|
||||||
|
public class MoveToRuleOnFoldersTest extends BaseRMRestTest{
|
||||||
|
|
||||||
|
private String unfiledRecordsNodeRef;
|
||||||
|
|
||||||
|
private String recordFolder2;
|
||||||
|
private String nonElectronicId;
|
||||||
|
|
||||||
|
private Record electronicRecord;
|
||||||
|
private UnfiledContainer unfiledContainer;
|
||||||
|
|
||||||
|
private UserModel rmAdmin;
|
||||||
|
private RecordCategory RecordCategoryOne;
|
||||||
|
private RecordCategoryChild recordFolder;
|
||||||
|
public static final String RECORD_FOLDER_ONE = "record-folder-one";
|
||||||
|
private final String TEST_PREFIX = generateTestPrefix(MoveToRuleOnFoldersTest.class);
|
||||||
|
// private final String RM_ADMIN = TEST_PREFIX + "rm_admin";
|
||||||
|
private final String RECORD_CATEGORY_ONE = TEST_PREFIX + "category";
|
||||||
|
|
||||||
|
private final String recordName = "Test record";
|
||||||
|
private final String recordTitle = recordName + " title";
|
||||||
|
private final String recordDescription = recordName + " description";
|
||||||
|
@Autowired
|
||||||
|
private RulesAPI rulesAPI;
|
||||||
|
@Autowired
|
||||||
|
private HoldsAPI holdsAPI;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoleService roleService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RecordsAPI recordsAPI;
|
||||||
|
|
||||||
|
@BeforeClass(alwaysRun = true)
|
||||||
|
public void precondition()
|
||||||
|
{
|
||||||
|
//create RM site
|
||||||
|
createRMSiteIfNotExists();
|
||||||
|
rmAdmin = roleService.createUserWithRMRole(UserRoles.ROLE_RM_ADMIN.roleId);
|
||||||
|
/**
|
||||||
|
* Removes rules on File Plan and Unfiled Records
|
||||||
|
*/
|
||||||
|
final String holdName = TEST_PREFIX + "holdToBeDeleted";
|
||||||
|
holdsAPI.deleteHold(rmAdmin.getUsername(), rmAdmin.getPassword(), holdName);
|
||||||
|
unfiledContainer = getRestAPIFactory().getUnfiledContainersAPI().getUnfiledContainer(UNFILED_RECORDS_CONTAINER_ALIAS);
|
||||||
|
|
||||||
|
unfiledRecordsNodeRef = NODE_PREFIX + unfiledContainer.getId();
|
||||||
|
rulesAPI.deleteAllRulesOnContainer(getDataUser().usingAdmin().getAdminUser().getUsername(),
|
||||||
|
getDataUser().usingAdmin().getAdminUser().getPassword(), unfiledRecordsNodeRef);
|
||||||
|
|
||||||
|
//create root category, create folders , add electronic and non electronic records
|
||||||
|
RecordCategoryOne = createRootCategory(RECORD_CATEGORY_ONE);
|
||||||
|
String recordFolder1 = createRecordFolder(RecordCategoryOne.getId(), getRandomName("recFolder")).getId();
|
||||||
|
RecordFolderAPI recordFolderAPI = getRestAPIFactory().getRecordFolderAPI();
|
||||||
|
|
||||||
|
electronicRecord = recordFolderAPI.createRecord(createElectronicRecordModel(), recordFolder1, getFile(IMAGE_FILE));
|
||||||
|
STEP("Check the electronic record has been created");
|
||||||
|
assertStatusCode(CREATED);
|
||||||
|
|
||||||
|
// Generate update metadata
|
||||||
|
String newName = getModifiedPropertyValue(electronicRecord.getName());
|
||||||
|
String newTitle = getModifiedPropertyValue(electronicRecord.getProperties().getTitle());
|
||||||
|
String newDescription = getModifiedPropertyValue(electronicRecord.getProperties().getDescription());
|
||||||
|
|
||||||
|
// Update record:EDIT electronic and non electronic metadata [PENDING]
|
||||||
|
|
||||||
|
// recordsAPI.updateRecord(createRecordModel(newName, newDescription, newTitle), electronicRecord.getId());
|
||||||
|
// assertStatusCode(OK);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//create non electronic record
|
||||||
|
STEP("Create a non-electronic record by completing some of the fields");
|
||||||
|
// Use these properties for non-electronic record to be created
|
||||||
|
String title = "Title " + getRandomAlphanumeric();
|
||||||
|
String description = "Description " + getRandomAlphanumeric();
|
||||||
|
String box = "Box "+ getRandomAlphanumeric();
|
||||||
|
String file = "File " + getRandomAlphanumeric();
|
||||||
|
String shelf = "Shelf " + getRandomAlphanumeric();
|
||||||
|
String storageLocation = "Storage Location " + getRandomAlphanumeric();
|
||||||
|
String name = "Record " + getRandomAlphanumeric();
|
||||||
|
Random random = new Random();
|
||||||
|
Integer numberOfCopies = random.nextInt(MAX_VALUE);
|
||||||
|
Integer physicalSize = random.nextInt(MAX_VALUE);
|
||||||
|
|
||||||
|
// Set values of all available properties for the non electronic records
|
||||||
|
Record nonElectrinicRecordModel = createFullNonElectronicRecordModel(name, title, description, box, file, shelf, storageLocation, numberOfCopies, physicalSize);
|
||||||
|
// Create non-electronic record
|
||||||
|
nonElectronicId = recordFolderAPI.createRecord(nonElectrinicRecordModel, recordFolder1).getId();
|
||||||
|
// STEP("Check the non-electronic record has been created");
|
||||||
|
assertStatusCode(CREATED);
|
||||||
|
|
||||||
|
// move the electronic and nonelectronic record from folder1 to folder2
|
||||||
|
STEP("Create the record folder2 inside the rootCategory");
|
||||||
|
recordFolder2 = createCategoryFolderInFilePlan().getId();
|
||||||
|
|
||||||
|
// //create a rule for completing record for folder 2
|
||||||
|
|
||||||
|
RuleDefinition ruleDefinition = RuleDefinition.createNewRule().title("name").description("description1")
|
||||||
|
.applyToChildren(true).title(title)
|
||||||
|
.actions(Collections.singletonList(ActionsOnRule.COMPLETE_RECORD.getActionValue()));
|
||||||
|
rulesAPI.createRule(getAdminUser().getUsername(), getAdminUser().getPassword(), NODE_PREFIX +recordFolder2, ruleDefinition);
|
||||||
|
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void MoveToRuleFoldersTest()
|
||||||
|
{ STEP("Move electronic record from folder1 to folder2");
|
||||||
|
RestNodeModel electronicDocRestNodeModel = getRestAPIFactory()
|
||||||
|
.getNodeAPI(toContentModel(electronicRecord.getId()))
|
||||||
|
.move(createBodyForMoveCopy(recordFolder2));
|
||||||
|
assertStatusCode(OK);
|
||||||
|
|
||||||
|
STEP("Move non-electronic record from folder1 to folder2");
|
||||||
|
|
||||||
|
RestNodeModel nonelectronicDocRestNodeModel = getRestAPIFactory()
|
||||||
|
.getNodeAPI(toContentModel(nonElectronicId))
|
||||||
|
.move(createBodyForMoveCopy(recordFolder2));
|
||||||
|
assertStatusCode(OK);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getModifiedPropertyValue(String originalValue) {
|
||||||
|
/* to be used to append to modifications */
|
||||||
|
String MODIFIED_PREFIX = "modified_";
|
||||||
|
return MODIFIED_PREFIX + originalValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user