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


Reply via email to