From 5df1052bb9cc80a62dfdc13ad1e2aee903a18e67 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Wed, 28 May 2014 20:26:11 +0000 Subject: [PATCH] RM-1463 (Item the user has read only permissions for can be added to hold in from Records Search results) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@72191 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../test/service/HoldServiceImplTest.java | 92 ++++++++++++++----- 1 file changed, 67 insertions(+), 25 deletions(-) diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/HoldServiceImplTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/HoldServiceImplTest.java index 0413393f26..1dbf63c793 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/HoldServiceImplTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/service/HoldServiceImplTest.java @@ -20,6 +20,8 @@ package org.alfresco.module.org_alfresco_module_rm.test.service; import java.util.List; +import org.alfresco.error.AlfrescoRuntimeException; +import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel; import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase; import org.alfresco.service.cmr.repository.NodeRef; @@ -30,13 +32,19 @@ import org.alfresco.service.cmr.repository.NodeRef; * @since 2.2 */ public class HoldServiceImplTest extends BaseRMTestCase -{ +{ @Override protected boolean isRecordTest() { return true; } - + + @Override + protected boolean isUserTest() + { + return true; + } + public void testDeleteHoldBehaviourForRecordFolder() { doTestInTransaction(new Test() @@ -47,37 +55,37 @@ public class HoldServiceImplTest extends BaseRMTestCase // create test holds NodeRef hold1 = holdService.createHold(filePlan, "hold one", "I have my reasons", "but I'll not describe them here!"); assertNotNull(hold1); - + // add the record folder to hold1 holdService.addToHold(hold1, rmFolder); - + // assert that the folder and records are frozen assertTrue(freezeService.isFrozen(rmFolder)); assertTrue(freezeService.isFrozen(recordOne)); assertTrue(freezeService.isFrozen(recordDeclaredOne)); - + // check the contents of the hold List frozenNodes = holdService.getHeld(hold1); assertNotNull(frozenNodes); assertEquals(1, frozenNodes.size()); assertEquals(rmFolder, frozenNodes.get(0)); - + // delete the hold holdService.deleteHold(hold1); - + // assert that the folder and records no longer frozen assertFalse(freezeService.isFrozen(rmFolder)); assertFalse(freezeService.isFrozen(recordOne)); assertFalse(freezeService.isFrozen(recordDeclaredOne)); - + // confirm the hold has been deleted - assertNull(holdService.getHold(filePlan, "hold one")); - + assertNull(holdService.getHold(filePlan, "hold one")); + return null; } }); } - + public void testDeleteHoldBehaviourForMultipleHolds() { doTestInTransaction(new Test() @@ -90,53 +98,87 @@ public class HoldServiceImplTest extends BaseRMTestCase assertNotNull(hold1); NodeRef hold2 = holdService.createHold(filePlan, "hold two", "secrets are everything", "no then! that's just not on!"); assertNotNull(hold2); - + // add the record folder to hold1 holdService.addToHold(hold1, rmFolder); - + // assert that the folder and records are frozen assertTrue(freezeService.isFrozen(rmFolder)); assertTrue(freezeService.isFrozen(recordOne)); assertTrue(freezeService.isFrozen(recordDeclaredOne)); - + // check the contents of the hold List frozenNodes = holdService.getHeld(hold1); assertNotNull(frozenNodes); assertEquals(1, frozenNodes.size()); assertEquals(rmFolder, frozenNodes.get(0)); - + holdService.addToHold(hold2, recordOne); - + // assert that the folder and records are frozen assertTrue(freezeService.isFrozen(rmFolder)); assertTrue(freezeService.isFrozen(recordOne)); assertTrue(freezeService.isFrozen(recordDeclaredOne)); - + // delete the hold holdService.deleteHold(hold1); - + // assert that the folder and records no longer frozen assertFalse(freezeService.isFrozen(rmFolder)); assertTrue(freezeService.isFrozen(recordOne)); assertFalse(freezeService.isFrozen(recordDeclaredOne)); - + // confirm the hold has been deleted - assertNull(holdService.getHold(filePlan, "hold one")); - + assertNull(holdService.getHold(filePlan, "hold one")); + // delete the hold holdService.deleteHold(hold2); - + // assert that the folder and records no longer frozen assertFalse(freezeService.isFrozen(rmFolder)); assertFalse(freezeService.isFrozen(recordOne)); assertFalse(freezeService.isFrozen(recordDeclaredOne)); - + // confirm the hold has been deleted assertNull(holdService.getHold(filePlan, "hold two")); - + return null; } }); } - + + public void testAddRecordFolderOrRecordToHoldWithoutFilingPermission() + { + // Create hold + final NodeRef hold = holdService.createHold(filePlan, "hold one", "I have my reasons", "but I'll not describe them here!"); + assertNotNull(hold); + + doTestInTransaction(new Test() + { + @Override + public Void run() throws Exception + { + // Add the user to the RM Manager role + filePlanRoleService.assignRoleToAuthority(filePlan, ROLE_NAME_RECORDS_MANAGER, userName); + + // Give the user filing permissions on the hold + permissionService.setPermission(hold, userName, RMPermissionModel.FILING, true); + + // Give the user only read permissions on the record folder + permissionService.setPermission(rmFolder, userName, RMPermissionModel.READ_RECORDS, true); + + return null; + } + }, "admin"); + + doTestInTransaction(new FailureTest(AlfrescoRuntimeException.class) + { + @Override + public void run() throws Exception + { + holdService.addToHold(hold, rmFolder); + } + }, userName); + } + }