This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-fileupload.git


The following commit(s) were added to refs/heads/master by this push:
     new 9ea2dfb  Refactor tests to add JavaxStreamingTest
9ea2dfb is described below

commit 9ea2dfbc882c09e543100b20ab7c6d0965b60421
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Mon May 22 21:18:40 2023 -0400

    Refactor tests to add JavaxStreamingTest
---
 .../fileupload2/AbstractProgressListenerTest.java  |   4 +-
 .../commons/fileupload2/AbstractSizesTest.java     |   2 +-
 .../commons/fileupload2/AbstractStreamingTest.java |  45 ++--
 .../apache/commons/fileupload2/AbstractTest.java   |  14 +-
 .../jakarta/JakartaProgressListenerTest.java       |   8 +-
 .../fileupload2/jakarta/JakartaSizesTest.java      |   9 +-
 ...ssListenerTest.java => JavaxStreamingTest.java} |  20 +-
 .../javax/JavaxProgressListenerTest.java           |   8 +-
 .../commons/fileupload2/javax/JavaxSizesTest.java  |   8 +-
 .../fileupload2/javax/JavaxStreamingTest.java      | 256 +--------------------
 10 files changed, 68 insertions(+), 306 deletions(-)

diff --git 
a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractProgressListenerTest.java
 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractProgressListenerTest.java
index 110ed8a..37b03aa 100644
--- 
a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractProgressListenerTest.java
+++ 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractProgressListenerTest.java
@@ -112,9 +112,9 @@ public abstract class AbstractProgressListenerTest<F 
extends FileUpload<R>, R> e
         baos.write("-----1234--\r\n".getBytes(StandardCharsets.US_ASCII));
         final byte[] requestBytes = baos.toByteArray();
 
-        R request = newMockHttpServletRequest(requestBytes, null, null);
+        R request = newMockHttpServletRequest(requestBytes, null, 
Constants.CONTENT_TYPE, null);
         runTest(numItems, requestBytes.length, request);
-        request = newMockHttpServletRequest(requestBytes, -1, null);
+        request = newMockHttpServletRequest(requestBytes, -1L, 
Constants.CONTENT_TYPE, null);
         runTest(numItems, requestBytes.length, request);
     }
 
diff --git 
a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractSizesTest.java
 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractSizesTest.java
index 0224aa1..2795f2b 100644
--- 
a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractSizesTest.java
+++ 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractSizesTest.java
@@ -203,7 +203,7 @@ public abstract class AbstractSizesTest<F extends 
FileUpload<R>, R> extends Abst
         // set the read limit to 10 to simulate a "real" stream
         // otherwise the buffer would be immediately filled
 
-        final R req = newMockHttpServletRequest(request, -1, 10);
+        final R req = newMockHttpServletRequest(request, -1L, 10);
 
         final FileItemIterator it = upload.getItemIterator(req);
         assertTrue(it.hasNext());
diff --git 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java
 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractStreamingTest.java
similarity index 85%
copy from 
commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java
copy to 
commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractStreamingTest.java
index 3bf6b93..4d95f0b 100644
--- 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java
+++ 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractStreamingTest.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.commons.fileupload2.javax;
+package org.apache.commons.fileupload2;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -30,28 +30,23 @@ import java.nio.charset.StandardCharsets;
 import java.util.Iterator;
 import java.util.List;
 
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.fileupload2.AbstractFileUpload;
-import org.apache.commons.fileupload2.FileItem;
-import org.apache.commons.fileupload2.FileItemIterator;
-import org.apache.commons.fileupload2.FileItemStream;
-import org.apache.commons.fileupload2.FileUploadException;
-import org.apache.commons.fileupload2.InvalidFileNameException;
-import org.apache.commons.fileupload2.MultipartStream;
 import org.apache.commons.fileupload2.disk.DiskFileItemFactory;
 import org.junit.jupiter.api.Test;
 
 /**
  * Unit test for items with varying sizes.
+ *
+ * @param <F> The subclass of FileUpload.
+ * @param <R> The type of FileUpload request.
+ * @param <C> The request context type.
  */
