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