@Test(dataProvider = "pathSegmentAllowedChars") public void shouldNotEncodeAllowedCharactersInPath(String character) { String path = "/customercare/subscribe.html" + character + "sessid=nXF5jQ8rTW3bAbh6djb2hYJE3D.web-app-02"; assertThat(url(path).build().encodedUri(), is(path)); } @Test
@Test public void shouldReturnTheRawURIPassedIn() throws Exception { assertThat(url("http://example.com/?foo=a%2Bb%3Dc").build().encodedUri(), is("http://example.com/?foo=a%2Bb%3Dc")); }
@Test public void handlesPathSegmentEncodedInUTF8() { Url url = url("http://example.com/foo/\u2603") .build(); assertThat(url.encodedUri(), is("http://example.com/foo/\u2603")); }
@Test public void canDecodeAndEncodeThePath() { assertThat(url("/landing/de408991/%D7%9E%D7%9C%D7%95%D7%A0%D7%95%D7%AA-%D7%A7%D7%95%D7%A4%D7%A0%D7%94%D7%92%D7%9F-%D7%93%D7%A0%D7%9E%D7%A8%D7%A7/") .build().encodedUri(), is("/landing/de408991/%D7%9E%D7%9C%D7%95%D7%A0%D7%95%D7%AA-%D7%A7%D7%95%D7%A4%D7%A0%D7%94%D7%92%D7%9F-%D7%93%D7%A0%D7%9E%D7%A8%D7%A7/")); }
@Test public void shouldPreserveLastTrailingPathSeparator() { assertThat(url("/landing/foo/bar").build().encodedUri(), is("/landing/foo/bar")); assertThat(url("/landing/foo/bar/").build().encodedUri(), is("/landing/foo/bar/")); }
@Test public void spaceIsAlsoPlusIsAlsoHex20() { String ENCODED_SPACE = "/customercare/subscribe.html%20sessid=nXF5jQ8rTW3bAbh6djb2hYJE3D.web-app-02"; String path = "/customercare/subscribe.html+sessid=nXF5jQ8rTW3bAbh6djb2hYJE3D.web-app-02"; assertThat(url(path).build().encodedUri(), is(path)); assertThat(url(ENCODED_SPACE).build().encodedUri(), is(ENCODED_SPACE)); }
@Test public void acceptsEmptyQueryString() { Url url = url("/webapp/assets/images/icons.eot?").build(); assertThat(url.encodedUri(), is("/webapp/assets/images/icons.eot?")); assertThat(url.queryParams().isEmpty(), is(true)); }
@Test public void canEncodeTheModifiedUrl() throws Exception { Url url = url("/search.do?foo=a%2Bb%3Dc").build(); Url newUrl = url.newBuilder().path("/v1/search").build(); assertThat(newUrl.encodedUri(), is("/v1/search?foo=a%2Bb%3Dc")); }