WICKET-5486 WebPageRenderer should honor RedirectPolicy.ALWAYS_REDIRECT more consistently
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a79ed51e Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a79ed51e Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a79ed51e Branch: refs/heads/master Commit: a79ed51e9b6a667cf99c30e0a87e699cadabd648 Parents: 16adb63 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Mon Feb 24 16:46:31 2014 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Mon Feb 24 16:46:31 2014 +0200 ---------------------------------------------------------------------- .../request/handler/render/WebPageRenderer.java | 2 +- .../handler/render/WebPageRendererTest.java | 32 +++++++++++++++++--- 2 files changed, 29 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/a79ed51e/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java index 8c99c13..1b98bed 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java @@ -342,7 +342,7 @@ public class WebPageRenderer extends PageRenderer || ((isOnePassRender() && notForcedRedirect(getRedirectPolicy())) || (targetUrl .equals(currentUrl) && notNewAndNotStatelessPage(isNewPageInstance(), isPageStateless()))) || (targetUrl.equals(currentUrl) && isRedirectToRender()) - || shouldPreserveClientUrl(cycle); + || (shouldPreserveClientUrl(cycle) && notForcedRedirect(getRedirectPolicy())); } private static boolean notNewAndNotStatelessPage(boolean newPageInstance, boolean pageStateless) http://git-wip-us.apache.org/repos/asf/wicket/blob/a79ed51e/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java b/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java index 411ed09..78e16e8 100644 --- a/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java @@ -275,6 +275,30 @@ public class WebPageRendererTest verify(response, never()).sendRedirect(anyString()); } + /** + * Tests that when {@link WebRequest#shouldPreserveClientUrl()} is <code>true</code> + * but {@link RenderPageRequestHandler#getRedirectPolicy()} is + * {@link RedirectPolicy#ALWAYS_REDIRECT} a redirect must be issued + * + * https://issues.apache.org/jira/browse/WICKET-5486 + */ + @Test + public void testShouldPreserveClientUrlOverruledByRedirectPolicyAlwaysRedirect() + { + TestPageRenderer renderer = new TestPageRenderer(handler); + renderer.shouldPreserveClientUrl = true; + renderer.redirectPolicy = RedirectPolicy.ALWAYS_REDIRECT; + + when(urlRenderer.getBaseUrl()).thenReturn(Url.parse("something")); + + when(requestCycle.mapUrlFor(eq(handler))).thenReturn(Url.parse("different")); + + renderer.respond(requestCycle); + + verify(response, never()).write(any(byte[].class)); + verify(response).sendRedirect(anyString()); + } + /** * Tests that when there is already saved buffered response then it will be used without * checking the rendering strategies or redirect policies @@ -693,10 +717,10 @@ public class WebPageRendererTest public void shouldRenderPageAndWriteResponseVariation() { String match = - " X XXXXXXXX" + - " XXXXXXXXXXXX" + - " X XXXXXXXX" + - " XXXXXXXXXXXX" + + " X X " + + " XXXX XXXX" + + " X X " + + " XXXX XXXX" + " " + " " + " " +
