JCRVLT-107 Package manager applies the acHandling of parent package to all the subpackages

git-svn-id: https://svn.apache.org/repos/asf/jackrabbit/commons/filevault/trunk@1726349 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestACLAndMerge.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestACLAndMerge.java
index 78a19d0..1f6bb9b 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestACLAndMerge.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/packaging/integration/TestACLAndMerge.java
@@ -141,6 +141,33 @@
     }
 
     /**
+     * Installs 2 packages with the same ACL. the later packages has a sub package with a different AC handling.
+     * See JCRVLT-107.
+     */
+    @Test
+    public void testACMergeSubpackage() throws RepositoryException, IOException, PackageException {
+        assertNodeMissing("/testroot");
+
+        JcrPackage pack = packMgr.upload(getStream("testpackages/mode_ac_test_a.zip"), false);
+        assertNotNull(pack);
+        pack.install(getDefaultOptions());
+
+        // test if nodes and ACLs of first package exist
+        assertNodeExists("/testroot/node_a");
+        assertPermission("/testroot/secured", false, new String[]{"jcr:all"}, "everyone", null);
+
+        pack = packMgr.upload(getStream("testpackages/mode_ac_subpackage.zip"), false);
+        assertNotNull(pack);
+        pack.install(getDefaultOptions());
+
+        // test if nodes and ACLs of 2nd package exist
+        assertNodeExists("/testroot/node_a");
+        assertNodeExists("/testroot/node_b");
+        assertPermission("/testroot/secured", false, new String[]{"jcr:all"}, "everyone", null);
+        assertPermission("/testroot/secured", true, new String[]{"jcr:read"}, "everyone", "*/foo/*");
+    }
+
+    /**
      * Installs 2 packages with the same ACE. the later packages has AC Handling MERGE and should overwrite the
      * existing ACL.
      */
diff --git a/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/mode_ac_subpackage.zip b/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/mode_ac_subpackage.zip
new file mode 100644
index 0000000..f3a148e
--- /dev/null
+++ b/vault-core/src/test/resources/org/apache/jackrabbit/vault/packaging/integration/testpackages/mode_ac_subpackage.zip
Binary files differ