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 <anch...@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