Updated Branches:
  refs/heads/sandbox/bookmarkable-callback-url f222fac11 -> c658316ce


WICKET-4932: asserting bookmarkable mapper doesn't encode page's class
name at callback urls for its components

Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/c658316c
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/c658316c
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/c658316c

Branch: refs/heads/sandbox/bookmarkable-callback-url
Commit: c658316ce5a70678ca5d79873d2930fb7b2e6ac7
Parents: f222fac
Author: Pedro Santos <[email protected]>
Authored: Thu Jan 10 16:19:18 2013 -0200
Committer: Pedro Santos <[email protected]>
Committed: Thu Jan 10 16:19:18 2013 -0200

----------------------------------------------------------------------
 .../mapper/AbstractBookmarkableMapperTest.java     |    7 -
 .../request/mapper/BookmarkableMapperTest.java     |  155 +++++++++------
 2 files changed, 94 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/c658316c/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
index 5a63991..a4b9cb9 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/request/mapper/AbstractBookmarkableMapperTest.java
@@ -27,7 +27,6 @@ import org.apache.wicket.protocol.http.PageExpiredException;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.component.IRequestableComponent;
-import 
org.apache.wicket.request.handler.BookmarkableListenerInterfaceRequestHandler;
 import org.apache.wicket.request.handler.ListenerInterfaceRequestHandler;
 import org.apache.wicket.request.handler.PageAndComponentProvider;
 import org.apache.wicket.request.mapper.info.PageInfo;
@@ -134,12 +133,6 @@ public class AbstractBookmarkableMapperTest extends 
WicketTestCase
                        return 0;
                }
 
-               @Override
-               protected Url 
mapBookmarkableHandler(BookmarkableListenerInterfaceRequestHandler handler)
-               {
-                       return super.mapBookmarkableHandler(handler);
-               }
-
        }
 
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/c658316c/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
index c3b013d..b53620a 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/request/mapper/BookmarkableMapperTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.request.mapper;
 
+import static org.hamcrest.CoreMatchers.nullValue;
+
 import org.apache.wicket.MockPage;
 import org.apache.wicket.markup.html.link.ILinkListener;
 import org.apache.wicket.request.IRequestHandler;
@@ -32,6 +34,8 @@ import org.apache.wicket.request.handler.PageProvider;
 import org.apache.wicket.request.handler.RenderPageRequestHandler;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.request.mapper.parameter.PageParametersEncoder;
+import org.apache.wicket.settings.IPageSettings;
+import org.apache.wicket.settings.def.PageSettings;
 import org.junit.Test;
 
 /**
@@ -40,21 +44,17 @@ import org.junit.Test;
 public class BookmarkableMapperTest extends AbstractMapperTest
 {
 
-       private final BookmarkableMapper encoder = new BookmarkableMapper(new 
PageParametersEncoder(),
-               settings)
-       {
-               @Override
-               protected IMapperContext getContext()
-               {
-                       return context;
-               }
+       private static final String FIRST_INDEXED_PARAMETER = "i1";
+       private static final String SECOND_INDEXED_PARAMETER = "i2";
+
+       private static final String SECOND_PARAMETER_NAME = "b";
+       private static final String SECOND_NAMED_PARAMETER_VALUE = "c";
+
+       private static final String FIRST_PARAMETER_NAME = "a";
+       private static final String FIRST_NAMED_PARAMETER_VALUE = "b";
+
+       private final BookmarkableMapper encoder = new 
BookmarkableMapperStub(settings);
 
-               @Override
-               protected boolean checkPageClass(java.lang.Class<? extends 
IRequestablePage> pageClass)
-               {
-                       return true;
-               }
-       };
 
        private static final String PAGE_CLASS_NAME = MockPage.class.getName();
 
@@ -92,8 +92,8 @@ public class BookmarkableMapperTest extends AbstractMapperTest
                assertEquals("indexed1", p.get(0).toString());
 
                assertEquals(2, p.getNamedKeys().size());
-               assertEquals("b", p.get("a").toString());
-               assertEquals("c", p.get("b").toString());
+               assertEquals(FIRST_NAMED_PARAMETER_VALUE, 
p.get(FIRST_PARAMETER_NAME).toString());
+               assertEquals(SECOND_NAMED_PARAMETER_VALUE, 
p.get(SECOND_PARAMETER_NAME).toString());
        }
 
        /**
@@ -221,7 +221,7 @@ public class BookmarkableMapperTest extends 
AbstractMapperTest
         * 
         */
        @Test(expected = StalePageException.class)
