diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java index 0a9c127d56..2f00a21fc8 100644 --- a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java +++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImplUnitTest.java @@ -76,6 +76,7 @@ public class RecordServiceImplUnitTest extends BaseUnitTest private NodeRef nonStandardFilePlan; private NodeRef dmNodeRef; private NodeRef unfiledRecordContainer; + private NodeRef frozenRecordFolder; private ChildAssociationRef parentAssoc; private static QName TYPE_MY_FILE_PLAN = generateQName(); @@ -94,6 +95,7 @@ public class RecordServiceImplUnitTest extends BaseUnitTest nonStandardFilePlan = generateNodeRef(TYPE_MY_FILE_PLAN); dmNodeRef = generateNodeRef(TYPE_CONTENT); unfiledRecordContainer = generateNodeRef(TYPE_UNFILED_RECORD_CONTAINER); + frozenRecordFolder = generateNodeRef(TYPE_RECORD_FOLDER); parentAssoc = mock(ChildAssociationRef.class); // set-up node service @@ -583,6 +585,20 @@ public class RecordServiceImplUnitTest extends BaseUnitTest recordService.createRecord(filePlan, dmNodeRef, recordFolder); } + /** + * Given a file that is not yet a record + * When I create the record specifying a folder which is in a hold + * Then an exception is thrown + */ + @Test(expected=AccessDeniedException.class) + public void createRecordIntoRecordFolderInHold() + { + mocksForRecordCreation(); + + // create the record + recordService.createRecord(filePlan, dmNodeRef, frozenRecordFolder); + } + /* Helper method to set up the mocks for record creation */ private void mocksForRecordCreation() { @@ -590,10 +606,12 @@ public class RecordServiceImplUnitTest extends BaseUnitTest .thenReturn(parentAssoc); when(parentAssoc.getQName()).thenReturn(generateQName()); - // mocks for sanity checks on node and fileplan + // mocks for sanity checks on node, folder and fileplan when(mockedExtendedPermissionService.hasPermission(dmNodeRef, PermissionService.WRITE)).thenReturn(AccessStatus.ALLOWED); when(mockedDictionaryService.isSubClass(mockedNodeService.getType(dmNodeRef), ContentModel.TYPE_CONTENT)).thenReturn(true); when(mockedFilePlanService.isFilePlan(nonStandardFilePlan)).thenReturn(true); + when(mockedFreezeService.isFrozen(recordFolder)).thenReturn(false); + when(mockedFreezeService.isFrozen(frozenRecordFolder)).thenReturn(true); // mocks for policies doNothing().when(recordService).invokeBeforeRecordDeclaration(dmNodeRef);