-public class JavaxStreamingTest {
+public abstract class AbstractStreamingTest<F extends FileUpload<R>, R, C 
extends AbstractRequestContext> extends AbstractTest<F, R> {
 
-    private String getFooter() {
+    protected String getFooter() {
         return "-----1234--\r\n";
     }
 
-    private String getHeader(final String value) {
+    protected String getHeader(final String value) {
         // @formatter:off
         return "-----1234\r\n"
             + "Content-Disposition: form-data; name=\"" + value + "\"\r\n"
@@ -59,7 +54,7 @@ public class JavaxStreamingTest {
         // @formatter:on
     }
 
-    private byte[] newRequest() throws IOException {
+    protected byte[] newRequest() throws IOException {
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         try (final OutputStreamWriter osw = new OutputStreamWriter(baos, 
StandardCharsets.US_ASCII)) {
             int add = 16;
@@ -80,7 +75,9 @@ public class JavaxStreamingTest {
         return baos.toByteArray();
     }
 
-    private byte[] newShortRequest() throws IOException {
+    protected abstract C newServletRequestContext(final R request);
+
+    protected byte[] newShortRequest() throws IOException {
         final ByteArrayOutputStream baos = new ByteArrayOutputStream();
         try (final OutputStreamWriter osw = new OutputStreamWriter(baos, 
StandardCharsets.US_ASCII)) {
             osw.write(getHeader("field"));
@@ -91,28 +88,28 @@ public class JavaxStreamingTest {
         return baos.toByteArray();
     }
 
-    private List<FileItem> parseUpload(final byte[] bytes) throws 
FileUploadException {
+    protected List<FileItem> parseUpload(final byte[] bytes) throws 
FileUploadException {
         return parseUpload(new ByteArrayInputStream(bytes), bytes.length);
     }
 
-    private List<FileItem> parseUpload(final InputStream inputStream, final 
int length) throws FileUploadException {
+    protected List<FileItem> parseUpload(final InputStream inputStream, final 
int length) throws FileUploadException {
         final String contentType = "multipart/form-data; boundary=---1234";
 
-        final AbstractFileUpload upload = new ServletFileUpload();
+        final AbstractFileUpload upload = newFileUpload();
         upload.setFileItemFactory(new DiskFileItemFactory());
-        final HttpServletRequest request = new 
JavaxMockHttpServletRequest(inputStream, length, contentType, -1);
+        final R request = newMockHttpServletRequest(inputStream, length, 
contentType, -1);
 
-        return upload.parseRequest(new ServletRequestContext(request));
+        return upload.parseRequest(newServletRequestContext(request));
     }
 
-    private FileItemIterator parseUpload(final int length, final InputStream 
inputStream) throws FileUploadException, IOException {
+    protected FileItemIterator parseUpload(final int length, final InputStream 
inputStream) throws FileUploadException, IOException {
         final String contentType = "multipart/form-data; boundary=---1234";
 
-        final AbstractFileUpload upload = new ServletFileUpload();
+        final AbstractFileUpload upload = newFileUpload();
         upload.setFileItemFactory(new DiskFileItemFactory());
-        final HttpServletRequest request = new 
JavaxMockHttpServletRequest(inputStream, length, contentType, -1);
+        final R request = newMockHttpServletRequest(inputStream, length, 
contentType, -1);
 
-        return upload.getItemIterator(new ServletRequestContext(request));
+        return upload.getItemIterator(newServletRequestContext(request));
     }
 
     /**
diff --git 
a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractTest.java
 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractTest.java
index 8858294..784a846 100644
--- 
a/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractTest.java
+++ 
b/commons-fileupload2-core/src/test/java/org/apache/commons/fileupload2/AbstractTest.java
@@ -16,6 +16,8 @@
  */
 package org.apache.commons.fileupload2;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 
 /**
@@ -27,12 +29,16 @@ import java.nio.charset.StandardCharsets;
 public abstract class AbstractTest<F extends FileUpload<R>, R> {
 
     protected abstract F newFileUpload();
-    // empty
 
-    protected abstract R newMockHttpServletRequest(byte[] request, Integer 
overrideContenLength, Integer overrideReadLimit);
+    protected R newMockHttpServletRequest(final byte[] request, final Long 
overrideContenLength, final String contentType, final Integer 
overrideReadLimit) {
+        return newMockHttpServletRequest(new ByteArrayInputStream(request), 
overrideContenLength != null ? overrideContenLength : request.length, 
contentType,
+                overrideReadLimit != null ? overrideReadLimit : -1);
+    }
+
+    protected abstract R newMockHttpServletRequest(InputStream 
requestInputStream, long requestLength, String contentType, int readLimit);
 
-    protected R newMockHttpServletRequest(final String request, final Integer 
overrideContenLength, final Integer overrideReadLimit) {
-        return 
newMockHttpServletRequest(request.getBytes(StandardCharsets.US_ASCII), 
overrideContenLength, overrideReadLimit);
+    protected R newMockHttpServletRequest(final String request, final Long 
overrideContenLength, final Integer overrideReadLimit) {
+        return 
newMockHttpServletRequest(request.getBytes(StandardCharsets.US_ASCII), 
overrideContenLength, Constants.CONTENT_TYPE, overrideReadLimit);
     }
 
 }
diff --git 
a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java
 
b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java
index f6696e3..8bc0e49 100644
--- 
a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java
+++ 
b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java
@@ -16,10 +16,9 @@
  */
 package org.apache.commons.fileupload2.jakarta;
 
-import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 
 import org.apache.commons.fileupload2.AbstractProgressListenerTest;
-import org.apache.commons.fileupload2.Constants;
 import org.apache.commons.fileupload2.ProgressListener;
 
 import jakarta.servlet.http.HttpServletRequest;
@@ -35,9 +34,8 @@ public class JakartaProgressListenerTest extends 
AbstractProgressListenerTest<Ja
     }
 
     @Override
-    protected HttpServletRequest newMockHttpServletRequest(final byte[] 
request, final Integer overrideContenLength, final Integer overrideReadLimit) {
-        return new JakartaMockHttpServletRequest(new 
ByteArrayInputStream(request), overrideContenLength != null ? 
overrideContenLength : request.length,
-                Constants.CONTENT_TYPE, overrideReadLimit != null ? 
overrideReadLimit : -1);
+    protected HttpServletRequest newMockHttpServletRequest(final InputStream 
request, final long requestLength, final String contentType, final int 
readLimit) {
+        return new JakartaMockHttpServletRequest(request, requestLength, 
contentType, readLimit);
     }
 
 }
diff --git 
a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
 
b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
index f4fc352..4023e6f 100644
--- 
a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
+++ 
b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaSizesTest.java
@@ -16,10 +16,9 @@
  */
 package org.apache.commons.fileupload2.jakarta;
 
-import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 
 import org.apache.commons.fileupload2.AbstractSizesTest;
-import org.apache.commons.fileupload2.Constants;
 import org.apache.commons.fileupload2.disk.DiskFileItemFactory;
 
 import jakarta.servlet.http.HttpServletRequest;
@@ -35,10 +34,8 @@ public class JakartaSizesTest extends 
AbstractSizesTest<JakartaServletFileUpload
     }
 
     @Override
-    protected JakartaMockHttpServletRequest newMockHttpServletRequest(final 
byte[] request, final Integer overrideContenLength,
-            final Integer overrideReadLimit) {
-        return new JakartaMockHttpServletRequest(new 
ByteArrayInputStream(request), overrideContenLength != null ? 
overrideContenLength : request.length,
-                Constants.CONTENT_TYPE, overrideReadLimit != null ? 
overrideReadLimit : -1);
+    protected JakartaMockHttpServletRequest newMockHttpServletRequest(final 
InputStream request, final long requestLength, final String contentType, final 
int readLimit) {
+        return new JakartaMockHttpServletRequest(request, requestLength, 
contentType, readLimit);
     }
 
 }
diff --git 
a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java
 
b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JavaxStreamingTest.java
similarity index 61%
copy from 
commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java
copy to 
commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JavaxStreamingTest.java
index f6696e3..51b0932 100644
--- 
a/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JakartaProgressListenerTest.java
+++ 
b/commons-fileupload2-jakarta/src/test/java/org/apache/commons/fileupload2/jakarta/JavaxStreamingTest.java
@@ -16,18 +16,16 @@
  */
 package org.apache.commons.fileupload2.jakarta;
 
-import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 
-import org.apache.commons.fileupload2.AbstractProgressListenerTest;
-import org.apache.commons.fileupload2.Constants;
-import org.apache.commons.fileupload2.ProgressListener;
+import org.apache.commons.fileupload2.AbstractStreamingTest;
 
 import jakarta.servlet.http.HttpServletRequest;
 
 /**
- * Tests the {@link ProgressListener}.
+ * Unit test for items with varying sizes.
  */
-public class JakartaProgressListenerTest extends 
AbstractProgressListenerTest<JakartaServletFileUpload, HttpServletRequest> {
+public class JavaxStreamingTest extends 
AbstractStreamingTest<JakartaServletFileUpload, HttpServletRequest, 
JakartaServletRequestContext> {
 
     @Override
     protected JakartaServletFileUpload newFileUpload() {
@@ -35,9 +33,13 @@ public class JakartaProgressListenerTest extends 
AbstractProgressListenerTest<Ja
     }
 
     @Override
-    protected HttpServletRequest newMockHttpServletRequest(final byte[] 
request, final Integer overrideContenLength, final Integer overrideReadLimit) {
-        return new JakartaMockHttpServletRequest(new 
ByteArrayInputStream(request), overrideContenLength != null ? 
overrideContenLength : request.length,
-                Constants.CONTENT_TYPE, overrideReadLimit != null ? 
overrideReadLimit : -1);
+    protected HttpServletRequest newMockHttpServletRequest(final InputStream 
request, final long requestLength, final String contentType, final int 
readLimit) {
+        return new JakartaMockHttpServletRequest(request, requestLength, 
contentType, readLimit);
+    }
+
+    @Override
+    protected JakartaServletRequestContext newServletRequestContext(final 
HttpServletRequest request) {
+        return new JakartaServletRequestContext(request);
     }
 
 }
diff --git 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
 
b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
index 4938fec..b858192 100644
--- 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
+++ 
b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxProgressListenerTest.java
@@ -16,12 +16,11 @@
  */
 package org.apache.commons.fileupload2.javax;
 
-import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.fileupload2.AbstractProgressListenerTest;
-import org.apache.commons.fileupload2.Constants;
 import org.apache.commons.fileupload2.ProgressListener;
 
 /**
@@ -35,9 +34,8 @@ public class JavaxProgressListenerTest extends 
AbstractProgressListenerTest<Serv
     }
 
     @Override
-    protected HttpServletRequest newMockHttpServletRequest(final byte[] 
request, final Integer overrideContenLength, final Integer overrideReadLimit) {
-        return new JavaxMockHttpServletRequest(new 
ByteArrayInputStream(request), overrideContenLength != null ? 
overrideContenLength : request.length,
-                Constants.CONTENT_TYPE, overrideReadLimit != null ? 
overrideReadLimit : -1);
+    protected HttpServletRequest newMockHttpServletRequest(final InputStream 
request, final long requestLength, final String contentType, final int 
readLimit) {
+        return new JavaxMockHttpServletRequest(request, requestLength, 
contentType, readLimit);
     }
 
 }
diff --git 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java
 
b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java
index 97140d5..0df386d 100644
--- 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java
+++ 
b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxSizesTest.java
@@ -16,12 +16,11 @@
  */
 package org.apache.commons.fileupload2.javax;
 
-import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 
 import javax.servlet.http.HttpServletRequest;
 
 import org.apache.commons.fileupload2.AbstractSizesTest;
-import org.apache.commons.fileupload2.Constants;
 import org.apache.commons.fileupload2.disk.DiskFileItemFactory;
 
 /**
@@ -35,9 +34,8 @@ public class JavaxSizesTest extends 
AbstractSizesTest<ServletFileUpload, HttpSer
     }
 
     @Override
-    protected JavaxMockHttpServletRequest newMockHttpServletRequest(final 
byte[] request, final Integer overrideContenLength, final Integer 
overrideReadLimit) {
-        return new JavaxMockHttpServletRequest(new 
ByteArrayInputStream(request), overrideContenLength != null ? 
overrideContenLength : request.length,
-                Constants.CONTENT_TYPE, overrideReadLimit != null ? 
overrideReadLimit : -1);
+    protected JavaxMockHttpServletRequest newMockHttpServletRequest(final 
InputStream request, final long requestLength, final String contentType, final 
int readLimit) {
+        return new JavaxMockHttpServletRequest(request, requestLength, 
contentType, readLimit);
     }
 
 }
diff --git 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java
 
b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java
index 3bf6b93..6851b3c 100644
--- 
a/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java
+++ 
b/commons-fileupload2-javax/src/test/java/org/apache/commons/fileupload2/javax/JavaxStreamingTest.java
@@ -16,264 +16,30 @@
  */
 package org.apache.commons.fileupload2.javax;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.FilterInputStream;
-import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStreamWriter;
-import java.nio.charset.StandardCharsets;
-import java.util.Iterator;
-import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
-import org.apache.commons.fileupload2.AbstractFileUpload;
-import org.apache.commons.fileupload2.FileItem;
-import org.apache.commons.fileupload2.FileItemIterator;
-import org.apache.commons.fileupload2.FileItemStream;
-import org.apache.commons.fileupload2.FileUploadException;
-import org.apache.commons.fileupload2.InvalidFileNameException;
-import org.apache.commons.fileupload2.MultipartStream;
-import org.apache.commons.fileupload2.disk.DiskFileItemFactory;
-import org.junit.jupiter.api.Test;
+import org.apache.commons.fileupload2.AbstractStreamingTest;
 
 /**
  * Unit test for items with varying sizes.
  */
-public class JavaxStreamingTest {
-
-    private String getFooter() {
-        return "-----1234--\r\n";
-    }
-
-    private String getHeader(final String value) {
-        // @formatter:off
-        return "-----1234\r\n"
-            + "Content-Disposition: form-data; name=\"" + value + "\"\r\n"
-            + "\r\n";
-        // @formatter:on
-    }
-
-    private byte[] newRequest() throws IOException {
-        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        try (final OutputStreamWriter osw = new OutputStreamWriter(baos, 
StandardCharsets.US_ASCII)) {
-            int add = 16;
-            int num = 0;
-            for (int i = 0; i < 16384; i += add) {
-                if (++add == 32) {
-                    add = 16;
-                }
-                osw.write(getHeader("field" + (num++)));
-                osw.flush();
-                for (int j = 0; j < i; j++) {
-                    baos.write((byte) j);
-                }
-                osw.write("\r\n");
-            }
-            osw.write(getFooter());
-        }
-        return baos.toByteArray();
-    }
+public class JavaxStreamingTest extends 
AbstractStreamingTest<ServletFileUpload, HttpServletRequest, 
ServletRequestContext> {
 
-    private byte[] newShortRequest() throws IOException {
-        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        try (final OutputStreamWriter osw = new OutputStreamWriter(baos, 
StandardCharsets.US_ASCII)) {
-            osw.write(getHeader("field"));
-            osw.write("123");
-            osw.write("\r\n");
-            osw.write(getFooter());
-        }
-        return baos.toByteArray();
+    @Override
+    protected ServletFileUpload newFileUpload() {
+        return new ServletFileUpload();
     }
 
-    private List<FileItem> parseUpload(final byte[] bytes) throws 
FileUploadException {
-        return parseUpload(new ByteArrayInputStream(bytes), bytes.length);
-    }
-
-    private List<FileItem> parseUpload(final InputStream inputStream, final 
int length) throws FileUploadException {
-        final String contentType = "multipart/form-data; boundary=---1234";
-
-        final AbstractFileUpload upload = new ServletFileUpload();
-        upload.setFileItemFactory(new DiskFileItemFactory());
-        final HttpServletRequest request = new 
JavaxMockHttpServletRequest(inputStream, length, contentType, -1);
-
-        return upload.parseRequest(new ServletRequestContext(request));
-    }
-
-    private FileItemIterator parseUpload(final int length, final InputStream 
inputStream) throws FileUploadException, IOException {
-        final String contentType = "multipart/form-data; boundary=---1234";
-
-        final AbstractFileUpload upload = new ServletFileUpload();
-        upload.setFileItemFactory(new DiskFileItemFactory());
-        final HttpServletRequest request = new 
JavaxMockHttpServletRequest(inputStream, length, contentType, -1);
-
-        return upload.getItemIterator(new ServletRequestContext(request));
+    @Override
+    protected HttpServletRequest newMockHttpServletRequest(final InputStream 
request, final long requestLength, final String contentType, final int 
readLimit) {
+        return new JavaxMockHttpServletRequest(request, requestLength, 
contentType, readLimit);
     }
 
-    /**
-     * Tests a file upload with varying file sizes.
-     */
-    @Test
-    public void testFileUpload() throws IOException, FileUploadException {
-        final byte[] request = newRequest();
-        final List<FileItem> fileItems = parseUpload(request);
-        final Iterator<FileItem> fileIter = fileItems.iterator();
-        int add = 16;
-        int num = 0;
-        for (int i = 0; i < 16384; i += add) {
-            if (++add == 32) {
-                add = 16;
-            }
-            final FileItem item = fileIter.next();
-            assertEquals("field" + (num++), item.getFieldName());
-            final byte[] bytes = item.get();
-            assertEquals(i, bytes.length);
-            for (int j = 0; j < i; j++) {
-                assertEquals((byte) j, bytes[j]);
-            }
-        }
-        assertTrue(!fileIter.hasNext());
-    }
-
-    /**
-     * Test for FILEUPLOAD-135
-     */
-    @Test
-    public void testFILEUPLOAD135() throws IOException, FileUploadException {
-        final byte[] request = newShortRequest();
-        final ByteArrayInputStream bais = new ByteArrayInputStream(request);
-        final List<FileItem> fileItems = parseUpload(new InputStream() {
-            @Override
-            public int read() throws IOException {
-                return bais.read();
-            }
-
-            @Override
-            public int read(final byte[] b, final int off, final int len) 
throws IOException {
-                return bais.read(b, off, Math.min(len, 3));
-            }
-
-        }, request.length);
-        final Iterator<FileItem> fileIter = fileItems.iterator();
-        assertTrue(fileIter.hasNext());
-        final FileItem item = fileIter.next();
-        assertEquals("field", item.getFieldName());
-        final byte[] bytes = item.get();
-        assertEquals(3, bytes.length);
-        assertEquals((byte) '1', bytes[0]);
-        assertEquals((byte) '2', bytes[1]);
-        assertEquals((byte) '3', bytes[2]);
-        assertTrue(!fileIter.hasNext());
-    }
-
-    /**
-     * Tests, whether an invalid request throws a proper exception.
-     */
-    @Test
-    public void testFileUploadException() throws IOException, 
FileUploadException {
-        final byte[] request = newRequest();
-        final byte[] invalidRequest = new byte[request.length - 11];
-        System.arraycopy(request, 0, invalidRequest, 0, request.length - 11);
-        try {
-            parseUpload(invalidRequest);
-            fail("Expected EndOfStreamException");
-        } catch (final FileUploadException e) {
-            assertTrue(e.getCause() instanceof 
MultipartStream.MalformedStreamException);
-        }
-    }
-
-    /**
-     * Tests, whether an {@link InvalidFileNameException} is thrown.
-     */
-    @Test
-    public void testInvalidFileNameException() throws Exception {
-        final String fileName = "foo.exe\u0000.png";
-        // @formatter:off
-        final String request =
-            "-----1234\r\n" +
-            "Content-Disposition: form-data; name=\"file\"; filename=\"" + 
fileName + "\"\r\n" +
-            "Content-Type: text/whatever\r\n" +
-            "\r\n" +
-            "This is the content of the file\n" +
-            "\r\n" +
-            "-----1234\r\n" +
-            "Content-Disposition: form-data; name=\"field\"\r\n" +
-            "\r\n" +
-            "fieldValue\r\n" +
-            "-----1234\r\n" +
-            "Content-Disposition: form-data; name=\"multi\"\r\n" +
-            "\r\n" +
-            "value1\r\n" +
-            "-----1234\r\n" +
-            "Content-Disposition: form-data; name=\"multi\"\r\n" +
-            "\r\n" +
-            "value2\r\n" +
-            "-----1234--\r\n";
-        // @formatter:on
-        final byte[] reqBytes = request.getBytes(StandardCharsets.US_ASCII);
-
-        final FileItemIterator fileItemIter = parseUpload(reqBytes.length, new 
ByteArrayInputStream(reqBytes));
-        final FileItemStream fileItemStream = fileItemIter.next();
-        try {
-            fileItemStream.getName();
-            fail("Expected exception");
-        } catch (final InvalidFileNameException e) {
-            assertEquals(fileName, e.getName());
-            assertEquals(-1, e.getMessage().indexOf(fileName));
-            assertTrue(e.getMessage().contains("foo.exe\\0.png"));
-        }
-
-        try {
-            parseUpload(reqBytes);
-            fail("Expected exception");
-        } catch (final InvalidFileNameException e) {
-            assertEquals(fileName, e.getName());
-            assertEquals(-1, e.getMessage().indexOf(fileName));
-            assertTrue(e.getMessage().contains("foo.exe\\0.png"));
-        }
-    }
-
-    /**
-     * Tests, whether an IOException is properly delegated.
-     */
-    @Test
-    public void testIOException() throws IOException {
-        final byte[] request = newRequest();
-        final InputStream stream = new FilterInputStream(new 
ByteArrayInputStream(request)) {
-            private int num;
-
-            @Override
-            public int read() throws IOException {
-                if (++num > 123) {
-                    throw new IOException("123");
-                }
-                return super.read();
-            }
-
-            @Override
-            public int read(final byte[] buffer, final int offset, final int 
length) throws IOException {
-                for (int i = 0; i < length; i++) {
-                    final int res = read();
-                    if (res == -1) {
-                        return i == 0 ? -1 : i;
-                    }
-                    buffer[offset + i] = (byte) res;
-                }
-                return length;
-            }
-        };
-        try {
-            parseUpload(stream, request.length);
-            fail("Expected IOException");
-        } catch (final FileUploadException e) {
-            assertTrue(e.getCause() instanceof IOException);
-            assertEquals("123", e.getCause().getMessage());
-        }
+    @Override
+    protected ServletRequestContext newServletRequestContext(final 
HttpServletRequest request) {
+        return new ServletRequestContext(request);
     }
 
 }

Reply via email to