aboutsummaryrefslogtreecommitdiff
path: root/core/src/test/java/fi/iki/elonen/HttpPostRequestTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/test/java/fi/iki/elonen/HttpPostRequestTest.java')
-rw-r--r--core/src/test/java/fi/iki/elonen/HttpPostRequestTest.java47
1 files changed, 37 insertions, 10 deletions
diff --git a/core/src/test/java/fi/iki/elonen/HttpPostRequestTest.java b/core/src/test/java/fi/iki/elonen/HttpPostRequestTest.java
index ca6707e..522a8c9 100644
--- a/core/src/test/java/fi/iki/elonen/HttpPostRequestTest.java
+++ b/core/src/test/java/fi/iki/elonen/HttpPostRequestTest.java
@@ -4,6 +4,7 @@ import org.junit.Test;
import java.io.BufferedReader;
import java.io.FileReader;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
@@ -85,16 +86,46 @@ public class HttpPostRequestTest extends HttpServerTest {
assertEquals(VALUE, testServer.parms.get(FIELD));
assertEquals(VALUE2, testServer.parms.get(FIELD2));
}
-
+
@Test
public void testPostWithMultipartFormUpload() throws Exception {
- String divider = UUID.randomUUID().toString();
String filename = "GrandCanyon.txt";
String fileContent = VALUE;
+ String input = preparePostWithMultipartForm(filename, fileContent);
+
+ invokeServer(input);
+
+ assertEquals(1, testServer.parms.size());
+ BufferedReader reader = new BufferedReader(new FileReader(testServer.files.get(FIELD)));
+ List<String> lines = readLinesFromFile(reader);
+ assertLinesOfText(new String[]{fileContent}, lines);
+ }
+
+ @Test
+ public void testPostWithMultipartFormUploadFilenameHasSpaces() throws Exception {
+ String fileNameWithSpace = "Grand Canyon.txt";
+ String fileContent = VALUE;
+ String input = preparePostWithMultipartForm(fileNameWithSpace, fileContent);
+
+ invokeServer(input);
+
+ String fileNameAfter = new ArrayList<String>(testServer.parms.values()).get(0);
+
+ assertEquals(fileNameWithSpace, fileNameAfter);
+ }
+
+ /**
+ * contains common preparation steps for testing POST with Multipart Form
+ * @param fileName Name of file to be uploaded
+ * @param fileContent Content of file to be uploaded
+ * @return input String with POST request complete information including header, length and content
+ */
+ private String preparePostWithMultipartForm(String fileName, String fileContent) {
+ String divider = UUID.randomUUID().toString();
String header = "POST " + URI + " HTTP/1.1\nContent-Type: " +
"multipart/form-data, boundary=" + divider + "\n";
String content = "--" + divider + "\n" +
- "Content-Disposition: form-data; name=\""+FIELD+"\"; filename=\""+filename+"\"\n" +
+ "Content-Disposition: form-data; name=\""+FIELD+"\"; filename=\""+fileName+"\"\n" +
"Content-Type: image/jpeg\r\n"+
"\r\n" +
fileContent +"\r\n" +
@@ -103,12 +134,8 @@ public class HttpPostRequestTest extends HttpServerTest {
int contentLengthHeaderValueSize = String.valueOf(size).length();
int contentLength = size + contentLengthHeaderValueSize + CONTENT_LENGTH.length();
String input = header + CONTENT_LENGTH + (contentLength+5) + "\r\n\r\n" + content;
-
- invokeServer(input);
-
- assertEquals(1, testServer.parms.size());
- BufferedReader reader = new BufferedReader(new FileReader(testServer.files.get(FIELD)));
- List<String> lines = readLinesFromFile(reader);
- assertLinesOfText(new String[]{fileContent}, lines);
+
+ return input;
}
+
}