Author: ivaynberg
Date: Mon Mar 1 16:03:22 2010
New Revision: 917565
URL: http://svn.apache.org/viewvc?rev=917565&view=rev
Log:
a messy rework to reintroduce mockhttpservletrequest back into tester to make
multipart testing possible again
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.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/mock/MockHttpServletRequest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java?rev=917565&r1=917564&r2=917565&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/mock/MockHttpServletRequest.java
Mon Mar 1 16:03:22 2010
@@ -19,9 +19,9 @@
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
-import java.io.CharArrayReader;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.security.Principal;
@@ -46,6 +46,8 @@
import org.apache.wicket.Application;
import org.apache.wicket.WicketRuntimeException;
+import org.apache.wicket.ng.mock.MockRequestParameters;
+import org.apache.wicket.ng.request.Url;
import org.apache.wicket.protocol.http.RequestUtils;
import org.apache.wicket.protocol.http.WicketURLDecoder;
import org.apache.wicket.protocol.http.WicketURLEncoder;
@@ -379,7 +381,8 @@
*/
public String getContextPath()
{
- return "/" + application.getName();
+ // return "/" + application.getName();
+ return "/context";
}
/**
@@ -730,7 +733,7 @@
*/
public BufferedReader getReader() throws IOException
{
- return new BufferedReader(new CharArrayReader(new char[0]));
+ return new BufferedReader(new
InputStreamReader(getInputStream()));
}
/**
@@ -890,7 +893,7 @@
*/
public String getServletPath()
{
- return getContextPath();
+ return "/servlet";
}
/**
@@ -1411,13 +1414,30 @@
*/
private byte[] buildRequest()
{
+ if (uploadedFiles == null)
+ {
+ if (post.getParameterNames().size() == 0)
+ {
+ return "".getBytes();
+ }
+ Url url = new Url();
+ for (Iterator<String> iterator =
post.getParameterNames().iterator(); iterator.hasNext();)
+ {
+ final String name = iterator.next();
+ url.setQueryParameter(name,
post.getParameterValue(name.toString()));
+ }
+ String body = url.toString().substring(1);
+ return body.getBytes();
+ }
+
+
try
{
// Build up the input stream based on the files and
parameters
ByteArrayOutputStream out = new ByteArrayOutputStream();
// Add parameters
- for (Iterator<String> iterator =
parameters.keySet().iterator(); iterator.hasNext();)
+ for (Iterator<String> iterator =
post.getParameterNames().iterator(); iterator.hasNext();)
{
final String name = iterator.next();
newAttachment(out);
@@ -1426,7 +1446,7 @@
out.write("\"".getBytes());
out.write(crlf.getBytes());
out.write(crlf.getBytes());
-
out.write(parameters.get(name).toString().getBytes());
+
out.write(post.getParameterValue(name).toString().getBytes());
out.write(crlf.getBytes());
}
@@ -1502,4 +1522,29 @@
{
return 80;
}
+
+ public void setUrl(Url url)
+ {
+ setURL(url.toString());
+ }
+
+ public Url getUrl()
+ {
+ String url = getRequestURI();
+ url += "?" + getQueryString();
+ return Url.parse(url);
+ }
+
+ public MockRequestParameters getPostParameters()
+ {
+ return post;
+ }
+
+
+ public String getFilterPrefix()
+ {
+ return getServletPath().substring(1);
+ }
+
+ private final MockRequestParameters post = new MockRequestParameters();
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?rev=917565&r1=917564&r2=917565&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
Mon Mar 1 16:03:22 2010
@@ -105,8 +105,9 @@
}
StringBuilder url = new StringBuilder();
String uri = request.getRequestURI();
-
url.append(Strings.stripJSessionId(uri.substring(request.getContextPath().length()
+
- filterPrefix.length() + 1)));
+ uri = Strings.stripJSessionId(uri);
+ final int start = request.getContextPath().length() +
filterPrefix.length() + 1;
+ url.append(uri.substring(start));
String query = request.getQueryString();
if (!Strings.isEmpty(query))
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=917565&r1=917564&r2=917565&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
Mon Mar 1 16:03:22 2010
@@ -67,7 +67,6 @@
import org.apache.wicket.ng.mock.MockApplication;
import org.apache.wicket.ng.mock.MockPageManager;
import org.apache.wicket.ng.mock.MockSessionStore;
-import org.apache.wicket.ng.mock.MockWebRequest;
import org.apache.wicket.ng.mock.MockWebResponse;
import org.apache.wicket.ng.request.IRequestMapper;
import org.apache.wicket.ng.request.Url;
@@ -86,6 +85,9 @@
import org.apache.wicket.pageStore.IPageManagerContext;
import org.apache.wicket.protocol.http.MockServletContext;
import org.apache.wicket.protocol.http.WebApplication;
+import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
+import org.apache.wicket.protocol.http.mock.MockHttpSession;
+import org.apache.wicket.protocol.http.servlet.ServletWebRequest;
import org.apache.wicket.session.ISessionStore;
import org.apache.wicket.settings.IRequestCycleSettings.RenderStrategy;
import org.apache.wicket.util.IProvider;
@@ -140,22 +142,24 @@
}
}
+ private org.apache.wicket.protocol.http.mock.MockServletContext
servletContext;
+ private MockHttpSession hsession;
private final WebApplication application;
private boolean followRedirects = true;
private int redirectCount;
- private MockWebRequest lastRequest;
+ private MockHttpServletRequest lastRequest;
private MockWebResponse lastResponse;
- private final List<MockWebRequest> previousRequests = new
ArrayList<MockWebRequest>();
+ private final List<MockHttpServletRequest> previousRequests = new
ArrayList<MockHttpServletRequest>();
private final List<MockWebResponse> previousResponses = new
ArrayList<MockWebResponse>();
private final ThreadContext oldThreadContext;
/** current request */
- private MockWebRequest request;
+ private MockHttpServletRequest request;
/** current response */
private MockWebResponse response;
@@ -227,6 +231,10 @@
*/
public BaseWicketTester(final WebApplication application)
{
+ servletContext = new
org.apache.wicket.protocol.http.mock.MockServletContext(application,
+ "");
+ hsession = new MockHttpSession(servletContext);
+
oldThreadContext = ThreadContext.detach();
this.application = application;
@@ -255,11 +263,13 @@
private void setupNextRequestCycle()
{
- request = new MockWebRequest(Url.parse("/"));
+ request = new MockHttpServletRequest(application, hsession,
servletContext);
+ request.setURL(request.getContextPath() +
request.getServletPath() + "/");
response = new MockWebResponse();
- requestCycle = application.createRequestCycle(request,
response);
+ requestCycle = application.createRequestCycle(new
ServletWebRequest(request,
+ request.getFilterPrefix()), response);
requestCycle.setCleanupFeedbackMessagesOnDetach(false);
ThreadContext.setRequestCycle(requestCycle);
@@ -281,15 +291,15 @@
ThreadContext.setSession(session);
}
- public MockWebRequest getRequest()
+ public MockHttpServletRequest getRequest()
{
return request;
}
- public void setRequest(MockWebRequest request)
+ public void setRequest(MockHttpServletRequest request)
{
this.request = request;
- requestCycle.setRequest(request);
+ requestCycle.setRequest(new ServletWebRequest(request,
request.getServletPath()));
}
@@ -348,7 +358,7 @@
* request to process
*
*/
- public void processRequest(MockWebRequest request)
+ public void processRequest(MockHttpServletRequest request)
{
processRequest(request, null);
}
@@ -363,7 +373,8 @@
* optional parameter to override parsing the request URL
and force
* {...@link IRequestHandler}
*/
- public boolean processRequest(MockWebRequest request, IRequestHandler
forcedRequestHandler)
+ public boolean processRequest(MockHttpServletRequest request,
+ IRequestHandler forcedRequestHandler)
{
return processRequest(request, forcedRequestHandler, false);
}
@@ -374,7 +385,7 @@
}
- private boolean processRequest(MockWebRequest forcedRequest,
+ private boolean processRequest(MockHttpServletRequest forcedRequest,
IRequestHandler forcedRequestHandler, boolean redirect)
{
@@ -413,7 +424,7 @@
}
}
- requestCycle.setRequest(request);
+ requestCycle.setRequest(new ServletWebRequest(request,
request.getFilterPrefix()));
if (!requestCycle.processRequestAndDetach())
{
@@ -468,9 +479,12 @@
// transfer cookies from previous request to previous response,
quirky but how old stuff
// worked...
- for (Cookie cookie : lastRequest.getCookies())
+ if (lastRequest.getCookies() != null)
{
- lastResponse.addCookie(cookie);
+ for (Cookie cookie : lastRequest.getCookies())
+ {
+ lastResponse.addCookie(cookie);
+ }
}
}
@@ -488,7 +502,8 @@
*/
public Page startPage(IPageProvider pageProvider)
{
- request = new MockWebRequest(new Url());
+ request = new MockHttpServletRequest(application, hsession,
servletContext);
+ request.setURL(request.getContextPath() +
request.getServletPath() + "/");
IRequestHandler handler = new
RenderPageRequestHandler(pageProvider);
processRequest(request, handler);
return getLastRenderedPage();
@@ -522,7 +537,7 @@
/**
* @return list of prior requests
*/
- public List<MockWebRequest> getPreviousRequests()
+ public List<MockHttpServletRequest> getPreviousRequests()
{
return Collections.unmodifiableList(previousRequests);
}
@@ -617,8 +632,10 @@
component.getPage(), component), listener);
Url url = urlFor(handler);
-
- processRequest(new MockWebRequest(url), null);
+ MockHttpServletRequest request = new
MockHttpServletRequest(application, hsession,
+ servletContext);
+ request.setUrl(url);
+ processRequest(request, null);
}
@@ -651,8 +668,8 @@
Url url = Url.parse(behavior.getCallbackUrl().toString());
transform(url);
request.setUrl(url);
- request.setHeader("Wicket-Ajax-BaseURL", url.toString());
- request.setHeader("Wicket-Ajax", "Wicket-Ajax");
+ request.addHeader("Wicket-Ajax-BaseURL", url.toString());
+ request.addHeader("Wicket-Ajax", "Wicket-Ajax");
processRequest();
}
@@ -668,8 +685,8 @@
{
transform(url);
request.setUrl(url);
- request.setHeader("Wicket-Ajax-BaseURL", url.toString());
- request.setHeader("Wicket-Ajax", "Wicket-Ajax");
+ request.addHeader("Wicket-Ajax-BaseURL", url.toString());
+ request.addHeader("Wicket-Ajax", "Wicket-Ajax");
processRequest();
}
@@ -1548,9 +1565,10 @@
Url url = Url.parse(behavior.getCallbackUrl().toString());
transform(url);
- request.setHeader("Wicket-Ajax-BaseURL", url.toString());
- request.setHeader("Wicket-Ajax", "Wicket-Ajax");
- processRequest(request.requestWithUrl(url), null);
+ request.addHeader("Wicket-Ajax-BaseURL", url.toString());
+ request.addHeader("Wicket-Ajax", "Wicket-Ajax");
+ request.setUrl(url);
+ processRequest(request, null);
}
/**
@@ -1658,7 +1676,7 @@
return response;
}
- public MockWebRequest getLastRequest()
+ public MockHttpServletRequest getLastRequest()
{
return lastRequest;
}