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/06/09 14:50:03 UTC

[sling-org-apache-sling-feature-cpconverter] 01/01: SLING-10477 : Review usage of UserEntryHandler in RecollectorVaultPackageScanner (tests, remove FIXME)

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

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

commit 6c5b2ef3dae7c1ee33f4f54321dfbde077d16316
Author: angela <an...@adobe.com>
AuthorDate: Wed Jun 9 16:49:46 2021 +0200

    SLING-10477 : Review usage of UserEntryHandler in RecollectorVaultPackageScanner (tests, remove FIXME)
---
 .../handlers/AbstractUserEntryHandler.java         |  1 -
 .../ContentPackage2FeatureModelConverterTest.java  | 49 +++++++++++++++-------
 2 files changed, 35 insertions(+), 15 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractUserEntryHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractUserEntryHandler.java
index a162bdb..4dcac41 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractUserEntryHandler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractUserEntryHandler.java
@@ -54,7 +54,6 @@ abstract class AbstractUserEntryHandler extends AbstractRegexEntryHandler {
                 // write back regular users, groups and their intermediate folders that did not get converted into
                 // repo-init statements to the content package
                 VaultPackageAssembler assembler = converter.getMainPackageAssembler();
-                // FIXME: assembler is null when handler is called from RecollectorVaultPackageScanner (???)
                 if (assembler != null) {
                     try (InputStream input = new ByteArrayInputStream(tmp);
                          OutputStream output = assembler.createEntry(path)){
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 ed67aaa..32add62 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
@@ -29,13 +29,13 @@ import static org.mockito.Mockito.verify;
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Reader;
 import java.io.StringReader;
 import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.*;
@@ -47,6 +47,7 @@ import javax.json.JsonArray;
 import javax.json.JsonObject;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.vault.fs.spi.PrivilegeDefinitions;
 import org.apache.jackrabbit.vault.packaging.CyclicDependencyException;
 import org.apache.jackrabbit.vault.packaging.PackageId;
@@ -73,6 +74,7 @@ import org.apache.sling.feature.cpconverter.shared.ConverterConstants;
 import org.apache.sling.feature.cpconverter.vltpkg.DefaultPackagesEventsEmitter;
 import org.apache.sling.feature.io.json.FeatureJSONReader;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -509,7 +511,7 @@ public class ContentPackage2FeatureModelConverterTest {
         }
     }
 
-    private void deleteDirTree(File dir) throws IOException {
+    private static void deleteDirTree(File dir) throws IOException {
         Path tempDir = dir.toPath();
 
         Files.walk(tempDir)
@@ -518,7 +520,7 @@ public class ContentPackage2FeatureModelConverterTest {
             .forEach(File::delete);
     }
 
-    private Feature getFeature(File outputDirectory, String name) throws Exception {
+    private static Feature getFeature(File outputDirectory, String name) throws Exception {
         File featureFile = new File(outputDirectory, name);
         assertTrue(featureFile + " was not correctly created", featureFile.exists());
 
@@ -527,7 +529,7 @@ public class ContentPackage2FeatureModelConverterTest {
         }
     }
 
-    private void verifyFeatureFile(File outputDirectory,
+    private static void verifyFeatureFile(File outputDirectory,
                                    String name,
                                    String expectedArtifactId,
                                    List<String> expectedArtifacts,
@@ -558,7 +560,7 @@ public class ContentPackage2FeatureModelConverterTest {
         }
     }
 
-    private void verifyInstalledArtifact(File outputDirectory, String coordinates) {
+    private static void verifyInstalledArtifact(File outputDirectory, String coordinates) {
         ArtifactId bundleId = ArtifactId.fromMvnId(coordinates);
 
         StringTokenizer tokenizer = new StringTokenizer(bundleId.getGroupId(), ".");
@@ -585,9 +587,8 @@ public class ContentPackage2FeatureModelConverterTest {
         assertTrue("POM file " + pomFile + " does not exist", pomFile.exists());
     }
 
-    private void verifyContentPackageEntryNames(File contentPackage, String...expectedEntryNames) throws Exception {
+    private static void verifyContentPackageEntryNames(File contentPackage, String...expectedEntryNames) throws Exception {
         try (ZipFile zipFile = new ZipFile(contentPackage)) {
-            
             List<String> expectedEntryNamesList = Arrays.asList(expectedEntryNames);
             for (Enumeration<? extends ZipEntry> zipEntries = zipFile.entries(); zipEntries.hasMoreElements();) {
                 ZipEntry zipEntry = zipEntries.nextElement();
@@ -596,15 +597,14 @@ public class ContentPackage2FeatureModelConverterTest {
                     assertTrue("ZipEntry with name " + entryName + " not expected", expectedEntryNamesList.contains(entryName));
                 }
             }
-            
         }
     }
 
-    private void verifyContentPackage(File contentPackage, String...expectedEntries) throws Exception {
+    private static void verifyContentPackage(File contentPackage, String...expectedEntries) throws Exception {
         verifyContentPackage(contentPackage, Collections.emptySet(), expectedEntries);
     }
     
-    private void verifyContentPackage(File contentPackage, @NotNull Set<String> notExpected, String...expectedEntries) throws Exception {
+    private static void verifyContentPackage(File contentPackage, @NotNull Set<String> notExpected, String...expectedEntries) throws Exception {
         try (ZipFile zipFile = new ZipFile(contentPackage)) {
             for (String expectedEntry : expectedEntries) {
                 assertNotNull("Expected entry not found: " + expectedEntry + " in file " + contentPackage, zipFile.getEntry(expectedEntry));
@@ -615,7 +615,7 @@ public class ContentPackage2FeatureModelConverterTest {
         }
     }
 
-    private void verifyPropertiesXmlEntry(File contentPackage, String... expectedPropertyKeys) throws InvalidPropertiesFormatException, IOException {
+    private static void verifyPropertiesXmlEntry(File contentPackage, String... expectedPropertyKeys) throws IOException {
         try (ZipFile zipFile = new ZipFile(contentPackage)) {
             ZipEntry zipEntry = zipFile.getEntry(Constants.META_DIR + "/" + Constants.PROPERTIES_XML);
             assertNotNull("Package didn't contain properties.xml", zipEntry);
@@ -707,8 +707,8 @@ public class ContentPackage2FeatureModelConverterTest {
                      .convert(packageFile);
     
             String pid = "this.is.just.a.pid";
-            converter.getFeaturesManager().addConfiguration(runmodeA, pid, "/a", new Hashtable<String, Object>());
-            converter.getFeaturesManager().addConfiguration(runmodeB, pid, "/b", new Hashtable<String, Object>());
+            converter.getFeaturesManager().addConfiguration(runmodeA, pid, "/a", new Hashtable<>());
+            converter.getFeaturesManager().addConfiguration(runmodeB, pid, "/b", new Hashtable<>());
     
         } finally {
             deleteDirTree(outputDirectory);
@@ -786,7 +786,7 @@ public class ContentPackage2FeatureModelConverterTest {
 
     }
 
-    private void assertAPIRegion(File featureFile, String region) throws IOException, FileNotFoundException {
+    private static void assertAPIRegion(File featureFile, String region) throws IOException {
         try (Reader reader = new FileReader(featureFile)) {
             Feature feature = FeatureJSONReader.read(reader, featureFile.getAbsolutePath());
 
@@ -1041,9 +1041,30 @@ public class ContentPackage2FeatureModelConverterTest {
                     "jcr_root/home/groups/demo-cp/EsYrXeBdSRkna2kqbxjl/_rep_policy.xml"
                     );
 
+            assertPolicy(converted, "jcr_root/demo-cp/_rep_policy.xml", "cp-serviceuser-1", "cp-user1", "cp-group1");
+            assertPolicy(converted, "jcr_root/home/groups/demo-cp/EsYrXeBdSRkna2kqbxjl/_rep_policy.xml", null, "cp-group1");
+            assertPolicy(converted,  "jcr_root/home/users/demo-cp/XPXhA_RKMFRKNO8ViIhn/_rep_policy.xml", null, "cp-user1");
         } finally {
             deleteDirTree(outputDirectory);
         }
     }
     
+    private static void assertPolicy(@NotNull File contentPackage, @NotNull String path, @Nullable String unExpectedPrincipalName, @NotNull String... expectedPrincipalNames) throws IOException {
+        try (ZipFile zipFile = new ZipFile(contentPackage)) {
+            ZipEntry entry = zipFile.getEntry(path);
+            assertNotNull(entry);
+            assertFalse(entry.isDirectory());
+            
+            try (InputStream in = zipFile.getInputStream(entry)) {
+                String policy = IOUtils.toString(in, StandardCharsets.UTF_8);
+                for (String principalName : expectedPrincipalNames) {
+                    assertTrue(policy.contains("rep:principalName=\""+principalName+"\""));
+                }
+                if (unExpectedPrincipalName != null) {
+                    assertFalse(policy.contains("rep:principalName=\""+unExpectedPrincipalName+"\""));
+                }
+            }
+        } 
+    }
+    
 }