You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by re...@apache.org on 2024/08/21 12:23:25 UTC

(sling-org-apache-sling-resourceresolver) branch SLING-12412 created (now 78d72df)

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

reschke pushed a change to branch SLING-12412
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git


      at 78d72df  SLING-12412: ResourceResolver: add test coverage for empty aliases, blank aliases, and invalid aliases

This branch includes the following new commits:

     new 78d72df  SLING-12412: ResourceResolver: add test coverage for empty aliases, blank aliases, and invalid aliases

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(sling-org-apache-sling-resourceresolver) 01/01: SLING-12412: ResourceResolver: add test coverage for empty aliases, blank aliases, and invalid aliases

Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

reschke pushed a commit to branch SLING-12412
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git

commit 78d72dfd1f5d7854ab2d8de0cffeffb488a722be
Author: Julian Reschke <re...@apache.org>
AuthorDate: Wed Aug 21 13:23:08 2024 +0100

    SLING-12412: ResourceResolver: add test coverage for empty aliases, blank aliases, and invalid aliases
---
 .../impl/mapping/MapEntriesTest.java               | 52 ++++++++++++++++++----
 .../impl/mapping/PathGeneratorTest.java            | 14 ++++++
 2 files changed, 58 insertions(+), 8 deletions(-)

diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
index 47917e7..ea4512c 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
@@ -178,6 +178,49 @@ public class MapEntriesTest extends AbstractMappingMapEntriesTest {
 
     @Test
     public void test_simple_alias_support() {
+        // SLING-12399 - empty alias is returned back (might be a bug)
+        for (String validAlias : List.of("alias", "")) {
+            prepareMapEntriesForAlias(validAlias);
+            mapEntries.doInit();
+            Map<String, Collection<String>> aliasMap = mapEntries.getAliasMap("/parent");
+            assertNotNull(aliasMap);
+            assertTrue(aliasMap.containsKey("child"));
+            assertEquals(List.of(validAlias), aliasMap.get("child"));
+        }
+    }
+
+    @Test
+    public void test_simple_multi_alias_support() {
+        prepareMapEntriesForAlias("foo", "bar");
+        mapEntries.doInit();
+        Map<String, Collection<String>> aliasMap = mapEntries.getAliasMap("/parent");
+        assertNotNull(aliasMap);
+        assertTrue(aliasMap.containsKey("child"));
+        assertEquals(List.of("foo", "bar"), aliasMap.get("child"));
+    }
+
+    @Test
+    public void test_simple_multi_alias_support_with_blank_and_invalid() {
+        // SLING-12399 - invalid aliases filtered out (but empty string not considered invalid)
+        prepareMapEntriesForAlias("", "foo", ".", "bar", "x/y", "qux", " ");
+        mapEntries.doInit();
+        Map<String, Collection<String>> aliasMap = mapEntries.getAliasMap("/parent");
+        assertNotNull(aliasMap);
+        assertTrue(aliasMap.containsKey("child"));
+        assertEquals(List.of("", "foo", "bar", "qux", " "), aliasMap.get("child"));
+    }
+
+    @Test
+    public void test_alias_support_invalid() {
+        for (String invalidAlias : List.of(".", "..", "foo/bar")) {
+            prepareMapEntriesForAlias(invalidAlias);
+            mapEntries.doInit();
+            Map<String, Collection<String>> aliasMap = mapEntries.getAliasMap("/parent");
+            assertEquals(Collections.emptyMap(), aliasMap);
+        }
+    }
+
+    private void prepareMapEntriesForAlias(String... alias) {
         Resource parent = mock(Resource.class);
         when(parent.getPath()).thenReturn("/parent");
 
@@ -185,7 +228,7 @@ public class MapEntriesTest extends AbstractMappingMapEntriesTest {
         when(result.getParent()).thenReturn(parent);
         when(result.getPath()).thenReturn("/parent/child");
         when(result.getName()).thenReturn("child");
-        when(result.getValueMap()).thenReturn(buildValueMap(ResourceResolverImpl.PROP_ALIAS, "alias"));
+        when(result.getValueMap()).thenReturn(buildValueMap(ResourceResolverImpl.PROP_ALIAS, alias));
 
         when(resourceResolver.findResources(anyString(), eq("JCR-SQL2"))).thenAnswer(new Answer<Iterator<Resource>>() {
 
@@ -198,13 +241,6 @@ public class MapEntriesTest extends AbstractMappingMapEntriesTest {
                 }
             }
         });
-
-        mapEntries.doInit();
-
-        Map<String, Collection<String>> aliasMap = mapEntries.getAliasMap("/parent");
-        assertNotNull(aliasMap);
-        assertTrue(aliasMap.containsKey("child"));
-        assertEquals(Collections.singletonList("alias"), aliasMap.get("child"));
     }
 
     @Test
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/PathGeneratorTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/PathGeneratorTest.java
index 36b8bb0..b429124 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/PathGeneratorTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/PathGeneratorTest.java
@@ -103,6 +103,20 @@ public class PathGeneratorTest {
         assertThat(paths, Matchers.hasItems("/alias1/bar", "/alias2/bar", "/foo/bar"));
     }
 
+    // test for SLING-12399
+    @Test
+    public void subPathWithMultipleIncludingEmptyAliases() {
+        
+        PathGenerator builder = new PathGenerator();
+        builder.insertSegment(emptyList(), "bar");
+        builder.insertSegment(asList("", "alias1"), "foo");
+        
+        List<String> paths = builder.generatePaths();
+        
+        assertThat(paths, Matchers.hasSize(2));
+        assertThat(paths, Matchers.hasItems("/alias1/bar", "/foo/bar"));
+    }
+
     @Test
     public void subPathWithComplexAliasesSetup() {