Author: jbq Date: Tue Aug 21 09:06:39 2007 New Revision: 568182 URL: http://svn.apache.org/viewvc?rev=568182&view=rev Log: WICKET-728 WicketTester could not handle Multipart form without upload
Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormFileUploadPage.java wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormPage.java Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java?rev=568182&r1=568181&r2=568182&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/MockHttpServletRequest.java Tue Aug 21 09:06:39 2007 @@ -178,6 +178,8 @@ private Map/* <String, UploadedFile> */uploadedFiles; + private boolean useMultiPartContentType; + /** * Create the request using the supplied session object. * @@ -313,16 +315,27 @@ } /** - * Return the length of the content. This is always -1 except if there has - * been added uploaded files. Then the length will be the length of the - * generated request. + * true will force Request genarate multiPart ContentType and ContentLength + * + * @param useMultiPartContentType + */ + public void setUseMultiPartContentType(boolean useMultiPartContentType) + { + this.useMultiPartContentType = useMultiPartContentType; + } + + + /** + * Return the length of the content. This is always -1 except if + * useMultiPartContentType set as true. Then the length will be the length + * of the generated request. * - * @return -1 if no uploaded files has been added. Else the length of the + * @return -1 if useMultiPartContentType is false. Else the length of the * generated request. */ public int getContentLength() { - if (uploadedFiles != null && uploadedFiles.size() > 0) + if (useMultiPartContentType) { String request = buildRequest(); return request.length(); @@ -332,14 +345,14 @@ } /** - * If there has been added uploaded files return the correct content-type. + * If useMultiPartContentType set as true return the correct content-type. * - * @return The correct multipart content-type if there has been added - * uploaded files. Else null. + * @return The correct multipart content-type if useMultiPartContentType is + * true. Else null. */ public String getContentType() { - if (uploadedFiles != null && uploadedFiles.size() > 0) + if (useMultiPartContentType) { return FileUploadBase.MULTIPART_FORM_DATA + "; boundary=abcdefgABCDEFG"; } Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java?rev=568182&r1=568181&r2=568182&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java Tue Aug 21 09:06:39 2007 @@ -16,6 +16,7 @@ */ package org.apache.wicket.util.tester; +import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; @@ -43,10 +44,8 @@ import org.apache.wicket.markup.html.form.upload.FileUploadField; import org.apache.wicket.protocol.http.MockHttpServletRequest; import org.apache.wicket.protocol.http.WebRequestCycle; -import org.apache.wicket.protocol.http.servlet.MultipartServletWebRequest; import org.apache.wicket.util.file.File; import org.apache.wicket.util.string.Strings; -import org.apache.wicket.util.upload.FileUploadException; /** @@ -556,24 +555,38 @@ try { MockHttpServletRequest servletRequest = baseWicketTester.getServletRequest(); + WebRequestCycle requestCycle = baseWicketTester.createRequestCycle(); servletRequest.setRequestToComponent(workingForm); - if (servletRequest.hasUploadedFiles()) - { - requestCycle.setRequest(new MultipartServletWebRequest(servletRequest, workingForm - .getMaxSize())); - } - + servletRequest.setUseMultiPartContentType(isMultiPart()); baseWicketTester.processRequestCycle(requestCycle); } - catch (FileUploadException e) - { - throw new WicketRuntimeException(e); - } finally { closed = true; + } + } + + private boolean isMultiPart() + { + try + { + Field multiPart = Form.class.getDeclaredField("multiPart"); + multiPart.setAccessible(true); + return multiPart.getBoolean(workingForm); + } + catch (SecurityException e) + { + throw new RuntimeException(e); + } + catch (NoSuchFieldException e) + { + throw new RuntimeException(e); + } + catch (IllegalAccessException e) + { + throw new RuntimeException(e); } } Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java?rev=568182&r1=568181&r2=568182&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/FormTesterTest.java Tue Aug 21 09:06:39 2007 @@ -107,7 +107,7 @@ * Test that formTester deal with Multipart form correctly when no actual * upload */ - public void bugTestSubmitWithoutUploadFile() + public void testSubmitWithoutUploadFile() { tester.startPage(MockFormFileUploadPage.class); MockFormFileUploadPage page = (MockFormFileUploadPage)tester.getLastRenderedPage(); Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormFileUploadPage.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormFileUploadPage.java?rev=568182&r1=568181&r2=568182&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormFileUploadPage.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormFileUploadPage.java Tue Aug 21 09:06:39 2007 @@ -16,6 +16,8 @@ */ package org.apache.wicket.util.tester; +import java.io.Serializable; + import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.TextField; @@ -38,8 +40,10 @@ * * @author frankbille */ - public static class MockDomainObjectFileUpload + public static class MockDomainObjectFileUpload implements Serializable { + private static final long serialVersionUID = 1L; + private String text; /** @@ -85,6 +89,7 @@ form.setMaxSize(Bytes.kilobytes(100)); form.add(new TextField("text")); fileUploadField = new FileUploadField("file"); + fileUploadField.setRequired(true); form.add(fileUploadField); } Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormPage.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormPage.java?rev=568182&r1=568181&r2=568182&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormPage.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/util/tester/MockFormPage.java Tue Aug 21 09:06:39 2007 @@ -16,6 +16,8 @@ */ package org.apache.wicket.util.tester; +import java.io.Serializable; + import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.CheckBox; @@ -36,8 +38,10 @@ /** * Domain object */ - public class MockDomainObject + public class MockDomainObject implements Serializable { + private static final long serialVersionUID = 1L; + private String text; private boolean checkbox; private String textarea;