You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2011/12/12 16:43:24 UTC

svn commit: r1213285 - in /wicket/trunk/wicket-core/src: main/java/org/apache/wicket/util/tester/BaseWicketTester.java test/java/org/apache/wicket/util/tester/CookiePage.java test/java/org/apache/wicket/util/tester/WicketTesterTest.java

Author: mgrigorov
Date: Mon Dec 12 15:43:24 2011
New Revision: 1213285

URL: http://svn.apache.org/viewvc?rev=1213285&view=rev
Log:
WICKET-4289 Improve WicketTester handling of cookies


Added:
    wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/CookiePage.java
      - copied unchanged from r1213250, wicket/branches/wicket-1.5.x/wicket-core/src/test/java/org/apache/wicket/util/tester/CookiePage.java
Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
    wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java

Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=1213285&r1=1213284&r2=1213285&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java Mon Dec 12 15:43:24 2011
@@ -350,8 +350,8 @@ public class BaseWicketTester
 	}
 
 	/**
-	 *
-	 */
+     *
+     */
 	private void setupNextRequestCycle()
 	{
 		request = new MockHttpServletRequest(application, httpSession, servletContext);
@@ -370,6 +370,8 @@ public class BaseWicketTester
 			request.setServerPort(lastRequest.getServerPort());
 		}
 
+		transferCookies();
+
 		response = new MockHttpServletResponse(request);
 
 		ServletWebRequest servletWebRequest = newServletWebRequest();
@@ -385,6 +387,28 @@ public class BaseWicketTester
 	}
 
 	/**
+	 * Copies all cookies with a positive age from the last response to the request that is going to
+	 * be used for the next cycle.
+	 */
+	private void transferCookies()
+	{
+		if (lastResponse != null)
+		{
+			List<Cookie> cookies = lastResponse.getCookies();
+			if (cookies != null)
+			{
+				for (Cookie cookie : cookies)
+				{
+					if (cookie.getMaxAge() > 0)
+					{
+						request.addCookie(cookie);
+					}
+				}
+			}
+		}
+	}
+
+	/**
 	 * @param servletWebRequest
 	 * @return servlet web response
 	 */
@@ -403,8 +427,8 @@ public class BaseWicketTester
 	}
 
 	/**
-	 *
-	 */
+     *
+     */
 	private void newSession()
 	{
 		ThreadContext.setSession(null);
@@ -679,8 +703,8 @@ public class BaseWicketTester
 	}
 
 	/**
-	 *
-	 */
+     *
+     */
 	private void recordRequestResponse()
 	{
 		lastRequest = request;
@@ -717,7 +741,6 @@ public class BaseWicketTester
 		componentInPage = null;
 
 		// prepare request
-		request = new MockHttpServletRequest(application, httpSession, servletContext);
 		request.setURL(request.getContextPath() + request.getServletPath() + "/");
 		IRequestHandler handler = new RenderPageRequestHandler(pageProvider);
 
@@ -787,7 +810,6 @@ public class BaseWicketTester
 		final PageParameters pageParameters)
 	{
 		// prepare request
-		request = new MockHttpServletRequest(application, httpSession, servletContext);
 		request.setURL(request.getContextPath() + request.getServletPath() + "/");
 		IRequestHandler handler = new ResourceReferenceRequestHandler(reference, pageParameters);
 
@@ -2531,8 +2553,8 @@ public class BaseWicketTester
 	}
 
 	/**
-	 *
-	 */
+     *
+     */
 	private class LastPageRecordingPageRendererProvider implements IPageRendererProvider
 	{
 		private final IPageRendererProvider delegate;
@@ -2560,8 +2582,8 @@ public class BaseWicketTester
 	}
 
 	/**
-	 *
-	 */
+     *
+     */
 	private class TestExceptionMapper implements IExceptionMapper
 	{
 		private final IExceptionMapper delegate;
@@ -2593,8 +2615,8 @@ public class BaseWicketTester
 	}
 
 	/**
-	 *
-	 */
+     *
+     */
 	private class TestRequestCycleProvider implements IRequestCycleProvider
 	{
 		private final IRequestCycleProvider delegate;
@@ -2615,8 +2637,8 @@ public class BaseWicketTester
 	}
 
 	/**
-	 *
-	 */
+     *
+     */
 	private class TestRequestMapper implements IRequestMapper
 	{
 		private final IRequestMapper delegate;
@@ -2655,12 +2677,12 @@ public class BaseWicketTester
 	}
 
 	/**
-	 *
-	 */
+     *
+     */
 
 	/**
-	 *
-	 */
+     *
+     */
 	private static class TestPageManagerProvider implements IPageManagerProvider
 	{
 		@Override
@@ -2671,8 +2693,8 @@ public class BaseWicketTester
 	}
 
 	/**
-	 *
-	 */
+     *
+     */
 	private class TestFilterConfig implements FilterConfig
 	{
 		private final Map<String, String> initParameters = new HashMap<String, String>();
@@ -2708,8 +2730,8 @@ public class BaseWicketTester
 	}
 
 	/**
-	 *
-	 */
+     *
+     */
 	private static class WicketTesterServletWebResponse extends ServletWebResponse
 		implements
 			IMetaDataBufferingWebResponse

Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java?rev=1213285&r1=1213284&r2=1213285&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java Mon Dec 12 15:43:24 2011
@@ -1046,4 +1046,79 @@ public class WicketTesterTest extends Wi
 		tester.startComponentInPage(new Label("testLabel"));
 		tester.startPage(tester.getLastRenderedPage());
 	}
