diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteType.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteType.java index 753d21c9f3..21451873bd 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteType.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteType.java @@ -40,7 +40,6 @@ import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService; import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean; import org.alfresco.module.org_alfresco_module_rm.search.RecordsManagementSearchService; import org.alfresco.repo.node.NodeServicePolicies; -import org.alfresco.repo.node.integrity.IntegrityException; import org.alfresco.repo.policy.Behaviour.NotificationFrequency; import org.alfresco.repo.policy.annotation.Behaviour; import org.alfresco.repo.policy.annotation.BehaviourBean; @@ -59,7 +58,6 @@ import org.alfresco.service.cmr.site.SiteVisibility; import org.alfresco.service.namespace.QName; import org.alfresco.util.ParameterCheck; import org.alfresco.util.PropertyMap; -import org.springframework.extensions.surf.util.I18NUtil; import com.google.common.collect.Sets; @@ -316,7 +314,8 @@ public class RmSiteType extends BaseBehaviourBean /** * Add the limitation of creating only one rma:filePlan or one dod:filePlan depending on the type of rm site. - * Also added the limitation of crating two cm:folder type under rm site. + * Let multiple cm:folder type be created under rm site. + * * * Other than this nothing can be created under rm site nodeRef * @@ -344,25 +343,6 @@ public class RmSiteType extends BaseBehaviourBean }); } - /** - * Overridden this because in this case we need to have multiple cm:folder types but not more than two of them. - * The two mentioned folders are created when rm site is created and one of them is Saved Searches and the other surf-config folder. - After that creation of cm:folder should not be allowed under rm site node - * - */ - @Override - protected void validateNewChildAssociation(NodeRef parent, NodeRef child, List acceptedUniqueChildType, - List acceptedMultipleChildType) throws IntegrityException - { - super.validateNewChildAssociation(parent, child, acceptedUniqueChildType, acceptedMultipleChildType); - - // check the user is not trying to create more than 2 folders that are created by default. - if(nodeService.getChildAssocs(parent, Sets.newHashSet(ContentModel.TYPE_FOLDER)).size() > 2) - { - throw new IntegrityException(I18NUtil.getMessage(MULTIPLE_CHILDREN_TYPE_ERROR, ContentModel.TYPE_FOLDER), null); - } - } - @Behaviour ( kind = BehaviourKind.CLASS, diff --git a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/issue/MNT19114Test.java b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/issue/MNT19114Test.java new file mode 100644 index 0000000000..a502b01e82 --- /dev/null +++ b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/issue/MNT19114Test.java @@ -0,0 +1,111 @@ +/* + * #%L + * Alfresco Records Management Module + * %% + * Copyright (C) 2005 - 2018 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.module.org_alfresco_module_rm.test.integration.issue; + +import static org.alfresco.repo.site.SiteServiceImpl.getSiteContainer; +import static org.alfresco.util.GUID.generate; + +import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.site.SiteInfo; +import org.alfresco.service.cmr.site.SiteVisibility; + +/** + * Test class for MNT 19114, wiki page can not be created under RM site + */ +public class MNT19114Test extends BaseRMTestCase +{ + public static final String PARENT_NODE = "RMSite"; + public static final String DOCUMENT_LIBRARY_FOLDER_TYPE = "documentLibrary"; + public static final String SURF_CONFIG_FOLDER_TYPE = "surfConfigFolder"; + public static final String WIKI_PAGE_FOLDER_TYPE = "wikiPage"; + + @Override + protected boolean isRMSiteTest() + { + return true; + } + + /** + * Given a RM site and two folder type children + * When creating a third folder type child as a Wiki page + * The page will be created and no exception will be thrown. + */ + public void testCreateWikiPageInRmSite() throws Exception + { + doBehaviourDrivenTest(new BehaviourDrivenTest() + { + NodeRef wikiPage; + + public void given() + { + // Creating a Records Management site + siteService.createSite("rmSite", PARENT_NODE, generate(), generate(), SiteVisibility.PUBLIC, TYPE_RM_SITE); + + // Adding two immediate folder type children + getSiteContainer( + PARENT_NODE, + DOCUMENT_LIBRARY_FOLDER_TYPE, + true, + siteService, + transactionService, + taggingService); + getSiteContainer( + PARENT_NODE, + SURF_CONFIG_FOLDER_TYPE, + true, + siteService, + transactionService, + taggingService); + } + + public void when() throws Exception + { + + wikiPage = getSiteContainer( + PARENT_NODE, + WIKI_PAGE_FOLDER_TYPE, + true, + siteService, + transactionService, + taggingService); + + } + + public void then() throws Exception + { + // Check if the new folder type wiki page has been created + assertEquals(true, nodeService.exists(wikiPage)); + } + + public void after() + { + siteService.deleteSite(PARENT_NODE); + } + }); + } +} diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteTypeUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteTypeUnitTest.java index d7718d00a6..04a3e3a1d7 100644 --- a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteTypeUnitTest.java +++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/model/rma/type/RmSiteTypeUnitTest.java @@ -32,6 +32,8 @@ import static org.mockito.Mockito.when; import java.util.ArrayList; +import com.google.common.collect.Sets; + import org.alfresco.module.org_alfresco_module_rm.dod5015.DOD5015Model; import org.alfresco.module.org_alfresco_module_rm.test.util.AlfMock; import org.alfresco.module.org_alfresco_module_rm.test.util.BaseUnitTest; @@ -49,8 +51,6 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import com.google.common.collect.Sets; - /** * Unit test for RmSiteType * @@ -151,7 +151,7 @@ public class RmSiteTypeUnitTest extends BaseUnitTest implements DOD5015Model * Given that we try to add more than two cm:folder to rm site, * Then IntegrityException is thrown. */ - @Test(expected = IntegrityException.class) + @Test public void testAddMoreThanTwhoFolderTypeToRmSite() { NodeRef rmSiteNodeRef = generateNodeRef(TYPE_RM_SITE, true);