summaryrefslogtreecommitdiff
path: root/test/HttpHeaderProcessorTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-07-06 00:57:18 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-07-06 00:57:18 +0900
commitb00ed1aa3083800679d904223816e1a408bf4766 (patch)
treedc1f3f77423db4e5228003eff09e5458031007a6 /test/HttpHeaderProcessorTest.cc
parentf04090199f8c7bb25ebfca452f4bbe3d29904aad (diff)
More http header parser tests
Diffstat (limited to 'test/HttpHeaderProcessorTest.cc')
-rw-r--r--test/HttpHeaderProcessorTest.cc45
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);