package org.voovan.test.http; import junit.framework.TestCase; import org.voovan.http.message.HttpParser; import org.voovan.http.message.Request; import org.voovan.http.message.Response; import org.voovan.tools.ByteBufferChannel; import org.voovan.tools.TFile; import org.voovan.tools.log.Logger; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; public class HttpParserUnit extends TestCase { String httpRequestGet = "GET /test/t?name=helyho HTTP/1.1\r\n"+ "Connection: keep-alive\r\n"+ "UserAgent: Jakarta Commons-HttpClient/3.1\r\n"+ "Host: 127.0.0.1:1031\r\n"+ "\r\n"; String httpRequestPostSimple = "POST /test/t HTTP/1.1\r\n"+ "Connection: keep-alive\r\n"+ "Content-Type: application/x-www-form-urlencoded\r\n"+ "Content-Length: 34\r\n"+ "User-Agent: Jakarta Commons-HttpClient/3.1\r\n"+ "Host: 127.0.0.1:1031\r\n"+ "\r\n"+ "name=helyho&age=32%3D&address=wlmq\r\n"+ "\r\n"; String httpRequestPostComplex = "POST /test/t HTTP/1.1\r\n"+ "Connection: keep-alive\r\n"+ "Content-Type: multipart/form-data; boundary=ujjLiiJBznFt70fG1F4EUCkIupn7H4tzm\r\n"+ "Content-Length: 329\r\n"+ "User-Agent: Jakarta Commons-HttpClient/3.1\r\n"+ "Cookie: BAIDUID=57939E50D6B2A0B23D20CA330C89E290:FG=1; BAIDUPSID=57939E50D6B2A0B23D20CA330C89E290;\r\n"+ "Host: 127.0.0.1:1031\r\n"+ "\r\n"+ "--ujjLiiJBznFt70fG1F4EUCkIupn7H4tzm\r\n"+ "Content-Disposition: form-data; name=\"name\"; \r\n"+ "\r\n"+ "helyho\r\n"+ "--ujjLiiJBznFt70fG1F4EUCkIupn7H4tzm\r\n"+ "Content-Disposition: form-data; name=\"age\"\r\n"+ "\r\n"+ "32%3D\r\n"+ "--ujjLiiJBznFt70fG1F4EUCkIupn7H4tzm\r\n"+ "Content-Disposition: form-data; name=\"address\"\r\n"+ "\r\n"+ "wlmq\r\n"+ "--ujjLiiJBznFt70fG1F4EUCkIupn7H4tzm\r\n"+ "Content-Disposition: form-data; name=\"upload\" filename=\"1.jpg\"\r\n"+ "Content-Transfer-Encoding: binary\r\n"+ "\r\n"+ "wlmq filecontent1\r\n"+ "--ujjLiiJBznFt70fG1F4EUCkIupn7H4tzm--\r\n\r\n"; public HttpParserUnit(String name) { super(name); } public void testGet() throws IOException{ ByteBufferChannel b = new ByteBufferChannel(); b.writeEnd(ByteBuffer.wrap(httpRequestGet.getBytes())); Request request = HttpParser.parseRequest(b, 30000); assertEquals(request.header().size(),3); assertEquals(request.protocol().getPath(),"/test/t"); assertEquals(request.protocol().getMethod(),"GET"); assertEquals(request.getQueryString("UTF-8"),"name=helyho"); } public void testPostSimple() throws IOException{ ByteBufferChannel b = new ByteBufferChannel(); b.writeEnd(ByteBuffer.wrap(httpRequestPostSimple.getBytes())); Request request = HttpParser.parseRequest(b, 30000); assertEquals(request.header().size(),5); assertEquals(request.protocol().getPath(),"/test/t"); assertEquals(request.protocol().getMethod(),"POST"); assertEquals(request.getQueryString("UTF-8"),"name=helyho&age=32%3D&address=wlmq"); } public void testPostComplex() throws IOException{ ByteBufferChannel b = new ByteBufferChannel(); b.writeEnd(ByteBuffer.wrap(httpRequestPostComplex.getBytes())); Request request = HttpParser.parseRequest(b, 30000); request.toString(); request.parts().get(3).body().write("\r\n helyho"); request.parts().get(3).saveAsFile("/Users/helyho/Downloads/helyho.txt"); assertEquals(request.header().size(),5); assertEquals(request.protocol().getPath(),"/test/t"); assertEquals(request.protocol().getMethod(),"POST"); assertEquals(request.getQueryString("UTF-8"),"name=helyho&age=32%3D&address=wlmq"); } }