You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by du...@apache.org on 2020/02/13 15:01:46 UTC

[sling-org-apache-sling-testing-clients] 01/02: SLING-8921 requestPath must to be encoded in SlingClient#doGet() - getUrl() implementation changed that it attempts to treat path parameter as URI path as it is defined by java.net.URI(String, String, String, String) constructor

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

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

commit 92f242872e09d6ef23702ff8276e9fd26fbb6672
Author: Alexei Krainiouk <ak...@adobe.com>
AuthorDate: Mon Dec 16 16:30:17 2019 -0800

    SLING-8921 requestPath must to be encoded in SlingClient#doGet()
    - getUrl() implementation changed that it attempts to treat path
      parameter as URI path as it is defined by
      java.net.URI(String, String, String, String) constructor
---
 .../java/org/apache/sling/testing/clients/AbstractSlingClient.java  | 6 ++++--
 .../org/apache/sling/testing/AbstractSlingClientGetUrlTest.java     | 3 +++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/testing/clients/AbstractSlingClient.java b/src/main/java/org/apache/sling/testing/clients/AbstractSlingClient.java
index 2d3f70d..1aed646 100644
--- a/src/main/java/org/apache/sling/testing/clients/AbstractSlingClient.java
+++ b/src/main/java/org/apache/sling/testing/clients/AbstractSlingClient.java
@@ -33,6 +33,7 @@ import java.io.IOException;
 import java.lang.reflect.Constructor;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -133,8 +134,9 @@ public class AbstractSlingClient implements HttpClient, Closeable {
      */
     public URI getUrl(String path) {
         try {
-            URI pathUri = slash.relativize(new URI(path));
-            return getUrl().resolve(pathUri);
+            URI pathUri = new URI(null, null, path, null);
+            URI relative = slash.relativize(pathUri);
+            return getUrl().resolve(relative);
         } catch (URISyntaxException e) {
             throw new IllegalArgumentException(e);
         }
diff --git a/src/test/java/org/apache/sling/testing/AbstractSlingClientGetUrlTest.java b/src/test/java/org/apache/sling/testing/AbstractSlingClientGetUrlTest.java
index 9af1f62..6a1b5a0 100644
--- a/src/test/java/org/apache/sling/testing/AbstractSlingClientGetUrlTest.java
+++ b/src/test/java/org/apache/sling/testing/AbstractSlingClientGetUrlTest.java
@@ -106,6 +106,9 @@ public class AbstractSlingClientGetUrlTest {
                 // External URLs
                 {"http://HOST:4502/CTX/",    "http://www.google.com", "http://www.google.com"},
                 {"http://HOST:4502/CTX/",    "http://HOST:4502/CTX/my/page.html", "http://HOST:4502/CTX/my/page.html"},
+
+                // URL encoding of the path
+                {"http://HOST:4502/CTX/",    "!@*()'~ #$%^&{}[]|\\<>?\"`", "http://host:4502/CTX/!@*()'~%20%23$%25%5E&%7B%7D%5B%5D%7C%5C%3C%3E%3F%22%60"},
         });
     }