You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jc...@apache.org on 2007/11/04 15:50:54 UTC

svn commit: r591787 - in /wicket/trunk/jdk-1.4/wicket/src: main/java/org/apache/wicket/protocol/http/ test/java/org/apache/wicket/markup/html/form/login/ test/java/org/apache/wicket/protocol/http/

Author: jcompagner
Date: Sun Nov  4 06:50:53 2007
New Revision: 591787

URL: http://svn.apache.org/viewvc?rev=591787&view=rev
Log:
fixes in the mock test stuff when a BufferedWebResponse is used and there is a redirect that is relative (starts with ../)

Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
    wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/form/login/InterceptTest.java
    wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseTest.java

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java?rev=591787&r1=591786&r2=591787&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletResponse.java Sun Nov  4 06:50:53 2007
@@ -35,7 +35,6 @@
 import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.wicket.RequestCycle;
 import org.apache.wicket.util.value.ValueMap;
 
 
@@ -79,11 +78,16 @@
 
 	private StringWriter stringWriter;
 
+	private final MockHttpServletRequest servletRequest;
+
 	/**
 	 * Create the response object.
+	 * 
+	 * @param servletRequest
 	 */
-	public MockHttpServletResponse()
+	public MockHttpServletResponse(MockHttpServletRequest servletRequest)
 	{
+		this.servletRequest = servletRequest;
 		initialize();
 	}
 
