Author: pete Date: Sat Nov 13 11:54:01 2010 New Revision: 1034731 URL: http://svn.apache.org/viewvc?rev=1034731&view=rev Log: WICKET-3161: added test case
Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePage.html - copied, changed from r1034699, wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.html wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePage.java wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePageTest.java Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IBufferedWebResponse.java wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IBufferedWebResponse.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IBufferedWebResponse.java?rev=1034731&r1=1034730&r2=1034731&view=diff ============================================================================== --- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IBufferedWebResponse.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/IBufferedWebResponse.java Sat Nov 13 11:54:01 2010 @@ -18,7 +18,7 @@ package org.apache.wicket.protocol.http; import org.apache.wicket.request.http.WebResponse; -interface IBufferedWebResponse +public interface IBufferedWebResponse { /** * transfer cookie operations (add + clear cookie) to given web response Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java?rev=1034731&r1=1034730&r2=1034731&view=diff ============================================================================== --- wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletResponse.java Sat Nov 13 11:54:01 2010 @@ -36,6 +36,8 @@ import javax.servlet.ServletOutputStream import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; +import org.apache.wicket.protocol.http.IBufferedWebResponse; +import org.apache.wicket.request.http.WebResponse; import org.apache.wicket.util.value.ValueMap; @@ -45,7 +47,7 @@ import org.apache.wicket.util.value.Valu * * @author Chris Turner */ -public class MockHttpServletResponse implements HttpServletResponse +public class MockHttpServletResponse implements HttpServletResponse, IBufferedWebResponse { private static final int MODE_BINARY = 1; @@ -815,4 +817,10 @@ public class MockHttpServletResponse imp { return Collections.singletonList(headers.get(name).toString()); } + + public void transferCookies(WebResponse webResponse) + { + for (Cookie cookie : cookies) + webResponse.addCookie(cookie); + } } \ No newline at end of file Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=1034731&r1=1034730&r2=1034731&view=diff ============================================================================== --- wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Sat Nov 13 11:54:01 2010 @@ -76,6 +76,7 @@ import org.apache.wicket.mock.MockReques import org.apache.wicket.mock.MockSessionStore; import org.apache.wicket.page.IPageManager; import org.apache.wicket.page.IPageManagerContext; +import org.apache.wicket.protocol.http.IBufferedWebResponse; import org.apache.wicket.protocol.http.WebApplication; import org.apache.wicket.protocol.http.WicketFilter; import org.apache.wicket.protocol.http.mock.MockHttpServletRequest; @@ -97,6 +98,7 @@ import org.apache.wicket.request.handler import org.apache.wicket.request.handler.PageProvider; import org.apache.wicket.request.handler.RenderPageRequestHandler; import org.apache.wicket.request.handler.render.PageRenderer; +import org.apache.wicket.request.http.WebResponse; import org.apache.wicket.request.mapper.parameter.PageParameters; import org.apache.wicket.session.ISessionStore; import org.apache.wicket.settings.IRequestCycleSettings.RenderStrategy; @@ -324,22 +326,7 @@ public class BaseWicketTester */ private ServletWebResponse createServletWebResponse(ServletWebRequest servletWebRequest) { - return new ServletWebResponse(servletWebRequest, response) - { - @Override - public void sendRedirect(String url) - { - super.sendRedirect(url); - try - { - getHttpServletResponse().sendRedirect(url); - } - catch (IOException e) - { - throw new RuntimeException(e); - } - } - }; + return new WicketTesterServletWebResponse(servletWebRequest, response); } /** @@ -2090,4 +2077,48 @@ public class BaseWicketTester throw new UnsupportedOperationException("Not implemented"); } } + + private class WicketTesterServletWebResponse extends ServletWebResponse implements IBufferedWebResponse + { + private List<Cookie> cookies = new ArrayList<Cookie>(); + + public WicketTesterServletWebResponse(ServletWebRequest request, MockHttpServletResponse response) + { + super(request, response); + } + + @Override + public void addCookie(Cookie cookie) + { + super.addCookie(cookie); + cookies.add(cookie); + } + + @Override + public void clearCookie(Cookie cookie) + { + super.clearCookie(cookie); + cookies.add(cookie); + } + + public void transferCookies(WebResponse webResponse) + { + for (Cookie cookie : cookies) + webResponse.addCookie(cookie); + } + + @Override + public void sendRedirect(String url) + { + super.sendRedirect(url); + try + { + getHttpServletResponse().sendRedirect(url); + } + catch (IOException e) + { + throw new RuntimeException(e); + } + } + } } Copied: wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePage.html (from r1034699, wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.html) URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePage.html?p2=wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePage.html&p1=wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.html&r1=1034699&r2=1034731&rev=1034731&view=diff ============================================================================== --- wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.html (original) +++ wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePage.html Sat Nov 13 11:54:01 2010 @@ -1,10 +1,12 @@ -<html xmlns:wicket> - <head> - <title>Wicket Quickstart Archetype Homepage</title> - </head> - <body> - first page<br/> - <a wicket:id="link">link to second page</a> - </body> +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html> +<html xmlns:wicket="http://wicket.apache.org"> +<head> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> + <title>Cookie Test Page</title> +</head> +<body> + <a wicket:id="createCookie">create a cookie within link listener invocation</a> +</body> </html> Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePage.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePage.java?rev=1034731&view=auto ============================================================================== --- wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePage.java (added) +++ wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePage.java Sat Nov 13 11:54:01 2010 @@ -0,0 +1,39 @@ +package org.apache.wicket.protocol.http; + +import org.apache.wicket.Component; +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.link.Link; +import org.apache.wicket.request.http.WebResponse; + +import javax.servlet.http.Cookie; + +public class ModifyCookiePage extends WebPage +{ + private static final long serialVersionUID = 3884508803470168634L; + + public static final String CREATE_COOKIE_ID = "createCookie"; + public static final String COOKIE_NAME = "wicketTest"; + public static final String COOKIE_VALUE = "1"; + + private WebResponse getWebResponse() + { + return (WebResponse) getResponse(); + } + + @Override + protected void onInitialize() + { + super.onInitialize(); + + add(new Link<Void>(CREATE_COOKIE_ID) + { + private static final long serialVersionUID = 6762033052623200948L; + + @Override + public void onClick() + { + getWebResponse().addCookie(new Cookie(COOKIE_NAME, COOKIE_VALUE)); + } + }); + } +} \ No newline at end of file Added: wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePageTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePageTest.java?rev=1034731&view=auto ============================================================================== --- wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePageTest.java (added) +++ wicket/trunk/wicket/src/test/java/org/apache/wicket/protocol/http/ModifyCookiePageTest.java Sat Nov 13 11:54:01 2010 @@ -0,0 +1,47 @@ +package org.apache.wicket.protocol.http; + +import junit.framework.TestCase; +import org.apache.wicket.protocol.http.mock.MockHttpServletResponse; +import org.apache.wicket.util.tester.WicketTester; +import org.junit.Test; + +import javax.servlet.http.Cookie; +import java.util.List; + +public class ModifyCookiePageTest extends TestCase +{ + private WicketTester tester; + + @Override + public void setUp() + { + tester = new WicketTester(); + } + + @Test + public void testSetCookieWithinLinkListener() + { + // render page + tester.startPage(ModifyCookiePage.class); + tester.assertRenderedPage(ModifyCookiePage.class); + + // click link that creates a cookie with in the link listener + tester.clickLink(ModifyCookiePage.CREATE_COOKIE_ID); + + // check page is rendered + tester.assertRenderedPage(ModifyCookiePage.class); + + // get response + MockHttpServletResponse response = tester.getLastResponse(); + assertNotNull(response); + + // check that one cookie was set + List<Cookie> cookies = response.getCookies(); + assertEquals(1, cookies.size()); + + // check that cookie contains proper values + Cookie cookie = cookies.get(0); + assertEquals(ModifyCookiePage.COOKIE_NAME, cookie.getName()); + assertEquals(ModifyCookiePage.COOKIE_VALUE, cookie.getValue()); + } +} \ No newline at end of file