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