From 7916227e88c73bcc09efa526f4253a261a93af3d Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Mon, 1 Jun 2015 13:32:12 +0000 Subject: [PATCH] RM-2208 (Prevent classification of shared content) +review RM @rwetherall git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@105284 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../ContentClassificationServiceImpl.java | 5 +++++ .../ContentClassificationServiceImplUnitTest.java | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ContentClassificationServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ContentClassificationServiceImpl.java index 001ec25192..222eb8e500 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ContentClassificationServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/classification/ContentClassificationServiceImpl.java @@ -28,6 +28,7 @@ import java.util.Map; import java.util.Set; import org.alfresco.model.ContentModel; +import org.alfresco.model.QuickShareModel; import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationServiceException.InvalidNode; import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationServiceException.LevelIdNotFound; import org.alfresco.module.org_alfresco_module_rm.classification.model.ClassifiedContentModel; @@ -98,6 +99,10 @@ public class ContentClassificationServiceImpl extends ServiceBaseImpl implements throw new UnsupportedOperationException( "The content has already been classified. Reclassification is currently not supported."); } + if (nodeService.hasAspect(content, QuickShareModel.ASPECT_QSHARE)) + { + throw new IllegalStateException("A shared content cannot be classified."); + } if (!securityClearanceService.isCurrentUserClearedForClassification(classificationLevelId)) { throw new LevelIdNotFound(classificationLevelId); diff --git a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/classification/ContentClassificationServiceImplUnitTest.java b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/classification/ContentClassificationServiceImplUnitTest.java index 4823ebfe4c..6aa36b1c2c 100644 --- a/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/classification/ContentClassificationServiceImplUnitTest.java +++ b/rm-server/unit-test/java/org/alfresco/module/org_alfresco_module_rm/classification/ContentClassificationServiceImplUnitTest.java @@ -18,6 +18,7 @@ */ package org.alfresco.module.org_alfresco_module_rm.classification; +import static com.google.common.collect.Sets.newHashSet; import static org.alfresco.module.org_alfresco_module_rm.test.util.AlfMock.generateNodeRef; import static org.alfresco.module.org_alfresco_module_rm.test.util.AlfMock.generateText; import static org.junit.Assert.assertEquals; @@ -38,7 +39,9 @@ import java.util.Set; import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; + import org.alfresco.model.ContentModel; +import org.alfresco.model.QuickShareModel; import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationServiceException.InvalidNode; import org.alfresco.module.org_alfresco_module_rm.classification.ClassificationServiceException.LevelIdNotFound; import org.alfresco.module.org_alfresco_module_rm.classification.model.ClassifiedContentModel; @@ -142,6 +145,18 @@ public class ContentClassificationServiceImplUnitTest implements ClassifiedConte Sets.newHashSet("reasonId1", "reasonId2"), classifiedContent); } + /** Classify a piece of content that has already been shared */ + @Test(expected = IllegalStateException.class) + public void classifySharedContent() + { + NodeRef sharedContent = generateNodeRef(mockNodeService); + when(mockDictionaryService.isSubClass(mockNodeService.getType(sharedContent), ContentModel.TYPE_CONTENT)).thenReturn(true); + when(mockNodeService.hasAspect(sharedContent, QuickShareModel.ASPECT_QSHARE)).thenReturn(true); + + // Call the method under test. + contentClassificationServiceImpl.classifyContent(generateText(), generateText(), newHashSet(generateText(), generateText()), sharedContent); + } + /** * Check that a user can't classify content with a level that either (a) doesn't exist, or (b) they don't have * clearance for. (Both cases are covered by the same flow through the code).