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() {