@@ -517,6 +521,46 @@
 	}
 
 	/**
+	 * @see org.apache.wicket.Request#getURL()
+	 */
+	private String getURL()
+	{
+		/*
+		 * Servlet 2.3 specification :
+		 * 
+		 * Servlet Path: The path section that directly corresponds to the mapping which activated
+		 * this request. This path starts with a "/" character except in the case where the request
+		 * is matched with the "/*" pattern, in which case it is the empty string.
+		 * 
+		 * PathInfo: The part of the request path that is not part of the Context Path or the
+		 * Servlet Path. It is either null if there is no extra path, or is a string with a leading
+		 * "/".
+		 */
+		String url = servletRequest.getServletPath();
+		final String pathInfo = servletRequest.getPathInfo();
+
+		if (pathInfo != null)
+		{
+			url += pathInfo;
+		}
+
+		final String queryString = servletRequest.getQueryString();
+
+		if (queryString != null)
+		{
+			url += ("?" + queryString);
+		}
+
+		// If url is non-empty it will start with '/', which we should lose
+		if (url.length() > 0 && url.charAt(0) == '/')
+		{
+			// Remove leading '/'
+			url = url.substring(1);
+		}
+		return url;
+	}
+
+	/**
 	 * Indicate sending of a redirectLocation to a particular named resource. This implementation
 	 * just keeps hold of the redirectLocation info and makes it available for query.
 	 * 
@@ -531,7 +575,7 @@
 		if (location.startsWith("../"))
 		{
 			// Test if the current url has a / in it. (a mount)
-			String url = RequestCycle.get().getRequest().getURL();
+			String url = getURL();
 			int index = url.lastIndexOf("/");
 			if (index != -1)
 			{

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java?rev=591787&r1=591786&r2=591787&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockWebApplication.java Sun Nov  4 06:50:53 2007
@@ -185,7 +185,7 @@
 		// Construct mock session, request and response
 		servletSession = new MockHttpSession(context);
 		servletRequest = new MockHttpServletRequest(this.application, servletSession, context);
-		servletResponse = new MockHttpServletResponse();
+		servletResponse = new MockHttpServletResponse(servletRequest);
 
 		// Construct request and response using factories
 		wicketRequest = this.application.newWebRequest(servletRequest);
@@ -195,7 +195,7 @@
 		createRequestCycle();
 
 		this.application.getRequestCycleSettings().setRenderStrategy(
-				IRequestCycleSettings.ONE_PASS_RENDER);
+			IRequestCycleSettings.ONE_PASS_RENDER);
 		this.application.getResourceSettings().setResourceFinder(new WebApplicationPath(context));
 		this.application.getPageSettings().setAutomaticMultiWindowSupport(false);
 
@@ -380,6 +380,7 @@
 		try
 		{
 			cycle.request();
+			createRequestCycle();
 		}
 		finally
 		{
@@ -400,15 +401,15 @@
 		{
 			// handle redirects which are usually managed by the browser
 			// transparently
-			final MockHttpServletResponse httpResponse = (MockHttpServletResponse)cycle
-					.getWebResponse().getHttpServletResponse();
+			final MockHttpServletResponse httpResponse = (MockHttpServletResponse)cycle.getWebResponse()
+				.getHttpServletResponse();
 
 			if (httpResponse.isRedirect())
 			{
 				lastRenderedPage = generateLastRenderedPage(cycle);
 
 				MockHttpServletRequest newHttpRequest = new MockHttpServletRequest(application,
-						servletSession, application.getServletContext());
+					servletSession, application.getServletContext());
 				newHttpRequest.setRequestToRedirectString(httpResponse.getRedirectLocation());
 				wicketRequest = application.newWebRequest(newHttpRequest);
 
@@ -454,13 +455,15 @@
 					PageParameters parameters = pageClassRequestTarget.getPageParameters();
 					if (parameters == null || parameters.size() == 0)
 					{
-						newLastRenderedPage = application.getSessionSettings().getPageFactory()
-								.newPage(pageClass);
+						newLastRenderedPage = application.getSessionSettings()
+							.getPageFactory()
+							.newPage(pageClass);
 					}
 					else
 					{
-						newLastRenderedPage = application.getSessionSettings().getPageFactory()
-								.newPage(pageClass, parameters);
+						newLastRenderedPage = application.getSessionSettings()
+							.getPageFactory()
+							.newPage(pageClass, parameters);
 					}
 				}
 			}
@@ -484,7 +487,7 @@
 		// Create a web request cycle using factory
 
 		final WebRequestCycle cycle = (WebRequestCycle)application.newRequestCycle(wicketRequest,
-				wicketResponse);
+			wicketResponse);
 
 		// Construct session
 		wicketSession = (WebSession)Session.findOrCreate();

Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/form/login/InterceptTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/form/login/InterceptTest.java?rev=591787&r1=591786&r2=591787&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/form/login/InterceptTest.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/markup/html/form/login/InterceptTest.java Sun Nov  4 06:50:53 2007
@@ -27,6 +27,7 @@
 import org.apache.wicket.Session;
 import org.apache.wicket.authorization.Action;
 import org.apache.wicket.authorization.IAuthorizationStrategy;
+import org.apache.wicket.protocol.http.BufferedWebResponse;
 import org.apache.wicket.protocol.http.HttpSessionStore;
 import org.apache.wicket.protocol.http.WebApplication;
 import org.apache.wicket.protocol.http.WebRequestCycle;
@@ -34,6 +35,7 @@
 import org.apache.wicket.protocol.http.WebSession;
 import org.apache.wicket.session.ISessionStore;
 import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.tester.FormTester;
 import org.apache.wicket.util.tester.WicketTester;
 
 
@@ -74,26 +76,51 @@
 	/**
 	 * 
 	 */
