Author: jdonnerstag
Date: Tue Dec 22 15:15:29 2009
New Revision: 893199

URL: http://svn.apache.org/viewvc?rev=893199&view=rev
Log:
fixed MockHttpServletResponse doesn't delete cookies
Issue: WICKET-2630

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
    
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
    
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java?rev=893199&r1=893198&r2=893199&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java
 Tue Dec 22 15:15:29 2009
@@ -99,6 +99,8 @@
         */
        public void addCookie(final Cookie cookie)
        {
+               // remove any potential duplicates
+               cookies.remove(cookie);
                cookies.add(cookie);
        }
 

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java?rev=893199&r1=893198&r2=893199&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
 Tue Dec 22 15:15:29 2009
@@ -214,7 +214,27 @@
                        public void addCookie(Cookie cookie)
                        {
                                super.addCookie(cookie);
-                               cookiesOfThisSession.add(cookie);
+
+                               // remove any potential duplicates
+                               cookiesOfThisSession.remove(cookie);
+
+                               // if maxAge <= 0, than remove cookie from 
browser session
+                               if (cookie.getMaxAge() > 0)
+                               {
+                                       cookiesOfThisSession.add(cookie);
+                               }
+                               else
+                               {
+                                       Iterator<Cookie> iter = 
cookiesOfThisSession.iterator();
+                                       while (iter.hasNext())
+                                       {
+                                               Cookie entry = iter.next();
+                                               if 
(cookie.getName().equals(entry.getName()))
+                                               {
+                                                       iter.remove();
+                                               }
+                                       }
+                               }
                        }
                };
 

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java?rev=893199&r1=893198&r2=893199&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/cookies/CookieUtilsTest.java
 Tue Dec 22 15:15:29 2009
@@ -129,12 +129,13 @@
 
                // remove all cookies from mock response. Because I'll find the 
cookie to be removed in the
                // request, the persister will create a "delete" cookie to 
remove the cookie on the client
-               // and add it to the response.
+               // and add it to the response. The already existing Cookie from 
the previous test gets
+               // removed from response since it is the same.
                persister.remove(textField);
                assertEquals(1, getRequestCookies(cycle).length);
-               assertEquals(2, getResponseCookies(cycle).size());
-               assertEquals("form.input", 
(getResponseCookies(cycle).get(1)).getName());
-               assertEquals(0, (getResponseCookies(cycle).get(1)).getMaxAge());
+               assertEquals(1, getResponseCookies(cycle).size());
+               assertEquals("form.input", 
(getResponseCookies(cycle).get(0)).getName());
+               assertEquals(0, (getResponseCookies(cycle).get(0)).getMaxAge());
        }
 
        private void copyCookieFromResponseToRequest(final RequestCycle cycle)

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java?rev=893199&r1=893198&r2=893199&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/util/tester/WicketTesterTest.java
 Tue Dec 22 15:15:29 2009
@@ -641,7 +641,9 @@
 
        public void testCookieIsFoundOnNextRequestWhenAddedToWicketResponse()
        {
-               tester.getWicketResponse().addCookie(new Cookie("name", 
"value"));
+               Cookie cookie = new Cookie("name", "value");
+               cookie.setMaxAge(60);
+               tester.getWicketResponse().addCookie(cookie);
                tester.setupRequestAndResponse();
                assertEquals("value", 
tester.getWicketRequest().getCookie("name").getValue());
        }


Reply via email to