Jared Jacobs created HTTPCORE-787:
-------------------------------------

             Summary: URIBuilder.getPath() should escape each segment
                 Key: HTTPCORE-787
                 URL: https://issues.apache.org/jira/browse/HTTPCORE-787
             Project: HttpComponents HttpCore
          Issue Type: Bug
          Components: HttpCore
    Affects Versions: 5.3.6
            Reporter: Jared Jacobs


When a path contains escaped characters, {{getPath()}} incorrectly returns them 
unescaped.

Note that {{toString()}} correctly returns the characters escaped. 
{{getPath()}} should behave like {{toString()}} in this regard.
{code:java}
@Test
void testUriBuilder() throws URISyntaxException {
    String path = "/a/b/zzz%2Fzzz/c/d";
    assertEquals(new URIBuilder(path).toString(), path);
    assertEquals(new URIBuilder(path).getPathSegments(), List.of("a", "b", 
"zzz/zzz", "c", "d"));
    assertEquals(new URIBuilder(path).getPath(), path);
} {code}
The last {{assertEquals}} above fails with:
{quote}{{Expected: /a/b/zzz%2Fzzz/c/d}}
{{Actual:   /a/b/zzz/zzz/c/d}}
{quote}
As you can see, failing to escape path segments can break a URL by, for 
example, introducing new path segments by subdividing a path segment with new 
(unescaped) slashes.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to