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

Reply via email to