From d46b75c752febac5ab4a72db71578b07e64513a3 Mon Sep 17 00:00:00 2001 From: Mark Rogers Date: Tue, 22 Jul 2014 15:30:57 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (5.0/Cloud) to HEAD (5.0/Cloud) 76564: Merged V4.2-BUG-FIX (4.2.4) to HEAD-BUG-FIX (5.0/Cloud) 76112: Merged DEV to V4.2-BUG-FIX (4.2.3) 76109: MNT-11727: CMIS change log doesn't include change events for update operations Move and rename operations should be shown as an UPDATE in the CMIS change log. Added unit test. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@77630 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/audit/alfresco-audit-cmis.xml | 12 ++- .../org/alfresco/opencmis/CMISTest.java | 82 +++++++++++++++++++ 2 files changed, 92 insertions(+), 2 deletions(-) diff --git a/config/alfresco/audit/alfresco-audit-cmis.xml b/config/alfresco/audit/alfresco-audit-cmis.xml index 030aa697fb..2cbeec1124 100644 --- a/config/alfresco/audit/alfresco-audit-cmis.xml +++ b/config/alfresco/audit/alfresco-audit-cmis.xml @@ -23,6 +23,8 @@ + + @@ -37,9 +39,15 @@ - + - + + + + + + + diff --git a/source/test-java/org/alfresco/opencmis/CMISTest.java b/source/test-java/org/alfresco/opencmis/CMISTest.java index 8b88bbcbd1..37a71deba5 100644 --- a/source/test-java/org/alfresco/opencmis/CMISTest.java +++ b/source/test-java/org/alfresco/opencmis/CMISTest.java @@ -87,6 +87,7 @@ import org.apache.chemistry.opencmis.commons.data.RepositoryInfo; import org.apache.chemistry.opencmis.commons.definitions.TypeDefinition; import org.apache.chemistry.opencmis.commons.enums.AclPropagation; import org.apache.chemistry.opencmis.commons.enums.Action; +import org.apache.chemistry.opencmis.commons.enums.ChangeType; import org.apache.chemistry.opencmis.commons.enums.CmisVersion; import org.apache.chemistry.opencmis.commons.enums.IncludeRelationships; import org.apache.chemistry.opencmis.commons.enums.VersioningState; @@ -2252,4 +2253,85 @@ public class CMISTest AuthenticationUtil.popAuthentication(); } } + * MNT-11727: move and rename operations should be shown as an UPDATE in the CMIS change log + */ + @Test + public void tesMoveRenameWithCMISshouldBeAuditedAsUPDATE() throws Exception + { + // setUp audit subsystem + setupAudit(); + + AuthenticationUtil.pushAuthentication(); + AuthenticationUtil.setFullyAuthenticatedUser(AuthenticationUtil.getAdminUserName()); + + try + { + assertTrue("Audit is not enabled", auditSubsystem.isAuditEnabled()); + assertNotNull("CMIS audit is not enabled", auditSubsystem.getAuditApplicationByName("CMISChangeLog")); + + NodeRef companyHomeNodeRef = repositoryHelper.getCompanyHome(); + + String folder = GUID.generate(); + FileInfo folderInfo = fileFolderService.create(companyHomeNodeRef, folder, ContentModel.TYPE_FOLDER); + + final String actualToken = changeLogService.getLastChangeLogToken(); + + String content = GUID.generate(); + FileInfo document = fileFolderService.create(folderInfo.getNodeRef(), content, ContentModel.TYPE_CONTENT); + assertNotNull(document); + nodeService.setProperty(document.getNodeRef(), ContentModel.PROP_NAME, content); + + Holder changeLogToken = new Holder(); + changeLogToken.setValue(actualToken); + ObjectList changeLog = CMISTest.this.cmisConnector.getContentChanges(changeLogToken, new BigInteger("0")); + List events = changeLog.getObjects(); + int count = events.size(); + // it should be 3 entries: 1 for previous folder create, 1 new CREATE (for document create) + // and 1 NEW UPDATE + assertEquals(3, count); + + assertEquals(events.get(0).getProperties().getPropertyList().get(0).getValues().get(0), folderInfo.getNodeRef().getId()); + assertEquals(events.get(0).getChangeEventInfo().getChangeType(), ChangeType.CREATED); + + assertTrue(((String) events.get(1).getProperties().getPropertyList().get(0).getValues().get(0)).contains(document.getNodeRef().getId())); + assertEquals(events.get(1).getChangeEventInfo().getChangeType(), ChangeType.CREATED); + + assertTrue(((String) events.get(2).getProperties().getPropertyList().get(0).getValues().get(0)).contains(document.getNodeRef().getId())); + assertEquals(events.get(2).getChangeEventInfo().getChangeType(), ChangeType.UPDATED); + + // test rename + final String actualToken2 = changeLogService.getLastChangeLogToken(); + nodeService.setProperty(document.getNodeRef(), ContentModel.PROP_NAME, content + "-updated"); + + changeLogToken = new Holder(); + changeLogToken.setValue(actualToken2); + changeLog = CMISTest.this.cmisConnector.getContentChanges(changeLogToken, new BigInteger("0")); + events = changeLog.getObjects(); + count = events.size(); + assertEquals(2, count); + assertEquals("Rename operation should be shown as an UPDATE in the CMIS change log", events.get(1).getChangeEventInfo().getChangeType(), ChangeType.UPDATED); + + // test move + String targetFolder = GUID.generate(); + FileInfo targetFolderInfo = fileFolderService.create(companyHomeNodeRef, targetFolder, ContentModel.TYPE_FOLDER); + + final String actualToken3 = changeLogService.getLastChangeLogToken(); + nodeService.moveNode(document.getNodeRef(), targetFolderInfo.getNodeRef(), ContentModel.ASSOC_CONTAINS, ContentModel.ASSOC_CONTAINS); + + changeLogToken = new Holder(); + changeLogToken.setValue(actualToken3); + changeLog = CMISTest.this.cmisConnector.getContentChanges(changeLogToken, new BigInteger("0")); + events = changeLog.getObjects(); + count = events.size(); + assertEquals(2, count); + assertEquals("Move operation should be shown as an UPDATE in the CMIS change log", events.get(1).getChangeEventInfo().getChangeType(), ChangeType.UPDATED); + } + finally + { + auditSubsystem.destroy(); + AuthenticationUtil.popAuthentication(); + } + } + + /** }