/[Apache-SVN]/jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/TestHttpParser.java
ViewVC logotype

Diff of /jakarta/commons/proper/httpclient/trunk/src/test/org/apache/commons/httpclient/TestHttpParser.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch 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());
+    }
 }

 

infrastructure at apache.org
ViewVC Help
Powered by ViewVC 1.1.26