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);