Added more tests. Tweaks.

Receiving an http request/response will now return errors like HttpHeaderTooBig, instead of the type being set to that.

Added fr::Socket::status_to_string for converting status values into English strings.
This commit is contained in:
Fred Nicolson
2017-09-25 16:19:47 +01:00
parent abb3655739
commit c8e03f2df8
13 changed files with 266 additions and 48 deletions
+30 -2
View File
@@ -14,7 +14,7 @@ TEST(HttpRequestTest, get_request_parse)
//Parse it
fr::HttpRequest request;
ASSERT_EQ(request.parse(raw_request.c_str(), raw_request.size()), false);
ASSERT_EQ(request.parse(raw_request.c_str(), raw_request.size()), fr::Socket::Success);
//Check that the request type is intact
ASSERT_EQ(request.get_type(), fr::Http::Get);
@@ -56,7 +56,7 @@ TEST(HttpRequestTest, post_request_parse)
//Parse it
fr::HttpRequest request;
ASSERT_EQ(request.parse(raw_request.c_str(), raw_request.size()), false);
ASSERT_EQ(request.parse(raw_request.c_str(), raw_request.size()), fr::Socket::Success);
//Check that the request type is intact
ASSERT_EQ(request.get_type(), fr::Http::Post);
@@ -157,4 +157,32 @@ TEST(HttpRequestTest, post_request_construction)
ASSERT_EQ(request.post("my_post"), "post_data");
ASSERT_EQ(request.post("some_post"), "more_post");
ASSERT_EQ(request.get_type(), fr::Http::Post);
}
TEST(HttpRequestTest, partial_parse)
{
//The test request to parse
const std::string raw_request1 =
"GET /index.html?var=bob&other=trob HTTP/1.1\n"
"Host: frednicolson.co.uk\r\n"
"Content-Type: application/x-www-form-urlencoded\r\n"
"My-Header: ";
const std::string raw_request2 =
" header1\n"
"My-Other-Header:header2\r\n"
"Cache-Control: no-cache\r\n\r\n";
//Parse part 1
fr::HttpRequest request;
ASSERT_EQ(request.parse(raw_request1.c_str(), raw_request1.size()), fr::Socket::NotEnoughData);
//Parse part 2
ASSERT_EQ(request.parse(raw_request2.c_str(), raw_request2.size()), fr::Socket::Success);
//Verify it
ASSERT_EQ(request.get_type(), fr::Http::Get);
ASSERT_EQ(request.header("content-type"), "application/x-www-form-urlencoded");
ASSERT_EQ(request.header("Cache-Control"), "no-cache");
}