diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-07-06 00:57:18 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-07-06 00:57:18 +0900 |
| commit | b00ed1aa3083800679d904223816e1a408bf4766 (patch) | |
| tree | dc1f3f77423db4e5228003eff09e5458031007a6 /test/HttpHeaderProcessorTest.cc | |
| parent | f04090199f8c7bb25ebfca452f4bbe3d29904aad (diff) | |
More http header parser tests
Diffstat (limited to 'test/HttpHeaderProcessorTest.cc')
| -rw-r--r-- | test/HttpHeaderProcessorTest.cc | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test/HttpHeaderProcessorTest.cc b/test/HttpHeaderProcessorTest.cc index 7dc9cd0f..a46480e6 100644 --- a/test/HttpHeaderProcessorTest.cc +++ b/test/HttpHeaderProcessorTest.cc @@ -21,6 +21,7 @@ class HttpHeaderProcessorTest:public CppUnit::TestFixture { CPPUNIT_TEST(testGetHttpResponseHeader); CPPUNIT_TEST(testGetHttpResponseHeader_statusOnly); CPPUNIT_TEST(testGetHttpResponseHeader_insufficientStatusLength); + CPPUNIT_TEST(testGetHttpResponseHeader_nameStartsWs); CPPUNIT_TEST(testBeyondLimit); CPPUNIT_TEST(testGetHeaderString); CPPUNIT_TEST(testGetHttpRequestHeader); @@ -35,6 +36,7 @@ public: void testGetHttpResponseHeader(); void testGetHttpResponseHeader_statusOnly(); void testGetHttpResponseHeader_insufficientStatusLength(); + void testGetHttpResponseHeader_nameStartsWs(); void testBeyondLimit(); void testGetHeaderString(); void testGetHttpRequestHeader(); @@ -71,6 +73,7 @@ void HttpHeaderProcessorTest::testParse3() " text3\r\n" "Duplicate: foo\r\n" "Duplicate: bar\r\n" + "No-value:\r\n" "\r\n"; CPPUNIT_ASSERT(proc.parse(s)); SharedHandle<HttpHeader> h = proc.getResult(); @@ -84,6 +87,8 @@ void HttpHeaderProcessorTest::testParse3() h->findAll("duplicate")[0]); CPPUNIT_ASSERT_EQUAL(std::string("bar"), h->findAll("duplicate")[1]); + CPPUNIT_ASSERT_EQUAL(std::string(""), h->find("no-value")); + CPPUNIT_ASSERT(h->defined("no-value")); } void HttpHeaderProcessorTest::testGetLastBytesProcessed() @@ -172,6 +177,46 @@ void HttpHeaderProcessorTest::testGetHttpResponseHeader_insufficientStatusLength } } +void HttpHeaderProcessorTest::testGetHttpResponseHeader_nameStartsWs() +{ + HttpHeaderProcessor proc(HttpHeaderProcessor::CLIENT_PARSER); + + std::string hd = + "HTTP/1.1 200\r\n" + " foo:bar\r\n" + "\r\n"; + try { + proc.parse(hd); + CPPUNIT_FAIL("Exception must be thrown."); + } catch(DlAbortEx& ex) { + // Success + } + + proc.clear(); + hd = + "HTTP/1.1 200\r\n" + ":foo:bar\r\n" + "\r\n"; + try { + proc.parse(hd); + CPPUNIT_FAIL("Exception must be thrown."); + } catch(DlAbortEx& ex) { + // Success + } + + proc.clear(); + hd = + "HTTP/1.1 200\r\n" + ":foo\r\n" + "\r\n"; + try { + proc.parse(hd); + CPPUNIT_FAIL("Exception must be thrown."); + } catch(DlAbortEx& ex) { + // Success + } +} + void HttpHeaderProcessorTest::testBeyondLimit() { HttpHeaderProcessor proc(HttpHeaderProcessor::CLIENT_PARSER); |
