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

joerghoh 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 11ba5e9  SLING-11755: resource resolver: improve test coverage for 
vanity path targets (#92)
11ba5e9 is described below

commit 11ba5e9ce8b091b43fbaee355bb67ea7edcd74d9
Author: Julian Reschke <[email protected]>
AuthorDate: Thu Jan 19 10:55:17 2023 +0100

    SLING-11755: resource resolver: improve test coverage for vanity path 
targets (#92)
    
    * SLING-11755: resource resolver: add test coverage for URL patterns in 
vanity paths
    * SLING-11755: resource resolver: add test coverage for edge cases in 
vanity paths
    * SLING-11755: fix host names
    * SLING-11755: reformat/comment
    * SLING-11755: add test for path-less URL pattern
---
 .../impl/mapping/ResourceMapperImplTest.java       | 80 ++++++++++++++++++++--
 1 file changed, 75 insertions(+), 5 deletions(-)

diff --git 
a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImplTest.java
 
b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImplTest.java
index 88f610e..e0094ca 100644
--- 
a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImplTest.java
+++ 
b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImplTest.java
@@ -114,8 +114,15 @@ public class ResourceMapperImplTest {
         resourceProvider.putResource("/parent/child", PROP_ALIAS, 
"alias-child"); // child has alias
         resourceProvider.putResource("/parent/child-multiple", PROP_ALIAS, 
"alias-child-1", "alias-child-2"); // child has multiple alias
         resourceProvider.putResource("/vain", "sling:vanityPath", "/vanity-a", 
"/vanity-b"); // vanity path
-        // vanity path with URL shaped target, see SLING-11749
-        resourceProvider.putResource("/vain-url", "sling:vanityPath", /* 
"https://example.com";, TODO: NPE*/ "https://example/";, "https://example/foo";); 
+
+        // Tests to complete coverage of vanity path formats; test 
expectations based on behavior as of Jan 2023, not necessarily common sense 
+        resourceProvider.putResource("/vain-ext", "sling:vanityPath", 
"/vanity-a/foo.txt", "/vanity.bar/foo"); // vanity path with extensions
+        resourceProvider.putResource("/vain-empty", "sling:vanityPath", ""); 
// vanity path empty
+        resourceProvider.putResource("/vain-relative", "sling:vanityPath", 
"foobar"); // vanity path not absolute
+        resourceProvider.putResource("/vain-url", "sling:vanityPath", 
"https://example.com/";, "https://example.com/foo";); 
+        resourceProvider.putResource("/vain-url-invalid", "sling:vanityPath", 
"://pathOfMalformed"); 
+        resourceProvider.putResource("/vain-url-nopath", "sling:vanityPath", 
"https://example.com";); 
+
         // build /etc/map structure
         resourceProvider.putResource("/etc");
         resourceProvider.putResource("/etc/map");
@@ -330,11 +337,47 @@ public class ResourceMapperImplTest {
             .verify(resolver, req);
     }
 
+    /**
+     * Validates that vanity paths are returned as mappings; test removal of 
extensions.
+     */
+    @Test
+    public void mapResourceWithVanityPathsWithExt() {
+        ExpectedMappings.existingResource("/vain-ext")
+            .singleMapping("/vain-ext")
+            .singleMappingWithRequest("/app/vain-ext")
+            .allMappings("/vain-ext", "/vanity.bar/foo", "/vanity-a/foo")
+            .allMappingsWithRequest("/app/vain-ext", "/app/vanity.bar/foo", 
"/app/vanity-a/foo")
+            .verify(resolver, req);
+    }
+
+    /**
+     * Validates that vanity paths are returned as mappings; test empty target
+     */
+    @Test
+    public void mapResourceWithVanityPathsTargetEmpty() {
+        ExpectedMappings.existingResource("/vain-empty")
+            .singleMapping("/vain-empty")
+            .singleMappingWithRequest("/app/vain-empty")
+            .allMappings("/vain-empty")
+            .allMappingsWithRequest("/app/vain-empty")
+            .verify(resolver, req);
+    }
+
+    /**
+     * Validates that vanity paths are returned as mappings; test non-abs 
target
+     */
+    @Test
+    public void mapResourceWithVanityPathsTargetNonAbs() {
+        ExpectedMappings.existingResource("/vain-relative")
+            .singleMapping("/vain-relative")
+            .singleMappingWithRequest("/app/vain-relative")
+            .allMappings("/vain-relative", "/foobar")
+            .allMappingsWithRequest("/app/vain-relative", "/app/foobar")
+            .verify(resolver, req);
+    }
+
     /**
      * Validates that vanity paths are returned as mappings, URL shaped 
variants (see see SLING-11749)
-     *
-     * <p>As vanity paths are alternate paths rather than variations so they 
will not be returned
-     * from the singleMapping() methods.</p>
      */
     @Test
     public void mapResourceWithVanityPathsURLTarget() {
@@ -346,6 +389,33 @@ public class ResourceMapperImplTest {
             .verify(resolver, req);
     }
 
+    /**
+     * Validates that vanity paths are returned as mappings, URL shaped 
variants, empty path (see see SLING-11757)
+     */
+    @Test(expected = NullPointerException.class)
+    public void mapResourceWithVanityPathsURLTargetNoPath() {
+        ExpectedMappings.existingResource("/vain-url-nopath")
+            .singleMapping("/vain-url-nopath")
+            .singleMappingWithRequest("/app/vain-url-nopath")
+            .allMappings("/vain-url-nopath", "see SLING-11757")
+            .allMappingsWithRequest("/app/vain-url-nopath", "see SLING-11757")
+            .verify(resolver, req);
+    }
+
+    /**
+     * Validates that vanity paths are returned as mappings, invalid URL 
shaped variants (see see SLING-11749)
+     * @throws MalformedURLException 
+     */
+    @Test
+    public void mapResourceWithVanityPathsInvalidURLTarget() {
+        ExpectedMappings.existingResource("/vain-url-invalid")
+            .singleMapping("/vain-url-invalid")
+            .singleMappingWithRequest("/app/vain-url-invalid")
+            .allMappings("/vain-url-invalid")
+            .allMappingsWithRequest("/app/vain-url-invalid")
+            .verify(resolver, req);
+    }
+
     /**
      * Validates that the mapping for a non-existing resource that is the 
target of an alias
      * is the alias itself

Reply via email to