Merge branch 'master' into SLING-10334
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 @@
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 2fb623e..c990750 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.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.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.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.ContentPackage2FeatureModelConverter.PackagePolicy;
import org.apache.sling.feature.cpconverter.accesscontrol.DefaultAclManager;
import org.apache.sling.feature.cpconverter.artifacts.LocalMavenRepositoryArtifactsDeployer;
@@ -462,6 +468,30 @@
}
}
+ @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 SimpleFolderArtifactsDeployer(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 @@
@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
--- /dev/null
+++ b/src/test/resources/org/apache/sling/feature/cpconverter/test-with-privilege.zip
Binary files differ