395215 Multipart mime with just LF and no CRLF: add test for legacy filter

This commit is contained in:
Jan Bartel 2012-11-29 17:31:10 +11:00
parent 21f717078c
commit 5e7f394d44
1 changed files with 155 additions and 3 deletions

View File

@ -53,11 +53,11 @@ public class MultipartFilterTest
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
assertNotNull(req.getParameter("fileName"));
assertEquals("abc", req.getParameter("fileName"));
assertEquals(getServletContext().getAttribute("fileName"), req.getParameter("fileName"));
assertNotNull(req.getParameter("desc"));
assertEquals("123", req.getParameter("desc"));
assertEquals(getServletContext().getAttribute("desc"), req.getParameter("desc"));
assertNotNull(req.getParameter("title"));
assertEquals("ttt", req.getParameter("title"));
assertEquals(getServletContext().getAttribute("title"), req.getParameter("title"));
super.doPost(req, resp);
}
}
@ -312,6 +312,158 @@ public class MultipartFilterTest
assertEquals(HttpServletResponse.SC_OK,response.getStatus());
}
@Test
public void testLFOnlyRequest() throws Exception
{
String boundary="XyXyXy";
// generated and parsed test
HttpTester.Request request = HttpTester.newRequest();
HttpTester.Response response;
tester.addServlet(BoundaryServlet.class,"/testb");
tester.setAttribute("fileName", "abc");
tester.setAttribute("desc", "123");
tester.setAttribute("title", "ttt");
request.setMethod("POST");
request.setVersion("HTTP/1.0");
request.setHeader("Host","tester");
request.setURI("/context/testb");
request.setHeader("Content-Type","multipart/form-data; boundary="+boundary);
String content = "--XyXyXy\n"+
"Content-Disposition: form-data; name=\"fileName\"\n"+
"Content-Type: text/plain; charset=US-ASCII\n"+
"Content-Transfer-Encoding: 8bit\n"+
"\n"+
"abc\n"+
"--XyXyXy\n"+
"Content-Disposition: form-data; name=\"desc\"\n"+
"Content-Type: text/plain; charset=US-ASCII\n"+
"Content-Transfer-Encoding: 8bit\n"+
"\n"+
"123\n"+
"--XyXyXy\n"+
"Content-Disposition: form-data; name=\"title\"\n"+
"Content-Type: text/plain; charset=US-ASCII\n"+
"Content-Transfer-Encoding: 8bit\n"+
"\n"+
"ttt\n"+
"--XyXyXy\n"+
"Content-Disposition: form-data; name=\"fileup\"; filename=\"test.upload\"\n"+
"Content-Type: application/octet-stream\n"+
"Content-Transfer-Encoding: binary\n"+
"\n"+
"000\n"+
"--XyXyXy--\n";
request.setContent(content);
response = HttpTester.parseResponse(tester.getResponses(request.generate()));
assertEquals(HttpServletResponse.SC_OK,response.getStatus());
}
@Test
public void testCROnlyRequest() throws Exception
{
String boundary="XyXyXy";
// generated and parsed test
HttpTester.Request request = HttpTester.newRequest();
HttpTester.Response response;
tester.addServlet(BoundaryServlet.class,"/testb");
tester.setAttribute("fileName", "abc");
tester.setAttribute("desc", "123");
tester.setAttribute("title", "ttt");
request.setMethod("POST");
request.setVersion("HTTP/1.0");
request.setHeader("Host","tester");
request.setURI("/context/testb");
request.setHeader("Content-Type","multipart/form-data; boundary="+boundary);
String content = "--XyXyXy\r"+
"Content-Disposition: form-data; name=\"fileName\"\r"+
"Content-Type: text/plain; charset=US-ASCII\r"+
"Content-Transfer-Encoding: 8bit\r"+
"\r"+
"abc\r"+
"--XyXyXy\r"+
"Content-Disposition: form-data; name=\"desc\"\r"+
"Content-Type: text/plain; charset=US-ASCII\r"+
"Content-Transfer-Encoding: 8bit\r"+
"\r"+
"123\r"+
"--XyXyXy\r"+
"Content-Disposition: form-data; name=\"title\"\r"+
"Content-Type: text/plain; charset=US-ASCII\r"+
"Content-Transfer-Encoding: 8bit\r"+
"\r"+
"ttt\r"+
"--XyXyXy\r"+
"Content-Disposition: form-data; name=\"fileup\"; filename=\"test.upload\"\r"+
"Content-Type: application/octet-stream\r"+
"Content-Transfer-Encoding: binary\r"+
"\r"+
"000\r"+
"--XyXyXy--\r";
request.setContent(content);
response = HttpTester.parseResponse(tester.getResponses(request.generate()));
assertEquals(HttpServletResponse.SC_OK,response.getStatus());
}
@Test
public void testCROnlyWithEmbeddedLFRequest() throws Exception
{
String boundary="XyXyXy";
// generated and parsed test
HttpTester.Request request = HttpTester.newRequest();
HttpTester.Response response;
tester.addServlet(BoundaryServlet.class,"/testb");
tester.setAttribute("fileName", "\nabc\n");
tester.setAttribute("desc", "\n123\n");
tester.setAttribute("title", "\nttt\n");
request.setMethod("POST");
request.setVersion("HTTP/1.0");
request.setHeader("Host","tester");
request.setURI("/context/testb");
request.setHeader("Content-Type","multipart/form-data; boundary="+boundary);
String content = "--XyXyXy\r"+
"Content-Disposition: form-data; name=\"fileName\"\r"+
"Content-Type: text/plain; charset=US-ASCII\r"+
"Content-Transfer-Encoding: 8bit\r"+
"\r"+
"\nabc\n"+
"\r"+
"--XyXyXy\r"+
"Content-Disposition: form-data; name=\"desc\"\r"+
"Content-Type: text/plain; charset=US-ASCII\r"+
"Content-Transfer-Encoding: 8bit\r"+
"\r"+
"\n123\n"+
"\r"+
"--XyXyXy\r"+
"Content-Disposition: form-data; name=\"title\"\r"+
"Content-Type: text/plain; charset=US-ASCII\r"+
"Content-Transfer-Encoding: 8bit\r"+
"\r"+
"\nttt\n"+
"\r"+
"--XyXyXy\r"+
"Content-Disposition: form-data; name=\"fileup\"; filename=\"test.upload\"\r"+
"Content-Type: application/octet-stream\r"+
"Content-Transfer-Encoding: binary\r"+
"\r"+
"000\r"+
"--XyXyXy--\r";
request.setContent(content);
response = HttpTester.parseResponse(tester.getResponses(request.generate()));
assertEquals(HttpServletResponse.SC_OK,response.getStatus());
}
/*
* see the testParameterMap test
*