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

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


The following commit(s) were added to refs/heads/master by this push:
     new d6f19d3  SLING-12412: ResourceResolver: add test coverage for empty 
aliases, blank aliases, and invalid aliases (#122)
d6f19d3 is described below

commit d6f19d39f5c738d18ff21e332157913fe3cc309e
Author: Julian Reschke <[email protected]>
AuthorDate: Thu Aug 22 15:55:18 2024 +0200

    SLING-12412: ResourceResolver: add test coverage for empty aliases, blank 
aliases, and invalid aliases (#122)
---
 .../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() {
         

Reply via email to