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


Reply via email to