From 64910942ede5e779a2f5556f18a276d6c0f583a2 Mon Sep 17 00:00:00 2001 From: Alan Davis Date: Fri, 27 Mar 2015 23:14:56 +0000 Subject: [PATCH] Merged HEAD-BUG-FIX (5.1/Cloud) to HEAD (5.1/Cloud) 100243: Merged 5.0.N (5.0.2) to HEAD-BUG-FIX (5.1/Cloud) 100165: Merged NESS/5.0.N-2015_03_23 (5.0.2) to 5.0.N (5.0.2) 99977: MNT-13628 : No matching ACE found to remove" error when removing all the ACLs with removeAcl method and 1.1 Browser implementation - Filter inherited permissions before try to remove them - Added unit test for case git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@100566 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/rest/api/tests/ApiTest.java | 3 +- .../rest/api/tests/TestRemovePermissions.java | 296 ++++++++++++++++++ 2 files changed, 298 insertions(+), 1 deletion(-) create mode 100644 source/test-java/org/alfresco/rest/api/tests/TestRemovePermissions.java diff --git a/source/test-java/org/alfresco/rest/api/tests/ApiTest.java b/source/test-java/org/alfresco/rest/api/tests/ApiTest.java index c3af365f00..ec7ddb489b 100644 --- a/source/test-java/org/alfresco/rest/api/tests/ApiTest.java +++ b/source/test-java/org/alfresco/rest/api/tests/ApiTest.java @@ -27,7 +27,8 @@ import org.junit.runners.Suite; TestPersonSites.class, TestSiteMembershipRequests.class, TestFavourites.class, - TestPublicApi128.class + TestPublicApi128.class, + TestRemovePermissions.class }) public class ApiTest { diff --git a/source/test-java/org/alfresco/rest/api/tests/TestRemovePermissions.java b/source/test-java/org/alfresco/rest/api/tests/TestRemovePermissions.java new file mode 100644 index 0000000000..65bcda6009 --- /dev/null +++ b/source/test-java/org/alfresco/rest/api/tests/TestRemovePermissions.java @@ -0,0 +1,296 @@ +package org.alfresco.rest.api.tests; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import junit.framework.TestCase; + +import org.apache.chemistry.opencmis.client.api.Folder; +import org.apache.chemistry.opencmis.client.api.Session; +import org.apache.chemistry.opencmis.client.api.SessionFactory; +import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl; +import org.apache.chemistry.opencmis.commons.PropertyIds; +import org.apache.chemistry.opencmis.commons.SessionParameter; +import org.apache.chemistry.opencmis.commons.data.Ace; +import org.apache.chemistry.opencmis.commons.data.Acl; +import org.apache.chemistry.opencmis.commons.enums.AclPropagation; +import org.apache.chemistry.opencmis.commons.enums.BindingType; +import org.junit.Test; + +public class TestRemovePermissions extends TestCase +{ + + static public final String ADMIN_USER = "admin"; + static public final String ADMIN_PASSWORD = "admin"; + + static public final String HOST = "localhost"; + static public final String PORT = "8080"; + + static public final String ATOMPUB_URL = "http://" + HOST + ":" + PORT + "/alfresco/s/cmis"; + static public final String ATOMPUB_URL_OC = "http://" + HOST + ":" + PORT + "/alfresco/cmisatom"; + static public final String ATOMPUB_URL_11 = "http://" + HOST + ":" + PORT + "/alfresco/api/-default-/public/cmis/versions/1.1/atom"; + + static public final String REPOSITORYSERVICE_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmis/RepositoryService?wsdl"; + static public final String NAVIGATIONSERVICE_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmis/NavigationService?wsdl"; + static public final String OBJECTSERVICE_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmis/ObjectService?wsdl"; + static public final String VERSIONINGSERVICE_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmis/VersioningService?wsdl"; + static public final String DISCOVERYSERVICE_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmis/DiscoveryService?wsdl"; + static public final String MULTIFILINGSERVICE_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmis/MultiFilingService?wsdl"; + static public final String RELATIONSHIPSERVICE_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmis/RelationshipService?wsdl"; + static public final String ACLSERVICE_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmis/ACLService?wsdl"; + static public final String POLICYSERVICE_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmis/PolicyService?wsdl"; + + static public final String REPOSITORYSERVICE_OC_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmisws/RepositoryService?wsdl"; + static public final String NAVIGATIONSERVICE_OC_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmisws/NavigationService?wsdl"; + static public final String OBJECTSERVICE_OC_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmisws/ObjectService?wsdl"; + static public final String VERSIONINGSERVICE_OC_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmisws/VersioningService?wsdl"; + static public final String DISCOVERYSERVICE_OC_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmisws/DiscoveryService?wsdl"; + static public final String MULTIFILINGSERVICE_OC_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmisws/MultiFilingService?wsdl"; + static public final String RELATIONSHIPSERVICE_OC_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmisws/RelationshipService?wsdl"; + static public final String ACLSERVICE_OC_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmisws/ACLService?wsdl"; + static public final String POLICYSERVICE_OC_URL = "http://" + HOST + ":" + PORT + "/alfresco/cmisws/PolicyService?wsdl"; + + static public final String BROWSE_URL_11 = "http://" + HOST + ":" + PORT + "/alfresco/api/-default-/public/cmis/versions/1.1/browser"; + + public static Session getATOMPUB_10_Session() + { + Map parameters = new HashMap(); + + parameters.put(SessionParameter.USER, ADMIN_USER); + parameters.put(SessionParameter.PASSWORD, ADMIN_PASSWORD); + parameters.put(SessionParameter.ATOMPUB_URL, ATOMPUB_URL_OC); + parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); + + SessionFactory sessionFactory = SessionFactoryImpl.newInstance(); + + parameters.put(SessionParameter.REPOSITORY_ID, sessionFactory.getRepositories(parameters).get(0).getId()); + return sessionFactory.createSession(parameters); + } + + public static Session getATOMPUB_11_Session() + { + Map parameters = new HashMap(); + + parameters.put(SessionParameter.USER, ADMIN_USER); + parameters.put(SessionParameter.PASSWORD, ADMIN_PASSWORD); + parameters.put(SessionParameter.ATOMPUB_URL, ATOMPUB_URL_11); + parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value()); + + SessionFactory sessionFactory = SessionFactoryImpl.newInstance(); + + parameters.put(SessionParameter.REPOSITORY_ID, sessionFactory.getRepositories(parameters).get(0).getId()); + return sessionFactory.createSession(parameters); + } + + public static Session getBROWSER_11_Session() + { + Map parameter = new HashMap(); + + parameter.put(SessionParameter.BINDING_TYPE, BindingType.BROWSER.value()); + parameter.put(SessionParameter.BROWSER_URL, BROWSE_URL_11); + parameter.put(SessionParameter.COOKIES, "true"); + + parameter.put(SessionParameter.USER, ADMIN_USER); + parameter.put(SessionParameter.PASSWORD, ADMIN_PASSWORD); + + SessionFactory sessionFactory = SessionFactoryImpl.newInstance(); + + parameter.put(SessionParameter.REPOSITORY_ID, sessionFactory.getRepositories(parameter).get(0).getId()); + return sessionFactory.createSession(parameter); + } + + public static Session getWEBSERVICE_10_Session() + { + SessionFactory sessionFactory = SessionFactoryImpl.newInstance(); + + Map parameters = new HashMap(); + + parameters.put(SessionParameter.USER, ADMIN_USER); + parameters.put(SessionParameter.PASSWORD, ADMIN_PASSWORD); + parameters.put(SessionParameter.BINDING_TYPE, BindingType.WEBSERVICES.value()); + parameters.put(SessionParameter.WEBSERVICES_ACL_SERVICE, ACLSERVICE_OC_URL); + parameters.put(SessionParameter.WEBSERVICES_DISCOVERY_SERVICE, DISCOVERYSERVICE_OC_URL); + parameters.put(SessionParameter.WEBSERVICES_MULTIFILING_SERVICE, MULTIFILINGSERVICE_OC_URL); + parameters.put(SessionParameter.WEBSERVICES_NAVIGATION_SERVICE, NAVIGATIONSERVICE_OC_URL); + parameters.put(SessionParameter.WEBSERVICES_OBJECT_SERVICE, OBJECTSERVICE_OC_URL); + parameters.put(SessionParameter.WEBSERVICES_POLICY_SERVICE, POLICYSERVICE_OC_URL); + parameters.put(SessionParameter.WEBSERVICES_RELATIONSHIP_SERVICE, RELATIONSHIPSERVICE_OC_URL); + parameters.put(SessionParameter.WEBSERVICES_REPOSITORY_SERVICE, REPOSITORYSERVICE_OC_URL); + parameters.put(SessionParameter.WEBSERVICES_VERSIONING_SERVICE, REPOSITORYSERVICE_OC_URL); + parameters.put(SessionParameter.REPOSITORY_ID, sessionFactory.getRepositories(parameters).get(0).getId()); + + return sessionFactory.createSession(parameters); + } + + @Override + protected void setUp() throws Exception + { + + } + + @Test + public void testRemoveAllPermissions_WEBSERVICE_10() + { + System.out.println("testRemoveAllPermissions_WEBSERVICE_10"); + Session session = getWEBSERVICE_10_Session(); + Folder testFolder = createFolder(session, "testRemoveAllPermissions_WEBSERVICE_10"); + try + { + List acl = create2TestACLs(session); + + // adding new ACE + testFolder.addAcl(acl, AclPropagation.PROPAGATE); + + Acl allacl = session.getAcl(session.createObjectId(testFolder.getId()), false); + int oldSize = allacl.getAces().size(); + + // Removing ALL ACEs + Acl newAcl = testFolder.removeAcl(allacl.getAces(), AclPropagation.PROPAGATE); + + int newsize = newAcl.getAces().size(); + + System.out.println("Old ace size -->" + oldSize); + System.out.println("New ace size --> " + newsize); + + assertTrue(newsize == oldSize - acl.size()); + } + finally + { + testFolder.delete(); + } + } + + @Test + public void testRemoveAllPermissions_ATOMPUB_10() + { + System.out.println("testRemoveAllPermissions_ATOMPUB_10"); + Session session = getATOMPUB_10_Session(); + Folder testFolder = createFolder(session, "testRemoveAllPermissions_ATOMPUB_10"); + try + { + List acl = create2TestACLs(session); + + // adding new ACE + testFolder.addAcl(acl, AclPropagation.PROPAGATE); + + Acl allacl = session.getAcl(session.createObjectId(testFolder.getId()), false); + int oldSize = allacl.getAces().size(); + + // Removing ALL ACEs + Acl newAcl = testFolder.removeAcl(allacl.getAces(), AclPropagation.PROPAGATE); + + int newsize = newAcl.getAces().size(); + + System.out.println("Old ace size -->" + oldSize); + System.out.println("New ace size --> " + newsize); + + assertTrue(newsize == oldSize - acl.size()); + } + finally + { + testFolder.delete(); + } + } + + @Test + public void testRemoveAllPermissions_ATOMPUB_11() + { + System.out.println("testRemoveAllPermissions_ATOMPUB_11"); + Session session = getATOMPUB_11_Session(); + Folder testFolder = createFolder(session, "testRemoveAllPermissions_ATOMPUB_11"); + try + { + List acl = create2TestACLs(session); + + // adding new ACE + testFolder.addAcl(acl, AclPropagation.PROPAGATE); + + Acl allacl = session.getAcl(session.createObjectId(testFolder.getId()), false); + int oldSize = allacl.getAces().size(); + + // Removing ALL ACEs + Acl newAcl = testFolder.removeAcl(allacl.getAces(), AclPropagation.PROPAGATE); + + int newsize = newAcl.getAces().size(); + + System.out.println("Old ace size -->" + oldSize); + System.out.println("New ace size --> " + newsize); + + assertTrue(newsize == oldSize - acl.size()); + } + finally + { + testFolder.delete(); + } + + } + + @Test + public void testRemoveAllPermissions_BROWSER_11() + { + + System.out.println("testRemoveAllPermissions_BROWSER_11"); + Session session = getBROWSER_11_Session(); + Folder testFolder = createFolder(session, "testRemoveAllPermissions_BROWSER_11"); + + try + { + List acl = create2TestACLs(session); + + // adding new ACE + testFolder.addAcl(acl, AclPropagation.PROPAGATE); + + Acl allacl = session.getAcl(session.createObjectId(testFolder.getId()), false); + int oldSize = allacl.getAces().size(); + + // Removing ALL ACEs + + Acl newAcl = testFolder.removeAcl(allacl.getAces(), AclPropagation.PROPAGATE); + int newsize = newAcl.getAces().size(); + + System.out.println("Old ace size -->" + oldSize); + System.out.println("New ace size --> " + newsize); + + assertTrue(newsize == oldSize - acl.size()); + } + finally + { + testFolder.delete(); + } + + } + + private Folder createFolder(Session session, String name) + { + Folder testFolder; + Folder folder = session.getRootFolder(); + Map properties = new HashMap(); + properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:folder"); + properties.put(PropertyIds.NAME, name); + + testFolder = folder.createFolder(properties); + + return testFolder; + } + + private List create2TestACLs(Session session) + { + List newACE = new ArrayList(); + LinkedList permissions1 = new LinkedList(); + permissions1.add("{http://www.alfresco.org/model/system/1.0}base.ReadPermissions"); + + LinkedList permissions2 = new LinkedList(); + permissions2.add("{http://www.alfresco.org/model/system/1.0}base.Unlock"); + + Ace ace1 = session.getObjectFactory().createAce("testUser1", permissions1); + Ace ace2 = session.getObjectFactory().createAce("testUser2", permissions2); + newACE.add(ace1); + newACE.add(ace2); + return newACE; + + } + +}