+
+	/**
+	 * Tests that setting a cookie with age > 0 before creating the page will survive after the
+	 * rendering of the page and it will be used for the next request cycle.
+	 */
+	@Test
+	public void transferCookies()
+	{
+		String cookieName = "wicket4289Name";
+		String cookieValue = "wicket4289Value";
+		int cookieAge = 1; // age > 0 => the cookie will be preserved for the the next request cycle
+
+		Cookie cookie = new Cookie(cookieName, cookieValue);
+		cookie.setMaxAge(cookieAge);
+		tester.getRequest().addCookie(cookie);
+
+		CookiePage page = new CookiePage(cookieName, cookieValue);
+
+		tester.startPage(page);
+
+		// assert that the cookie was in the response
+		List<Cookie> cookies = tester.getLastResponse().getCookies();
+		assertEquals(1, cookies.size());
+		Cookie cookie2 = cookies.get(0);
+		assertEquals(cookieName, cookie2.getName());
+		assertEquals(cookieValue, cookie2.getValue());
+		assertEquals(cookieAge, cookie2.getMaxAge());
+
+		// assert that the cookie will be preserved for the next request
+		assertEquals(cookieValue, tester.getRequest().getCookie(cookieName).getValue());
+	}
+
+	/**
+	 * Tests that setting a cookie with age < 0 will not be stored after the request cycle.
+	 */
+	@Test
+	public void dontTransferCookiesWithNegativeAge()
+	{
+		String cookieName = "wicket4289Name";
+		String cookieValue = "wicket4289Value";
+		int cookieAge = -1; // age < 0 => do not store it
+
+		Cookie cookie = new Cookie(cookieName, cookieValue);
+		cookie.setMaxAge(cookieAge);
+		tester.getRequest().addCookie(cookie);
+
+		CookiePage page = new CookiePage(cookieName, cookieValue);
+
+		tester.startPage(page);
+
+		// assert that the cookie is not preserved for the next request cycle
+		assertNull(tester.getRequest().getCookies());
+	}
+
+	/**
+	 * Tests that setting a cookie with age < 0 will not be stored after the request cycle.
+	 */
+	@Test
+	public void dontTransferCookiesWithZeroAge()
+	{
+		String cookieName = "wicket4289Name";
+		String cookieValue = "wicket4289Value";
+		int cookieAge = 0; // age == 0 => delete the cookie
+
+		Cookie cookie = new Cookie(cookieName, cookieValue);
+		cookie.setMaxAge(cookieAge);
+		tester.getRequest().addCookie(cookie);
+
+		CookiePage page = new CookiePage(cookieName, cookieValue);
+
+		tester.startPage(page);
+
+		// assert that the cookie is not preserved for the next request cycle
+		assertNull(tester.getRequest().getCookies());
+	}
 }