WICKET-4030 merging new test
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/9573a745 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/9573a745 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/9573a745 Branch: refs/heads/wicket-1.5.x Commit: 9573a74564bdfe50b2baa96431779aaf14bcf700 Parents: ddb89f5 Author: Emond Papegaaij <[email protected]> Authored: Tue Jan 17 10:07:40 2012 +0100 Committer: Igor Vaynberg <[email protected]> Committed: Tue Jan 17 14:48:35 2012 -0800 ---------------------------------------------------------------------- .../wicket/util/tester/WicketTesterTest.java | 43 +++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/9573a745/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 4bd40d3..59ce896 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 @@ -36,16 +36,21 @@ import org.apache.wicket.ajax.AjaxEventBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.WicketAjaxReference; import org.apache.wicket.ajax.markup.html.AjaxLink; +import org.apache.wicket.authorization.Action; +import org.apache.wicket.authorization.IAuthorizationStrategy; +import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.markup.html.pages.AccessDeniedPage; import org.apache.wicket.model.IModel; import org.apache.wicket.protocol.http.WebApplication; import org.apache.wicket.request.IRequestHandler; import org.apache.wicket.request.IRequestParameters; import org.apache.wicket.request.Url; +import org.apache.wicket.request.component.IRequestableComponent; import org.apache.wicket.request.handler.BookmarkablePageRequestHandler; import org.apache.wicket.request.handler.IPageProvider; import org.apache.wicket.request.handler.PageProvider; @@ -1112,4 +1117,42 @@ public class WicketTesterTest extends WicketTestCase // assert that the cookie is not preserved for the next request cycle assertNull(tester.getRequest().getCookies()); } + + /** + * Tests if the access-denied-page is rendered if a page is rerendered for which you don't have + * permission anymore + */ + @Test + public void rerenderNotAllowed() + { + tester.setExposeExceptions(false); + class YesNoPageAuthorizationStrategy implements IAuthorizationStrategy + { + private boolean allowed = true; + + public <T extends IRequestableComponent> boolean isInstantiationAuthorized( + Class<T> componentClass) + { + if (componentClass == AccessDeniedPage.class) + return true; + return allowed || !WebPage.class.isAssignableFrom(componentClass); + } + + public boolean isActionAuthorized(Component component, Action action) + { + if (component instanceof AccessDeniedPage) + return true; + return allowed || !(component instanceof WebPage); + } + } + YesNoPageAuthorizationStrategy strategy = new YesNoPageAuthorizationStrategy(); + tester.getApplication().getSecuritySettings().setAuthorizationStrategy(strategy); + DummyHomePage start = tester.startPage(DummyHomePage.class); + tester.assertRenderedPage(DummyHomePage.class); + strategy.allowed = false; + tester.startPage(start); + tester.assertRenderedPage(tester.getApplication() + .getApplicationSettings() + .getAccessDeniedPage()); + } }
