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
This commit is contained in:
Tuna Aksoy
2014-05-28 20:26:11 +00:00
parent 81a71c041e
commit 5df1052bb9

View File

@@ -20,6 +20,8 @@ package org.alfresco.module.org_alfresco_module_rm.test.service;
import java.util.List; 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.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
@@ -30,13 +32,19 @@ import org.alfresco.service.cmr.repository.NodeRef;
* @since 2.2 * @since 2.2
*/ */
public class HoldServiceImplTest extends BaseRMTestCase public class HoldServiceImplTest extends BaseRMTestCase
{ {
@Override @Override
protected boolean isRecordTest() protected boolean isRecordTest()
{ {
return true; return true;
} }
@Override
protected boolean isUserTest()
{
return true;
}
public void testDeleteHoldBehaviourForRecordFolder() public void testDeleteHoldBehaviourForRecordFolder()
{ {
doTestInTransaction(new Test<Void>() doTestInTransaction(new Test<Void>()
@@ -47,37 +55,37 @@ public class HoldServiceImplTest extends BaseRMTestCase
// create test holds // create test holds
NodeRef hold1 = holdService.createHold(filePlan, "hold one", "I have my reasons", "but I'll not describe them here!"); NodeRef hold1 = holdService.createHold(filePlan, "hold one", "I have my reasons", "but I'll not describe them here!");
assertNotNull(hold1); assertNotNull(hold1);
// add the record folder to hold1 // add the record folder to hold1
holdService.addToHold(hold1, rmFolder); holdService.addToHold(hold1, rmFolder);
// assert that the folder and records are frozen // assert that the folder and records are frozen
assertTrue(freezeService.isFrozen(rmFolder)); assertTrue(freezeService.isFrozen(rmFolder));
assertTrue(freezeService.isFrozen(recordOne)); assertTrue(freezeService.isFrozen(recordOne));
assertTrue(freezeService.isFrozen(recordDeclaredOne)); assertTrue(freezeService.isFrozen(recordDeclaredOne));
// check the contents of the hold // check the contents of the hold
List<NodeRef> frozenNodes = holdService.getHeld(hold1); List<NodeRef> frozenNodes = holdService.getHeld(hold1);
assertNotNull(frozenNodes); assertNotNull(frozenNodes);
assertEquals(1, frozenNodes.size()); assertEquals(1, frozenNodes.size());
assertEquals(rmFolder, frozenNodes.get(0)); assertEquals(rmFolder, frozenNodes.get(0));
// delete the hold // delete the hold
holdService.deleteHold(hold1); holdService.deleteHold(hold1);
// assert that the folder and records no longer frozen // assert that the folder and records no longer frozen
assertFalse(freezeService.isFrozen(rmFolder)); assertFalse(freezeService.isFrozen(rmFolder));
assertFalse(freezeService.isFrozen(recordOne)); assertFalse(freezeService.isFrozen(recordOne));
assertFalse(freezeService.isFrozen(recordDeclaredOne)); assertFalse(freezeService.isFrozen(recordDeclaredOne));
// confirm the hold has been deleted // confirm the hold has been deleted
assertNull(holdService.getHold(filePlan, "hold one")); assertNull(holdService.getHold(filePlan, "hold one"));
return null; return null;
} }
}); });
} }
public void testDeleteHoldBehaviourForMultipleHolds() public void testDeleteHoldBehaviourForMultipleHolds()
{ {
doTestInTransaction(new Test<Void>() doTestInTransaction(new Test<Void>()
@@ -90,53 +98,87 @@ public class HoldServiceImplTest extends BaseRMTestCase
assertNotNull(hold1); assertNotNull(hold1);
NodeRef hold2 = holdService.createHold(filePlan, "hold two", "secrets are everything", "no then! that's just not on!"); NodeRef hold2 = holdService.createHold(filePlan, "hold two", "secrets are everything", "no then! that's just not on!");
assertNotNull(hold2); assertNotNull(hold2);
// add the record folder to hold1 // add the record folder to hold1
holdService.addToHold(hold1, rmFolder); holdService.addToHold(hold1, rmFolder);
// assert that the folder and records are frozen // assert that the folder and records are frozen
assertTrue(freezeService.isFrozen(rmFolder)); assertTrue(freezeService.isFrozen(rmFolder));
assertTrue(freezeService.isFrozen(recordOne)); assertTrue(freezeService.isFrozen(recordOne));
assertTrue(freezeService.isFrozen(recordDeclaredOne)); assertTrue(freezeService.isFrozen(recordDeclaredOne));
// check the contents of the hold // check the contents of the hold
List<NodeRef> frozenNodes = holdService.getHeld(hold1); List<NodeRef> frozenNodes = holdService.getHeld(hold1);
assertNotNull(frozenNodes); assertNotNull(frozenNodes);
assertEquals(1, frozenNodes.size()); assertEquals(1, frozenNodes.size());
assertEquals(rmFolder, frozenNodes.get(0)); assertEquals(rmFolder, frozenNodes.get(0));
holdService.addToHold(hold2, recordOne); holdService.addToHold(hold2, recordOne);
// assert that the folder and records are frozen // assert that the folder and records are frozen
assertTrue(freezeService.isFrozen(rmFolder)); assertTrue(freezeService.isFrozen(rmFolder));
assertTrue(freezeService.isFrozen(recordOne)); assertTrue(freezeService.isFrozen(recordOne));
assertTrue(freezeService.isFrozen(recordDeclaredOne)); assertTrue(freezeService.isFrozen(recordDeclaredOne));
// delete the hold // delete the hold
holdService.deleteHold(hold1); holdService.deleteHold(hold1);
// assert that the folder and records no longer frozen // assert that the folder and records no longer frozen
assertFalse(freezeService.isFrozen(rmFolder)); assertFalse(freezeService.isFrozen(rmFolder));
assertTrue(freezeService.isFrozen(recordOne)); assertTrue(freezeService.isFrozen(recordOne));
assertFalse(freezeService.isFrozen(recordDeclaredOne)); assertFalse(freezeService.isFrozen(recordDeclaredOne));
// confirm the hold has been deleted // confirm the hold has been deleted
assertNull(holdService.getHold(filePlan, "hold one")); assertNull(holdService.getHold(filePlan, "hold one"));
// delete the hold // delete the hold
holdService.deleteHold(hold2); holdService.deleteHold(hold2);
// assert that the folder and records no longer frozen // assert that the folder and records no longer frozen
assertFalse(freezeService.isFrozen(rmFolder)); assertFalse(freezeService.isFrozen(rmFolder));
assertFalse(freezeService.isFrozen(recordOne)); assertFalse(freezeService.isFrozen(recordOne));
assertFalse(freezeService.isFrozen(recordDeclaredOne)); assertFalse(freezeService.isFrozen(recordDeclaredOne));
// confirm the hold has been deleted // confirm the hold has been deleted
assertNull(holdService.getHold(filePlan, "hold two")); assertNull(holdService.getHold(filePlan, "hold two"));
return null; 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<Void>()
{
@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);
}
} }