/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.wicket.request.cycle;
import java.util.Arrays;
import org.apache.wicket.mock.MockWebRequest;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.UrlRenderer;
import org.junit.Assert;
import org.junit.Test;
/**
* @author Matej Knopp
*/
public class UrlRendererTest extends Assert
{
/**
*
*/
@Test
public void test1()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("foo/bar/baz?a=b")));
assertEquals("./xyz?x=y", r1.renderUrl(Url.parse("foo/bar/xyz?x=y")));
assertEquals("./baz/xyz?x=y", r1.renderUrl(Url.parse("foo/bar/baz/xyz?x=y")));
assertEquals("../aaa/xyz?x=y", r1.renderUrl(Url.parse("foo/aaa/xyz?x=y")));
assertEquals("../../bbb/aaa/xyz?x=y", r1.renderUrl(Url.parse("bbb/aaa/xyz?x=y")));
}
/**
*
*/
@Test
public void test2()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("foo/bar/baz?a=b")));
assertEquals("../../foo?x=y", r1.renderUrl(Url.parse("foo?x=y")));
assertEquals("../../aaa?x=y", r1.renderUrl(Url.parse("aaa?x=y")));
}
/**
*
*/
@Test
public void test3()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("?a=b")));
assertEquals("./a/b/c?x=y", r1.renderUrl(Url.parse("a/b/c?x=y")));
}
/**
*
*/
@Test
public void test5()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("url")));
assertEquals("./url?1", r1.renderUrl(Url.parse("url?1")));
}
/**
*
*/
@Test
public void test6()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("url/")));
assertEquals("./x?1", r1.renderUrl(Url.parse("url/x?1")));
}
/**
*
*/
@Test
public void test7()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(
Url.parse("MyTestPage/indexed1/indexed2/indexed3?10-27.ILinkListener-l2&p1=v1")));
assertEquals("../../../MyTestPage?10", r1.renderUrl(Url.parse("MyTestPage?10")));
}
/**
*
*/
@Test
public void test8()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(
Url.parse("en/first-test-page?16-1.ILinkListener-l1")));
assertEquals("./first-test-page/indexed1/indexed2/indexed3?p1=v1",
r1.renderUrl(Url.parse("en/first-test-page/indexed1/indexed2/indexed3?p1=v1")));
}
/**
*
*/
@Test
public void test9()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("a/b/q/d/e")));
assertEquals("../../../q/c/d/e", r1.renderUrl(Url.parse("a/q/c/d/e")));
}
/**
*
*/
@Test
public void test10()
{
MockWebRequest request = new MockWebRequest(Url.parse("a/b/q/d/e"), "/contextPath",
"/filterPath", "../");
UrlRenderer r = new UrlRenderer(request);
assertEquals("../../../../../", r.renderContextRelativeUrl(""));
assertEquals("../../../../../", r.renderContextRelativeUrl("/"));
assertEquals("../../../../../f", r.renderContextRelativeUrl("/f"));
assertEquals("../../../../../../f", r.renderContextRelativeUrl("../f"));
try
{
r.renderContextRelativeUrl(null);
fail("Null 'url' is not allowed!");
}
catch (IllegalArgumentException iax)
{
assertTrue(true);
}
}
/**
* <a href="https://issues.apache.org/jira/browse/WICKET-3337">WICKET-3337</a>
*/
@Test
public void test11()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("a")));
assertEquals(".", r1.renderUrl(Url.parse("")));
}
/**
* <a href="https://issues.apache.org/jira/browse/WICKET-3567">WICKET-3567</a>
*/
@Test
public void test12()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("?0")));
assertEquals("./", r1.renderUrl(Url.parse("")));
}
/**
* https://issues.apache.org/jira/browse/WICKET-4401
*
* A Url should not ends with '..' because some web containers do not handle it properly. Using
* '../' works better.
*/
@Test
public void test13()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("foo/bar")));
assertEquals("../", r1.renderUrl(Url.parse("")));
}
/**
* WICKET-4920 prevent double slash
*/
@Test
public void test14()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(new Url()));
assertEquals(
"./;jsessionid=1p87c5424zjuvd57kljcu2bwa?0-1.IBehaviorListener.1-component",
r1.renderRelativeUrl(Url.parse("http://localhost:8080/;jsessionid=1p87c5424zjuvd57kljcu2bwa?0-1.IBehaviorListener.1-component")));
}
/**
* WICKET-4935 prevent another double slash
*/
@Test
public void test15()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("private/AdminPage")));
assertEquals("../signIn;jsessionid=16k3wqa9c4sgq1cnp7fisa20u",
r1.renderRelativeUrl(Url.parse("/signIn;jsessionid=16k3wqa9c4sgq1cnp7fisa20u")));
}
/**
* prevent another double slash when common prefix is present
*/
@Test
public void test16()
{
UrlRenderer r1 = new UrlRenderer(
new MockWebRequest(Url.parse("private/AdminPage")).setContextPath("context"));
assertEquals("../signIn;jsessionid=16k3wqa9c4sgq1cnp7fisa20u",
r1.renderRelativeUrl(Url.parse("/context/signIn;jsessionid=16k3wqa9c4sgq1cnp7fisa20u")));
}
/**
* https://issues.apache.org/jira/browse/WICKET-5468
*/
@Test
public void renderUrlWithTrailingDotsInQueryString()
{
UrlRenderer r1 = new UrlRenderer(new MockWebRequest(Url.parse("some/path")));
assertEquals("./path?a=b..", r1.renderUrl(Url.parse("some/path?a=b..")));
}
/**
* Verify that absolute urls are rendered as is, ignoring the current client url and base url
* completely.
*
* https://issues.apache.org/jira/browse/WICKET-4466
*/
@Test
public void renderAbsoluteUrl()
{
String absoluteUrl = "http://www.example.com/some/path.ext";
Url url = Url.parse(absoluteUrl);
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("foo/bar")));
String renderedUrl = renderer.renderUrl(url);
assertEquals(absoluteUrl, renderedUrl);
}
@Test
public void renderFullUrlWithRelativeArgument()
{
Url baseUrl = Url.parse("one/two/three");
baseUrl.setProtocol("http");
baseUrl.setHost("www.example.com");
baseUrl.setPort(8888);
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(baseUrl));
renderer.setBaseUrl(baseUrl); // this is needed because MockWebRequest cuts data
String fullUrl = renderer.renderFullUrl(Url.parse("../four"));
assertEquals("http://www.example.com:8888/one/four", fullUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-4514
*/
@Test
public void renderFullUrlWithAbsoluteArgument()
{
Url baseUrl = Url.parse("one/two/three");
baseUrl.setProtocol("http");
baseUrl.setHost("www.example.com");
baseUrl.setPort(8888);
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(baseUrl));
renderer.setBaseUrl(baseUrl); // this is needed because MockWebRequest cuts data
String fullUrl = renderer.renderFullUrl(Url.parse("/four")); // url starting with slash is
// considered absolute
assertEquals("http://www.example.com:8888/four", fullUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-4561
* https://issues.apache.org/jira/browse/WICKET-4562
*/
@Test
public void renderUrlWithRelativeArgument()
{
Url baseUrl = Url.parse("one/two/three");
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(baseUrl));
baseUrl.setProtocol("http");
baseUrl.setHost("www.example.com");
baseUrl.setPort(8888);
renderer.setBaseUrl(baseUrl);
Url newUrl = Url.parse("four");
newUrl.setProtocol("https");
String fullUrl = renderer.renderUrl(newUrl);
assertEquals("https://www.example.com:8888/four", fullUrl);
newUrl = Url.parse("./four");
newUrl.setProtocol("https");
fullUrl = renderer.renderUrl(newUrl);
assertEquals("https://www.example.com:8888/four", fullUrl);
newUrl = Url.parse("./././four");
newUrl.setProtocol("https");
fullUrl = renderer.renderUrl(newUrl);
assertEquals("https://www.example.com:8888/four", fullUrl);
newUrl = Url.parse("../four");
newUrl.setProtocol("https");
fullUrl = renderer.renderUrl(newUrl);
assertEquals("https://www.example.com:8888/four", fullUrl);
newUrl = Url.parse(".././four");
newUrl.setProtocol("https");
fullUrl = renderer.renderUrl(newUrl);
assertEquals("https://www.example.com:8888/four", fullUrl);
newUrl = Url.parse("../../../../four");
newUrl.setProtocol("https");
fullUrl = renderer.renderUrl(newUrl);
assertEquals("https://www.example.com:8888/four", fullUrl);
}
@Test
public void renderFullUrlAsRelativeToAnAbsoluteBaseUrl()
{
Url baseUrl = Url.parse("http://host:8080/contextPath/filterPath/a/b/c/d");
Url encodedFullUrl = Url.parse("http://host:8080/contextPath/filterPath/a/b;jsessionid=123456");
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(baseUrl));
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../b;jsessionid=123456", encodedRelativeUrl);
}
@Test
public void renderFullUrlAsRelativeToBaseUrlWithoutSchemeHostnameAndPort()
{
Url baseUrl = Url.parse("/contextPath/filterPath/a/b/c/d");
Url encodedFullUrl = Url.parse("http://host:8080/contextPath/filterPath/a/b;jsessionid=123456");
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(baseUrl));
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../b;jsessionid=123456", encodedRelativeUrl);
}
@Test
public void renderFullUrlAsRelativeToBaseUrlWithoutContextAndFilterPaths()
{
Url baseUrl = Url.parse("a/b/c/d"); // base url without context path and filter path
Url encodedFullUrl = Url.parse("http://host:8080/contextPath/filterPath/a/b;jsessionid=123456");
MockWebRequest request = new MockWebRequest(baseUrl);
request.setContextPath("contextPath");
request.setFilterPath("filterPath");
UrlRenderer renderer = new UrlRenderer(request);
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../b;jsessionid=123456", encodedRelativeUrl);
}
@Test
public void renderFullUrlAsRelativeToBaseUrlWithoutComposedContextAndFilterPaths()
{
Url baseUrl = Url.parse("a/b/c/d"); // base url without context path and filter path
Url encodedFullUrl = Url.parse("http://host:8080/context/path/filter/path/a/b;jsessionid=123456");
MockWebRequest request = new MockWebRequest(baseUrl);
request.setContextPath("context/path");
request.setFilterPath("filter/path");
UrlRenderer renderer = new UrlRenderer(request);
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../b;jsessionid=123456", encodedRelativeUrl);
}
@Test
public void renderFullUrlAsRelativeToBaseUrlWithoutContextPath()
{
Url baseUrl = Url.parse("a/b/c/d"); // base url without context path and filter path
Url encodedFullUrl = Url.parse("http://host:8080/filterPath/a/b;jsessionid=123456");
MockWebRequest request = new MockWebRequest(baseUrl);
request.setFilterPath("filterPath");
UrlRenderer renderer = new UrlRenderer(request);
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../b;jsessionid=123456", encodedRelativeUrl);
}
@Test
public void renderFullUrlAsRelativeToBaseUrlWithoutComposedContextPath()
{
Url baseUrl = Url.parse("a/b/c/d"); // base url without context path and filter path
Url encodedFullUrl = Url.parse("http://host:8080/filter/path/a/b;jsessionid=123456");
MockWebRequest request = new MockWebRequest(baseUrl);
request.setFilterPath("filter/path");
UrlRenderer renderer = new UrlRenderer(request);
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../b;jsessionid=123456", encodedRelativeUrl);
}
@Test
public void renderFullUrlAsRelativeToBaseUrlWithoutFilterPath()
{
Url baseUrl = Url.parse("a/b/c/d"); // base url without context path and filter path
Url encodedFullUrl = Url.parse("http://host:8080/contextPath/a/b;jsessionid=123456");
MockWebRequest request = new MockWebRequest(baseUrl);
request.setContextPath("contextPath");
UrlRenderer renderer = new UrlRenderer(request);
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../b;jsessionid=123456", encodedRelativeUrl);
}
@Test
public void renderFullUrlAsRelativeToBaseUrlWithoutComposedFilterPath()
{
Url baseUrl = Url.parse("a/b/c/d"); // base url without context path and filter path
Url encodedFullUrl = Url.parse("http://host:8080/context/path/a/b;jsessionid=123456");
MockWebRequest request = new MockWebRequest(baseUrl);
request.setContextPath("context/path");
UrlRenderer renderer = new UrlRenderer(request);
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../b;jsessionid=123456", encodedRelativeUrl);
}
@Test
public void renderFullUrlAsRelativeToBaseUrlWithFirstSegmentsEqualToTheContextPath()
{
// base url without context path and filter path
// 'contextPath' here is a normal segment with the same value
Url baseUrl = Url.parse("contextPath/a/b/c/d");
// here 'contextPath' is the actual context path and should be ignored
Url encodedFullUrl = Url.parse("http://host:8080/contextPath/a/b;jsessionid=123456");
MockWebRequest request = new MockWebRequest(baseUrl);
request.setContextPath("contextPath");
UrlRenderer renderer = new UrlRenderer(request);
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../../../a/b;jsessionid=123456", encodedRelativeUrl);
}
@Test
public void renderFullUrlAsRelativeToBaseUrlWithFirstSegmentsEqualToTheContextAndFilterPaths()
{
// base url without context path and filter path
// 'filterPath' here is a normal segment with the same value
Url baseUrl = Url.parse("filterPath/a/b/c/d");
// here 'contextPath' is the actual context path and should be ignored
Url encodedFullUrl = Url.parse("http://host:8080/contextPath/filterPath/a/b;jsessionid=123456");
MockWebRequest request = new MockWebRequest(baseUrl);
request.setContextPath("contextPath");
request.setFilterPath("filterPath");
UrlRenderer renderer = new UrlRenderer(request);
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../../../a/b;jsessionid=123456", encodedRelativeUrl);
}
@Test
public void renderFullUrlAsRelativeToBaseUrlWithFirstSegmentsEqualToTheFilterPath()
{
// base url without context path and filter path
// 'filterPath' here is a normal segment with the same value
Url baseUrl = Url.parse("filterPath/a/b/c/d");
// here 'filterPath' is the actual filter path and should be ignored
Url encodedFullUrl = Url.parse("http://host:8080/filterPath/a/b;jsessionid=123456");
MockWebRequest request = new MockWebRequest(baseUrl);
request.setFilterPath("filterPath");
UrlRenderer renderer = new UrlRenderer(request);
String encodedRelativeUrl = renderer.renderRelativeUrl(encodedFullUrl);
assertEquals("../../../../a/b;jsessionid=123456", encodedRelativeUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5123
*/
@Test
public void renderHomeUrl()
{
Url baseUrl = Url.parse("login");
MockWebRequest request = new MockWebRequest(baseUrl);
UrlRenderer renderer = new UrlRenderer(request);
Url homeUrl = Url.parse("");
String encodedRelativeUrl = renderer.renderUrl(homeUrl);
assertEquals(".", encodedRelativeUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5065
*/
@Test
public void renderAbsoluteWithoutHost()
{
Url baseUrl = Url.parse("a/b");
MockWebRequest request = new MockWebRequest(baseUrl);
UrlRenderer renderer = new UrlRenderer(request);
Url absoluteUrl = Url.parse("/c/d");
String encodedRelativeUrl = renderer.renderUrl(absoluteUrl);
assertEquals("/c/d", encodedRelativeUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5065
*/
@Test
public void renderAbsoluteWithoutScheme()
{
Url baseUrl = Url.parse("a/b");
MockWebRequest request = new MockWebRequest(baseUrl);
UrlRenderer renderer = new UrlRenderer(request);
Url absoluteUrl = Url.parse("//host/c/d");
String encodedRelativeUrl = renderer.renderUrl(absoluteUrl);
assertEquals("//host/c/d", encodedRelativeUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5065
*/
@Test
public void renderAbsoluteWithoutSchemeWithPort()
{
Url baseUrl = Url.parse("a/b");
MockWebRequest request = new MockWebRequest(baseUrl);
UrlRenderer renderer = new UrlRenderer(request);
Url absoluteUrl = Url.parse("//host:1234/c/d");
String encodedRelativeUrl = renderer.renderUrl(absoluteUrl);
assertEquals("//host:1234/c/d", encodedRelativeUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5073
*/
@Test
public void removeCommonPrefixesWicket5073()
{
Url baseUrl = new Url(Arrays.asList(""), Arrays.<Url.QueryParameter> asList());
MockWebRequest request = new MockWebRequest(baseUrl);
request.setContextPath("/qs");
request.setFilterPath("");
UrlRenderer renderer = new UrlRenderer(request);
renderer.setBaseUrl(baseUrl);
String rendered = renderer.renderRelativeUrl(Url.parse("wicket/resource/org.apache.wicket.Application/x.css"));
assertEquals("./wicket/resource/org.apache.wicket.Application/x.css", rendered);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5202
*/
@Test
public void removeCommonPrefixesWithJSessionId()
{
Url baseUrl = new Url(Arrays.asList("", "SomePage;jsessionid=1234"),
Arrays.<Url.QueryParameter> asList());
MockWebRequest request = new MockWebRequest(baseUrl);
request.setContextPath("/");
request.setFilterPath("filter");
UrlRenderer renderer = new UrlRenderer(request);
renderer.setBaseUrl(baseUrl);
String rendered = renderer.renderRelativeUrl(Url.parse("/filter;jsessionid=1234"));
assertEquals("../", rendered);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5774
*/
@Test
public void renderFullUrlWithNoOpLeadingSegments()
{
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("any/thing")));
String fullUrl = renderer.renderFullUrl(Url.parse("http://www.example.com:8888/./../one/two/three"));
assertEquals("http://www.example.com:8888/one/two/three", fullUrl);
fullUrl = renderer.renderFullUrl(Url.parse("http://www.example.com:8888/.././one/two/three"));
assertEquals("http://www.example.com:8888/one/two/three", fullUrl);
fullUrl = renderer.renderFullUrl(Url.parse("http://www.example.com:8888/one/.././two/three"));
assertEquals("http://www.example.com:8888/two/three", fullUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5774
*/
@Test
public void renderContextAbsoluteUrlWithNoOpLeadingSegments()
{
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("any/thing")));
String fullUrl = renderer.renderFullUrl(Url.parse("/./../one/two/three"));
assertEquals("/one/two/three", fullUrl);
fullUrl = renderer.renderFullUrl(Url.parse("/.././one/two/three"));
assertEquals("/one/two/three", fullUrl);
fullUrl = renderer.renderFullUrl(Url.parse("/one/.././two/three"));
assertEquals("/two/three", fullUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5970
*/
@Test
public void renderFullUrlWithFragment()
{
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("authorize")));
Url urlWithFragment = Url.parse("http://localhost:8080/redirect#access_token=123456");
assertEquals("access_token=123456", urlWithFragment.getFragment());
String renderedUrl = renderer.renderFullUrl(urlWithFragment);
assertEquals("http://localhost:8080/redirect#access_token=123456", renderedUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5970
*/
@Test
public void renderRelativeUrlWithFragment()
{
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("authorize")));
Url urlWithFragment = Url.parse("http://localhost:8080/redirect#access_token=123456");
assertEquals("access_token=123456", urlWithFragment.getFragment());
String renderedUrl = renderer.renderRelativeUrl(urlWithFragment);
assertEquals("./redirect#access_token=123456", renderedUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-5970
*/
@Test
public void renderUrlWithFragment()
{
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("authorize")));
Url urlWithFragment = Url.parse("http://localhost:8080/redirect#access_token=123456");
assertEquals("access_token=123456", urlWithFragment.getFragment());
String renderedUrl = renderer.renderUrl(urlWithFragment);
assertEquals("http://localhost:8080/redirect#access_token=123456", renderedUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-6230
*/
@Test
public void renderUrlWithManyDotsAtTheBeginning1()
{
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("a")));
String renderedUrl = renderer.renderUrl(Url.parse("...abc"));
assertEquals("./...abc", renderedUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-6230
*/
@Test
public void renderUrlWithManyDotsAtTheBeginning2()
{
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("a/b")));
String renderedUrl = renderer.renderUrl(Url.parse("...abc"));
assertEquals("../...abc", renderedUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-6230
*/
@Test
public void renderUrlWithManyDotsAtTheEnd1()
{
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("a")));
String renderedUrl = renderer.renderUrl(Url.parse("abc..."));
assertEquals("./abc...", renderedUrl);
}
/**
* https://issues.apache.org/jira/browse/WICKET-6230
*/
@Test
public void renderUrlWithManyDotsAtTheEnd2()
{
UrlRenderer renderer = new UrlRenderer(new MockWebRequest(Url.parse("a/b")));
String renderedUrl = renderer.renderUrl(Url.parse("abc..."));
assertEquals("../abc...", renderedUrl);
}
}