From 02fd1c6e5eee41ef4abac7680223542c4606bf96 Mon Sep 17 00:00:00 2001 From: cagache Date: Wed, 13 Mar 2019 12:23:25 +0200 Subject: [PATCH 1/5] RM-6786 Create test to check that a file that has a record version can be declared as record --- .../community/records/DeclareRecordTests.java | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java new file mode 100644 index 0000000000..6f714217ad --- /dev/null +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java @@ -0,0 +1,73 @@ +/* + * #%L + * Alfresco Records Management Module + * %% + * Copyright (C) 2005 - 2019 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 . + * #L% + */ +package org.alfresco.rest.rm.community.records; + +import static org.alfresco.utility.report.log.Step.STEP; + +import org.alfresco.dataprep.CMISUtil; +import org.alfresco.rest.rm.community.base.BaseRMRestTest; +import org.alfresco.rest.v0.RecordsAPI; +import org.alfresco.test.AlfrescoTest; +import org.alfresco.utility.model.FileModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.testng.annotations.Test; + +/** + * Declare records tests + * + * @author Claudia Agache + * @since 2.7 + */ +public class DeclareRecordTests extends BaseRMRestTest +{ + @Autowired + RecordsAPI recordsAPI; + + /** + *
+     * Given a file that has version declared as record
+     * When the file is declared as record
+     * Then the action is successful
+     * 
+ */ + @Test (description = "Declaring as record a file that has a version declared as record is successful") + @AlfrescoTest (jira = "RM-6786") + public void declareAsRecordAFileWithARecordVersion() throws Exception + { + STEP("Create a file."); + testSite = dataSite.usingAdmin().createPublicRandomSite(); + FileModel testFile = dataContent.usingSite(testSite).createContent(CMISUtil.DocumentType.TEXT_PLAIN); + + STEP("Declare file version as record and check that record is successfully created."); + recordsAPI.declareDocumentVersionAsRecord(getAdminUser().getUsername(), getAdminUser().getPassword(), testSite.getId(), + testFile.getName()); + + STEP("Declare file as record and check that record is successfully created."); + recordsAPI.declareDocumentAsRecord(getAdminUser().getUsername(), getAdminUser().getPassword(), testSite.getId(), + testFile.getName()); + } +} From 86a954f36e291c05d2f39c4c2859699728cf4f38 Mon Sep 17 00:00:00 2001 From: cagache Date: Wed, 13 Mar 2019 15:54:15 +0200 Subject: [PATCH 2/5] added cleanup method --- .../rest/rm/community/records/DeclareRecordTests.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java index 6f714217ad..245d905969 100644 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java @@ -34,6 +34,7 @@ import org.alfresco.rest.v0.RecordsAPI; import org.alfresco.test.AlfrescoTest; import org.alfresco.utility.model.FileModel; import org.springframework.beans.factory.annotation.Autowired; +import org.testng.annotations.AfterClass; import org.testng.annotations.Test; /** @@ -70,4 +71,11 @@ public class DeclareRecordTests extends BaseRMRestTest recordsAPI.declareDocumentAsRecord(getAdminUser().getUsername(), getAdminUser().getPassword(), testSite.getId(), testFile.getName()); } + + @AfterClass + public void cleanUp() + { + STEP("Clean up."); + dataSite.deleteSite(testSite); + } } From 09de772516852d196853bc68a99e07f817afc9c5 Mon Sep 17 00:00:00 2001 From: cagache Date: Thu, 14 Mar 2019 09:19:23 +0200 Subject: [PATCH 3/5] code review comments --- .../files/DeclareDocumentAsRecordTests.java | 27 +++++++ .../community/records/DeclareRecordTests.java | 81 ------------------- 2 files changed, 27 insertions(+), 81 deletions(-) delete mode 100644 rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/files/DeclareDocumentAsRecordTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/files/DeclareDocumentAsRecordTests.java index f59ed50108..077703bca5 100644 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/files/DeclareDocumentAsRecordTests.java +++ b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/files/DeclareDocumentAsRecordTests.java @@ -28,6 +28,7 @@ package org.alfresco.rest.rm.community.files; import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentAlias.UNFILED_RECORDS_CONTAINER_ALIAS; import static org.alfresco.rest.rm.community.model.fileplancomponents.FilePlanComponentType.NON_ELECTRONIC_RECORD_TYPE; +import static org.alfresco.utility.report.log.Step.STEP; import static org.springframework.http.HttpStatus.CREATED; import static org.springframework.http.HttpStatus.FORBIDDEN; import static org.springframework.http.HttpStatus.UNPROCESSABLE_ENTITY; @@ -45,6 +46,7 @@ import org.alfresco.rest.rm.community.model.record.Record; import org.alfresco.rest.rm.community.model.record.RecordProperties; import org.alfresco.rest.rm.community.model.unfiledcontainer.UnfiledContainerChildEntry; import org.alfresco.rest.rm.community.requests.gscore.api.UnfiledContainerAPI; +import org.alfresco.rest.v0.RecordsAPI; import org.alfresco.test.AlfrescoTest; import org.alfresco.utility.constants.UserRole; import org.alfresco.utility.model.FileModel; @@ -54,6 +56,7 @@ import org.alfresco.utility.model.UserModel; import org.apache.chemistry.opencmis.client.api.Document; import org.apache.chemistry.opencmis.client.api.SecondaryType; import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; @@ -69,6 +72,9 @@ public class DeclareDocumentAsRecordTests extends BaseRMRestTest private SiteModel testSite; private FolderModel testFolder; + @Autowired + RecordsAPI recordsAPI; + @BeforeClass(alwaysRun=true) public void declareDocumentAsRecordSetup() throws Exception { @@ -239,6 +245,27 @@ public class DeclareDocumentAsRecordTests extends BaseRMRestTest assertStatusCode(UNPROCESSABLE_ENTITY); } + /** + * Given a file that has version declared as record + * When the file is declared as record + * Then the action is successful + */ + @Test (description = "Declaring as record a file that already has its version declared as record is successful") + @AlfrescoTest (jira = "RM-6786") + public void declareAsRecordAFileWithARecordVersion() throws Exception + { + STEP("Create a file."); + FileModel testFile = dataContent.usingSite(testSite).createContent(CMISUtil.DocumentType.TEXT_PLAIN); + + STEP("Declare file version as record and check that record is successfully created."); + recordsAPI.declareDocumentVersionAsRecord(getAdminUser().getUsername(), getAdminUser().getPassword(), testSite.getId(), + testFile.getName()); + + STEP("Declare file as record and check that record is successfully created."); + getRestAPIFactory().getFilesAPI().declareAsRecord(testFile.getNodeRefWithoutVersion()); + assertStatusCode(CREATED); + } + // @Test(description = "Create 500 documents and declare them ass records concurently.") // public void declare500DocumentsAsRecordsConcurrently() throws Exception // { diff --git a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java b/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java deleted file mode 100644 index 245d905969..0000000000 --- a/rm-automation/rm-automation-community-rest-api/src/test/java/org/alfresco/rest/rm/community/records/DeclareRecordTests.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * #%L - * Alfresco Records Management Module - * %% - * Copyright (C) 2005 - 2019 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 . - * #L% - */ -package org.alfresco.rest.rm.community.records; - -import static org.alfresco.utility.report.log.Step.STEP; - -import org.alfresco.dataprep.CMISUtil; -import org.alfresco.rest.rm.community.base.BaseRMRestTest; -import org.alfresco.rest.v0.RecordsAPI; -import org.alfresco.test.AlfrescoTest; -import org.alfresco.utility.model.FileModel; -import org.springframework.beans.factory.annotation.Autowired; -import org.testng.annotations.AfterClass; -import org.testng.annotations.Test; - -/** - * Declare records tests - * - * @author Claudia Agache - * @since 2.7 - */ -public class DeclareRecordTests extends BaseRMRestTest -{ - @Autowired - RecordsAPI recordsAPI; - - /** - *
-     * Given a file that has version declared as record
-     * When the file is declared as record
-     * Then the action is successful
-     * 
- */ - @Test (description = "Declaring as record a file that has a version declared as record is successful") - @AlfrescoTest (jira = "RM-6786") - public void declareAsRecordAFileWithARecordVersion() throws Exception - { - STEP("Create a file."); - testSite = dataSite.usingAdmin().createPublicRandomSite(); - FileModel testFile = dataContent.usingSite(testSite).createContent(CMISUtil.DocumentType.TEXT_PLAIN); - - STEP("Declare file version as record and check that record is successfully created."); - recordsAPI.declareDocumentVersionAsRecord(getAdminUser().getUsername(), getAdminUser().getPassword(), testSite.getId(), - testFile.getName()); - - STEP("Declare file as record and check that record is successfully created."); - recordsAPI.declareDocumentAsRecord(getAdminUser().getUsername(), getAdminUser().getPassword(), testSite.getId(), - testFile.getName()); - } - - @AfterClass - public void cleanUp() - { - STEP("Clean up."); - dataSite.deleteSite(testSite); - } -} From 2f15cc786ec71900f1288d7ec838999b053b98c4 Mon Sep 17 00:00:00 2001 From: rlucanu Date: Thu, 14 Mar 2019 09:46:29 +0200 Subject: [PATCH 4/5] RM-6786 Added check for records --- .../model/rma/aspect/VersionRecordAspect.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/VersionRecordAspect.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/VersionRecordAspect.java index f4712a8995..cc4851a39e 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/VersionRecordAspect.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/VersionRecordAspect.java @@ -30,6 +30,7 @@ package org.alfresco.module.org_alfresco_module_rm.model.rma.aspect; import java.util.Set; import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean; +import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.module.org_alfresco_module_rm.relationship.Relationship; import org.alfresco.module.org_alfresco_module_rm.relationship.RelationshipService; import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionService; @@ -143,7 +144,11 @@ public class VersionRecordAspect extends BaseBehaviourBean @Behaviour(kind = BehaviourKind.CLASS, notificationFrequency = NotificationFrequency.FIRST_EVENT) public void beforeAddAspect(NodeRef nodeRef, QName qName) { - //create a new content URL for the version record - createNewContentURL(nodeRef); + // if the node is a record the behaviour shouldn't be triggered + if (!nodeService.hasAspect(nodeRef, RecordsManagementModel.ASPECT_RECORD)) + { + //create a new content URL for the version record + createNewContentURL(nodeRef); + } } } From 86ae0f726a091cc4946be1569094f81898641d0f Mon Sep 17 00:00:00 2001 From: rlucanu Date: Thu, 14 Mar 2019 16:24:50 +0200 Subject: [PATCH 5/5] RM-6786 another fix --- .../model/rma/aspect/VersionRecordAspect.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/VersionRecordAspect.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/VersionRecordAspect.java index cc4851a39e..efab5cc2ea 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/VersionRecordAspect.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/aspect/VersionRecordAspect.java @@ -144,8 +144,8 @@ public class VersionRecordAspect extends BaseBehaviourBean @Behaviour(kind = BehaviourKind.CLASS, notificationFrequency = NotificationFrequency.FIRST_EVENT) public void beforeAddAspect(NodeRef nodeRef, QName qName) { - // if the node is a record the behaviour shouldn't be triggered - if (!nodeService.hasAspect(nodeRef, RecordsManagementModel.ASPECT_RECORD)) + // if the node is the originating one the behaviour shouldn't be triggered + if (!nodeService.hasAspect(nodeRef, RecordsManagementModel.ASPECT_RECORD_ORIGINATING_DETAILS)) { //create a new content URL for the version record createNewContentURL(nodeRef);