Updated Branches: refs/heads/wicket-1.4.x d841a285b -> 65d5554cb
WICKET-4340 Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/65d5554c Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/65d5554c Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/65d5554c Branch: refs/heads/wicket-1.4.x Commit: 65d5554cbaf8879a4fcdc38a57eabbf463f6f07a Parents: d841a28 Author: Igor Vaynberg <[email protected]> Authored: Tue Jan 17 15:07:54 2012 -0800 Committer: Igor Vaynberg <[email protected]> Committed: Tue Jan 17 15:07:54 2012 -0800 ---------------------------------------------------------------------- .../wicket/util/tester/WicketTesterTest.java | 39 +++++++++++++++ 1 files changed, 39 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/65d5554c/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java ---------------------------------------------------------------------- diff --git a/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java b/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java index 241a46b..2679ccc 100644 --- a/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java +++ b/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java @@ -33,12 +33,16 @@ import org.apache.wicket.WicketRuntimeException; import org.apache.wicket.ajax.AjaxEventBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; 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.PackageResource.PackageResourceBlockedException; +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.MockPage; import org.apache.wicket.protocol.http.WebRequestCycle; @@ -829,4 +833,39 @@ public class WicketTesterTest extends TestCase { return (Button)tester.getComponentFromLastRenderedPage("form:submit"); } + + /** + * Tests if the access-denied-page is rendered if a page is rerendered for which you don't have + * permission anymore + */ + public void testRenderNotAllowed() + { + class YesNoPageAuthorizationStrategy implements IAuthorizationStrategy + { + private boolean allowed = true; + + public <T extends Component> 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); + tester.startPage(DummyHomePage.class); + tester.assertRenderedPage(DummyHomePage.class); + strategy.allowed = false; + tester.startPage(DummyHomePage.class); + tester.assertRenderedPage(tester.getApplication() + .getApplicationSettings() + .getAccessDeniedPage()); + } }