-       public void decode9()
+       public void 
mappedPageHandlerShouldntResolveAPageIfItsRenderCountIsAheadFromTheRequestedOne()
        {
                Url url = Url.parse("wicket/bookmarkable/" + PAGE_CLASS_NAME +
                        "/i1/i2?15-5.ILinkListener-foo-bar&a=b&b=c");
@@ -264,11 +264,7 @@ public class BookmarkableMapperTest extends 
AbstractMapperTest
        @Test
        public void encode2()
        {
-               PageParameters parameters = new PageParameters();
-               parameters.set(0, "i1");
-               parameters.set(1, "i2");
-               parameters.set("a", "b");
-               parameters.set("b", "c");
+               PageParameters parameters = aPageParameters();
                PageProvider provider = new PageProvider(MockPage.class, 
parameters);
                provider.setPageSource(context);
                IRequestHandler handler = new 
BookmarkablePageRequestHandler(provider);
@@ -282,11 +278,7 @@ public class BookmarkableMapperTest extends 
AbstractMapperTest
        @Test
        public void encode3()
        {
-               PageParameters parameters = new PageParameters();
-               parameters.set(0, "i1");
-               parameters.set(1, "i2");
-               parameters.set("a", "b");
-               parameters.set("b", "c");
+               PageParameters parameters = aPageParameters();
 
                PageProvider provider = new PageProvider(MockPage.class, 
parameters);
                provider.setPageSource(context);
@@ -296,17 +288,14 @@ public class BookmarkableMapperTest extends 
AbstractMapperTest
                assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME + 
"/i1/i2?a=b&b=c", url.toString());
        }
 
+
        /**
         * 
         */
        @Test
        public void encode4()
        {
-               MockPage page = new MockPage(15);
-               page.getPageParameters().set(0, "i1");
-               page.getPageParameters().set(1, "i2");
-               page.getPageParameters().set("a", "b");
-               page.getPageParameters().set("b", "c");
+               MockPage page = aPageInstance();
                page.setCreatedBookmarkable(true);
 
                IPageProvider provider = new PageProvider(page);
@@ -322,11 +311,7 @@ public class BookmarkableMapperTest extends 
AbstractMapperTest
        @Test
        public void encode5()
        {
-               MockPage page = new MockPage(15);
-               page.getPageParameters().set(0, "i1");
-               page.getPageParameters().set(1, "i2");
-               page.getPageParameters().set("a", "b");
-               page.getPageParameters().set("b", "c");
+               MockPage page = aPageInstance();
 
                page.setCreatedBookmarkable(false);
 
@@ -346,19 +331,9 @@ public class BookmarkableMapperTest extends 
AbstractMapperTest
        @Test
        public void encode6()
        {
-               MockPage page = new MockPage(15);
-               page.getPageParameters().set(0, "i1");
-               page.getPageParameters().set(1, "i2");
-               page.getPageParameters().set("a", "b");
-               page.getPageParameters().set("b", "c");
-
-               // shouldn't make any difference for 
BookmarkableListenerInterfaceRequestHandler,
-               // as this explicitely says the url must be bookmarkable
-               page.setCreatedBookmarkable(false);
+               IRequestableComponent c = aComponent();
 
-               IRequestableComponent c = page.get("foo:bar");
-
-               PageAndComponentProvider provider = new 
PageAndComponentProvider(page, c);
+               PageAndComponentProvider provider = new 
PageAndComponentProvider(c.getPage(), c);
                IRequestHandler handler = new 
BookmarkableListenerInterfaceRequestHandler(provider,
                        ILinkListener.INTERFACE);
 
@@ -374,19 +349,9 @@ public class BookmarkableMapperTest extends 
AbstractMapperTest
        @Test
        public void encode7()
        {
-               MockPage page = new MockPage(15);
-               page.getPageParameters().set(0, "i1");
-               page.getPageParameters().set(1, "i2");
-               page.getPageParameters().set("a", "b");
-               page.getPageParameters().set("b", "c");
-
-               // shouldn't make any difference for 
BookmarkableListenerInterfaceRequestHandler,
-               // as this explicitely says the url must be bookmarkable
-               page.setCreatedBookmarkable(false);
+               IRequestableComponent c = aComponent();
 
-               IRequestableComponent c = page.get("foo:bar");
-
-               PageAndComponentProvider provider = new 
PageAndComponentProvider(page, c);
+               PageAndComponentProvider provider = new 
PageAndComponentProvider(c.getPage(), c);
                IRequestHandler handler = new 
BookmarkableListenerInterfaceRequestHandler(provider,
                        ILinkListener.INTERFACE, 4);
 
@@ -396,6 +361,7 @@ public class BookmarkableMapperTest extends 
AbstractMapperTest
                        "/i1/i2?15-0.ILinkListener.4-foo-bar&a=b&b=c", 
url.toString());
        }
 
+
        /**
         * 
         */
@@ -414,4 +380,71 @@ public class BookmarkableMapperTest extends 
AbstractMapperTest
 
                assertEquals("wicket/bookmarkable/" + PAGE_CLASS_NAME, 
url.toString());
        }
+
+       /**
+        * 
+        */
+       @Test
+       public void 
itShouldntEncodeClassNameAtCallbackUrlsIfPageSettingsDoesntPreventPageExpiration()
+       {
+               IPageSettings expireableSettings = new PageSettings();
+               expireableSettings.setRecreateMountedPagesAfterExpiry(false);
+               BookmarkableMapper expirableEncoder = new 
BookmarkableMapperStub(expireableSettings);
+
+
+               IRequestableComponent component = aComponent();
+               ListenerInterfaceRequestHandler handler = new 
ListenerInterfaceRequestHandler(
+                       new PageAndComponentProvider(component.getPage(), 
component), ILinkListener.INTERFACE);
+
+               assertThat(expirableEncoder.mapHandler(handler), nullValue());
+       }
+
+       protected MockPage aPageInstance()
+       {
+               MockPage page = new MockPage(15);
+               page.getPageParameters().mergeWith(aPageParameters());
+               return page;
+       }
+
+       protected PageParameters aPageParameters()
+       {
+               PageParameters parameters = new PageParameters();
+               parameters.set(0, FIRST_INDEXED_PARAMETER);
+               parameters.set(1, SECOND_INDEXED_PARAMETER);
+               parameters.set(FIRST_PARAMETER_NAME, "b");
+               parameters.set(SECOND_PARAMETER_NAME, 
SECOND_NAMED_PARAMETER_VALUE);
+               return parameters;
+       }
+
+       protected IRequestableComponent aComponent()
+       {
+               MockPage page = aPageInstance();
+
+               // shouldn't make any difference for 
BookmarkableListenerInterfaceRequestHandler,
+               // as this explicitely says the url must be bookmarkable
+               page.setCreatedBookmarkable(false);
+
+               IRequestableComponent c = page.get("foo:bar");
+               return c;
+       }
+
+       private class BookmarkableMapperStub extends BookmarkableMapper
+       {
+               public BookmarkableMapperStub(IPageSettings settings)
+               {
+                       super(new PageParametersEncoder(), settings);
+               }
+
+               @Override
+               protected IMapperContext getContext()
+               {
+                       return context;
+               }
+
+               @Override
+               protected boolean checkPageClass(java.lang.Class<? extends 
IRequestablePage> pageClass)
+               {
+                       return true;
+               }
+       }
 }

Reply via email to