Updated Branches: refs/heads/master fe890d654 -> b2e7f3bfb
try to make a relative path, problem is still that if that is not possible a full path will be send to the guard. Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b2e7f3bf Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b2e7f3bf Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b2e7f3bf Branch: refs/heads/master Commit: b2e7f3bfb7af0929b76e30db9319fb6e597c7811 Parents: fe890d6 Author: Johan Compagner <[email protected]> Authored: Sun Feb 26 14:54:39 2012 +0100 Committer: Johan Compagner <[email protected]> Committed: Sun Feb 26 15:23:04 2012 +0100 ---------------------------------------------------------------------- .../wicket/request/resource/PackageResource.java | 16 +++++++ .../wicket/util/tester/WicketTesterTest.java | 35 +++++++++++++++ 2 files changed, 51 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/b2e7f3bf/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java index f356980..571eb88 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/resource/PackageResource.java @@ -410,6 +410,22 @@ public class PackageResource extends AbstractResource implements IStaticCacheabl if (resourceStream instanceof IFixedLocationResourceStream) { realPath = ((IFixedLocationResourceStream)resourceStream).locationAsString(); + if (realPath != null) + { + int index = realPath.indexOf(path); + if (index != -1) + { + realPath = realPath.substring(index); + } + else + // TODO just fall back on the full path without a scope.. + return guard.accept(null, realPath); + } + else + { + realPath = path; + } + } return guard.accept(scope, realPath); } http://git-wip-us.apache.org/repos/asf/wicket/blob/b2e7f3bf/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java b/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java index c3e75e6..3ea0ffe 100644 --- a/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java @@ -837,6 +837,7 @@ public class WicketTesterTest extends WicketTestCase { try { + // todo, should there be a better check? because this call already fails.. tester.startPage(BlockedResourceLinkPage.class); TagTester linkTag = TagTester.createTagByAttribute(tester.getLastResponseAsString(), @@ -857,6 +858,40 @@ public class WicketTesterTest extends WicketTestCase // assertNull(getRequestCodingStrategy()); } + /** + * Test that clickLink on a ResourceLink with a ResourceReference on it works. + * + * <p> + * See also WICKET-280 Allow to access html resources + * </p> + */ + @Test + public void clickResourceLinkWithSomeCommaAppendedUrl() + { + try + { + // todo, should there be a better check? because this call already fails.. + tester.startPage(BlockedResourceLinkPage.class); + + TagTester linkTag = TagTester.createTagByAttribute(tester.getLastResponseAsString(), + "wicket:id", "link"); + String url = linkTag.getAttribute("href"); + url = url.replace("../", "wicket/"); + url += ",xml"; + tester.executeUrl(url); + fail("Accessing " + BlockedResourceLinkPage.class + " should have raised a " + + PackageResourceBlockedException.class); + } + catch (PackageResourceBlockedException e) + { +// e.printStackTrace(); + } + + tester.startPage(MockResourceLinkPage.class); + tester.clickLink("link"); + // assertNull(getRequestCodingStrategy()); + } + // IRequestTargetUrlCodingStrategy getRequestCodingStrategy() // { // String relativePath = tester.getApplication().getWicketFilter().getRelativePath(