+	public void testFormSubmit()
+	{
+		application = new WicketTester(new MyMockWebApplication()
+		{
+			protected WebResponse newWebResponse(HttpServletResponse response)
+			{
+				return new BufferedWebResponse(response);
+			}
+		});
+		// same as above but uses different technique to login
+		application.setupRequestAndResponse();
+		application.processRequestCycle();
+		MockLoginPage loginPage = (MockLoginPage)application.getLastRenderedPage();
+		assertEquals(((MyMockWebApplication)application.getApplication()).getLoginPage(),
+			loginPage.getClass());
+		FormTester form = application.newFormTester("form");
+		form.setValue("username", "admin");
+		form.submit();
+		assertEquals(application.getApplication().getHomePage(), application.getLastRenderedPage()
+			.getClass());
+	}
+
+	/**
+	 * 
+	 */
 	public void testClickLink()
 	{
 		application.setupRequestAndResponse();
 		application.processRequestCycle();
 		MockLoginPage loginPage = (MockLoginPage)application.getLastRenderedPage();
-		assertEquals(((MyMockWebApplication)application.getApplication()).getLoginPage(), loginPage
-				.getClass());
+		assertEquals(((MyMockWebApplication)application.getApplication()).getLoginPage(),
+			loginPage.getClass());
 
 		application.setupRequestAndResponse();
 		application.getServletRequest().setRequestToComponent(loginPage.getForm());
 		application.getServletRequest().setParameter(loginPage.getTextField().getInputName(),
-				"admin");
+			"admin");
 		application.processRequestCycle();
 
 		assertEquals(application.getApplication().getHomePage(), application.getLastRenderedPage()
-				.getClass());
+			.getClass());
 
 		application.setupRequestAndResponse();
 		application.getServletRequest().setRequestToComponent(
-				application.getLastRenderedPage().get("link"));
+			application.getLastRenderedPage().get("link"));
 		application.processRequestCycle();
 		assertEquals(PageA.class, application.getLastRenderedPage().getClass());
 	}
@@ -107,8 +134,8 @@
 		application.setupRequestAndResponse();
 		application.processRequestCycle();
 		MockLoginPage loginPage = (MockLoginPage)application.getLastRenderedPage();
-		assertEquals(((MyMockWebApplication)application.getApplication()).getLoginPage(), loginPage
-				.getClass());
+		assertEquals(((MyMockWebApplication)application.getApplication()).getLoginPage(),
+			loginPage.getClass());
 
 		// bypass form completely to login but continue to intercept page
 		application.setupRequestAndResponse();
@@ -117,11 +144,11 @@
 		application.processRequestCycle(requestCycle);
 
 		assertEquals(application.getApplication().getHomePage(), application.getLastRenderedPage()
-				.getClass());
+			.getClass());
 
 		application.setupRequestAndResponse();
 		application.getServletRequest().setRequestToComponent(
-				application.getLastRenderedPage().get("link"));
+			application.getLastRenderedPage().get("link"));
 		application.processRequestCycle();
 		assertEquals(PageA.class, application.getLastRenderedPage().getClass());
 	}
@@ -228,7 +255,7 @@
 		public boolean isInstantiationAuthorized(Class componentClass)
 		{
 			if (MockHomePage.class.equals(componentClass) &&
-					!((MySession)Session.get()).isLoggedIn())
+				!((MySession)Session.get()).isLoggedIn())
 			{
 				throw new RestartResponseAtInterceptPageException(MockLoginPage.class);
 			}

Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseTest.java?rev=591787&r1=591786&r2=591787&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseTest.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/WebResponseTest.java Sun Nov  4 06:50:53 2007
@@ -16,11 +16,11 @@
  */
 package org.apache.wicket.protocol.http;
 
+import junit.framework.TestCase;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import junit.framework.TestCase;
-
 /**
  * 
  * 
@@ -35,7 +35,7 @@
 	 */
 	public void testRedirect_normal()
 	{
-		MockHttpServletResponse mockResponse = new MockHttpServletResponse();
+		MockHttpServletResponse mockResponse = new MockHttpServletResponse(null);
 
 		WebResponse webResponse = new WebResponse(mockResponse);
 
@@ -50,7 +50,7 @@
 	 */
 	public void testRedirect_ajax()
 	{
-		MockHttpServletResponse mockResponse = new MockHttpServletResponse();
+		MockHttpServletResponse mockResponse = new MockHttpServletResponse(null);
 
 		WebResponse webResponse = new WebResponse(mockResponse);
 		webResponse.setAjax(true);