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());
+       }
 }

Reply via email to