You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by an...@apache.org on 2021/04/27 15:38:56 UTC

[sling-org-apache-sling-feature-cpconverter] 01/01: SLING-10334 : PrivilegesHandler: regexp never matches privileges definitions from content packages

This is an automated email from the ASF dual-hosted git repository.

angela pushed a commit to branch SLING-10334
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git

commit 793eccef68a591a39a2e9dcab3140cb7164ef00f
Author: angela <an...@adobe.com>
AuthorDate: Tue Apr 27 17:38:32 2021 +0200

    SLING-10334 : PrivilegesHandler: regexp never matches privileges definitions from content packages
---
 .../cpconverter/handlers/PrivilegesHandler.java    |   2 +-
 .../ContentPackage2FeatureModelConverterTest.java  |  30 +++++++++++++++++++++
 .../handlers/PrivilegesHandlerTest.java            |   2 +-
 .../feature/cpconverter/test-with-privilege.zip    | Bin 0 -> 14592 bytes
 4 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandler.java
index 329a394..0a9e6ff 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandler.java
@@ -27,7 +27,7 @@ import java.util.Objects;
 public class PrivilegesHandler extends AbstractRegexEntryHandler {
 
     public PrivilegesHandler() {
-        super("META-INF/vault/privileges\\.xml");
+        super("/META-INF/vault/privileges\\.xml");
     }
 
     @Override
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
index 5cc4f2d..b223e77 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
@@ -22,6 +22,10 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -43,6 +47,7 @@ import javax.json.JsonArray;
 import javax.json.JsonObject;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.vault.fs.spi.PrivilegeDefinitions;
 import org.apache.jackrabbit.vault.packaging.CyclicDependencyException;
 import org.apache.jackrabbit.vault.packaging.PackageId;
 import org.apache.jackrabbit.vault.packaging.PackageProperties;
@@ -55,6 +60,7 @@ import org.apache.sling.feature.Configuration;
 import org.apache.sling.feature.Extension;
 import org.apache.sling.feature.ExtensionType;
 import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.cpconverter.accesscontrol.AclManager;
 import org.apache.sling.feature.cpconverter.accesscontrol.DefaultAclManager;
 import org.apache.sling.feature.cpconverter.artifacts.DefaultArtifactsDeployer;
 import org.apache.sling.feature.cpconverter.features.DefaultFeaturesManager;
@@ -377,6 +383,30 @@ public class ContentPackage2FeatureModelConverterTest {
         }
     }
 
+    @Test
+    public void testContentPackageWithPrivileges() throws Exception {
+        URL packageUrl = getClass().getResource("test-with-privilege.zip");
+        File packageFile = FileUtils.toFile(packageUrl);
+
+        AclManager aclManager = spy(new DefaultAclManager());
+
+        File outputDirectory = new File(System.getProperty("java.io.tmpdir"), getClass().getName() + '_' + System.currentTimeMillis());
+        try {
+            DefaultEntryHandlersManager handlersManager = new DefaultEntryHandlersManager();
+            ContentPackage2FeatureModelConverter converter = new ContentPackage2FeatureModelConverter()
+                    .setEntryHandlersManager(handlersManager)
+                    .setAclManager(aclManager);
+
+            converter.setFeaturesManager(new DefaultFeaturesManager(true, 5, outputDirectory, null, null, null, aclManager))
+                    .setBundlesDeployer(new DefaultArtifactsDeployer(outputDirectory))
+                    .setEmitter(DefaultPackagesEventsEmitter.open(outputDirectory))
+                    .convert(packageFile);
+        } finally {
+            verify(aclManager, times(1)).addPrivilegeDefinitions(any(PrivilegeDefinitions.class));
+            deleteDirTree(outputDirectory);
+        }
+    }
+
     private void deleteDirTree(File dir) throws IOException {
         Path tempDir = dir.toPath();
 
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandlerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandlerTest.java
index 66813b5..925fda9 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/PrivilegesHandlerTest.java
@@ -61,7 +61,7 @@ public class PrivilegesHandlerTest {
 
     @Test
     public void matches() {
-        assertTrue(handler.matches("META-INF/vault/privileges.xml"));
+        assertTrue(handler.matches("/META-INF/vault/privileges.xml"));
     }
 
     @Test
diff --git a/src/test/resources/org/apache/sling/feature/cpconverter/test-with-privilege.zip b/src/test/resources/org/apache/sling/feature/cpconverter/test-with-privilege.zip
new file mode 100755
index 0000000..d7f076e
Binary files /dev/null and b/src/test/resources/org/apache/sling/feature/cpconverter/test-with-privilege.zip differ