You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2010/11/13 12:54:01 UTC

svn commit: r1034731 - in /wicket/trunk/wicket/src: main/java/org/apache/wicket/protocol/http/ main/java/org/apache/wicket/protocol/http/mock/ main/java/org/apache/wicket/util/tester/ test/java/org/apache/wicket/protocol/http/

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