Diff of /jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/TestHttpParser.java
Parent Directory
| Revision Log
| Patch
--- jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/TestHttpParser.java 2005/06/01 19:59:30 179410
+++ jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/TestHttpParser.java 2005/06/01 20:04:58 179411
@@ -76,4 +76,50 @@ public class TestHttpParser extends Test
assertEquals("stuff", HttpParser.readLine(instream, HTTP_ELEMENT_CHARSET));
assertEquals(null, HttpParser.readLine(instream, HTTP_ELEMENT_CHARSET));
}
+
+ public void testReadWellFormedHttpHeaders() throws Exception {
+ InputStream instream = new ByteArrayInputStream(
+ "a: a\r\nb: b\r\n\r\nwhatever".getBytes(HTTP_ELEMENT_CHARSET));
+ Header[] headers = HttpParser.parseHeaders(instream, HTTP_ELEMENT_CHARSET);
+ assertNotNull(headers);
+ assertEquals(2, headers.length);
+ assertEquals("a", headers[0].getName());
+ assertEquals("a", headers[0].getValue());
+ assertEquals("b", headers[1].getName());
+ assertEquals("b", headers[1].getValue());
+ }
+
+ public void testReadMalformedHttpHeaders() throws Exception {
+ InputStream instream = new ByteArrayInputStream(
+ "a: a\r\nb b\r\n\r\nwhatever".getBytes(HTTP_ELEMENT_CHARSET));
+ try {
+ Header[] headers = HttpParser.parseHeaders(instream, HTTP_ELEMENT_CHARSET);
+ fail("HttpException should have been thrown");
+ } catch (HttpException expected) {
+ }
+ }
+
+ public void testHeadersTerminatorLeniency1() throws Exception {
+ InputStream instream = new ByteArrayInputStream(
+ "a: a\r\nb: b\r\n\r\r\nwhatever".getBytes(HTTP_ELEMENT_CHARSET));
+ Header[] headers = HttpParser.parseHeaders(instream, HTTP_ELEMENT_CHARSET);
+ assertNotNull(headers);
+ assertEquals(2, headers.length);
+ assertEquals("a", headers[0].getName());
+ assertEquals("a", headers[0].getValue());
+ assertEquals("b", headers[1].getName());
+ assertEquals("b", headers[1].getValue());
+ }
+
+ public void testHeadersTerminatorLeniency2() throws Exception {
+ InputStream instream = new ByteArrayInputStream(
+ "a: a\r\nb: b\r\n \r\nwhatever".getBytes(HTTP_ELEMENT_CHARSET));
+ Header[] headers = HttpParser.parseHeaders(instream, HTTP_ELEMENT_CHARSET);
+ assertNotNull(headers);
+ assertEquals(2, headers.length);
+ assertEquals("a", headers[0].getName());
+ assertEquals("a", headers[0].getValue());
+ assertEquals("b", headers[1].getName());
+ assertEquals("b", headers[1].getValue());
+ }
}