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/05/18 15:37:59 UTC
[sling-org-apache-sling-feature-cpconverter] 01/01: SLING-10386 :
Converter needs to issue create path statements for repoinit path without
node type (special handling for root and repository path)
This is an automated email from the ASF dual-hosted git repository.
angela pushed a commit to branch SLING-10386_2
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git
commit cb2b61b39fe0d1f597c2012af16f5e402a00735e
Author: angela <an...@adobe.com>
AuthorDate: Tue May 18 17:37:42 2021 +0200
SLING-10386 : Converter needs to issue create path statements for repoinit path without node type (special handling for root and repository path)
---
.../accesscontrol/DefaultAclManager.java | 3 +++
.../cpconverter/accesscontrol/AclManagerTest.java | 31 ++++++++++++++++++++++
2 files changed, 34 insertions(+)
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java
index e071f3b..623af48 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/accesscontrol/DefaultAclManager.java
@@ -439,6 +439,9 @@ public class DefaultAclManager implements AclManager, EnforceInfo {
// user-root
log.warn("Failed to extract primary type information for node at path '{}'", path);
return null;
+ } else if (path.getParent() == null) {
+ log.debug("Omit create path statement for path '{}'", path);
+ return null;
} else {
// assume that primary type information is present or can be extracted from default primary type definition
// of the the top-level nodes (i.e. their effective node type definition).
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManagerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManagerTest.java
index 06fe4f2..05453bf 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManagerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/AclManagerTest.java
@@ -28,6 +28,7 @@ import org.apache.sling.feature.cpconverter.vltpkg.VaultPackageAssembler;
import org.apache.sling.repoinit.parser.RepoInitParser;
import org.apache.sling.repoinit.parser.RepoInitParsingException;
import org.apache.sling.repoinit.parser.impl.RepoInitParserService;
+import org.apache.sling.repoinit.parser.operations.CreatePath;
import org.apache.sling.repoinit.parser.operations.Operation;
import org.junit.After;
import org.junit.Before;
@@ -47,6 +48,7 @@ import static org.junit.Assert.assertEquals;
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.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verifyNoInteractions;
@@ -377,4 +379,33 @@ public class AclManagerTest {
return new AccessControlEntry(isAllow, Arrays.asList(privileges.split(",")), new RepoPath(PlatformNameFormat.getRepositoryPath(path)));
}
+ @Test
+ public void testGetCreatePathForRootNode() {
+ RepoPath rootPath = new RepoPath("/");
+ DefaultAclManager aclManager = new DefaultAclManager();
+ CreatePath cp = aclManager.getCreatePath(rootPath, Collections.emptyList());
+ assertNull(cp);
+ }
+
+ @Test
+ public void testGetCreatePathForRepositoryPath() {
+ RepoPath repoPath = new RepoPath("");
+ assertTrue(repoPath.isRepositoryPath());
+
+ DefaultAclManager aclManager = new DefaultAclManager();
+ CreatePath cp = aclManager.getCreatePath(repoPath, Collections.emptyList());
+ assertNull(cp);
+ }
+
+ @Test
+ public void testGetCreatePathForPathBelowUserRoot() {
+ RepoPath userPath = new RepoPath("/home/user/system/feature/usernode");
+ DefaultAclManager aclManager = new DefaultAclManager();
+ aclManager.addSystemUser(new SystemUser("systemUser", userPath, userPath.getParent()));
+
+ CreatePath cp = aclManager.getCreatePath(new RepoPath("/home/somenode"), Collections.emptyList());
+ assertNull(cp);
+ cp = aclManager.getCreatePath(new RepoPath("/home"), Collections.emptyList());
+ assertNull(cp);
+ }
}