Added ability to set/get HTTP response/request version
+ Additional tests
This commit is contained in:
@@ -5,7 +5,26 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <frnetlib/HttpResponse.h>
|
||||
|
||||
TEST(HttpResponseTest, response_parse)
|
||||
TEST(HttpResponseTest, response_parse_v1)
|
||||
{
|
||||
const std::string raw_response =
|
||||
"HTTP/1.0 301 Moved Permanently\n"
|
||||
"Server: nginx/1.10.2\n"
|
||||
"Date: Mon, 25 Sep 2017 13:51:56 GMT\n"
|
||||
"Content-Type: text/html\n"
|
||||
"Content-Length: 0\n"
|
||||
"Connection: keep-alive\n"
|
||||
"Location: https://frednicolson.co.uk/\n\n";
|
||||
|
||||
//Parse response
|
||||
fr::HttpResponse test;
|
||||
ASSERT_EQ(test.parse(raw_response.c_str(), raw_response.size()), fr::Socket::Success);
|
||||
|
||||
//Verify it
|
||||
ASSERT_EQ(test.get_version(), fr::Http::RequestVersion::V1);
|
||||
}
|
||||
|
||||
TEST(HttpResponseTest, response_parse_v2)
|
||||
{
|
||||
const std::string raw_response =
|
||||
"HTTP/1.1 301 Moved Permanently\n"
|
||||
@@ -38,6 +57,7 @@ TEST(HttpResponseTest, response_parse)
|
||||
ASSERT_EQ(test.parse(raw_response.c_str(), raw_response.size()), fr::Socket::Success);
|
||||
|
||||
//Verify it
|
||||
ASSERT_EQ(test.get_version(), fr::Http::RequestVersion::V1_1);
|
||||
ASSERT_EQ(test.get_status(), fr::Http::MovedPermanently);
|
||||
ASSERT_EQ(test.header("Content-length"), "177");
|
||||
ASSERT_EQ(test.get_body(), response_body);
|
||||
@@ -116,4 +136,33 @@ TEST(HttpResponseTest, body_length_test)
|
||||
buff += std::string(MAX_HTTP_BODY_SIZE + 1, '\0');
|
||||
fr::HttpResponse response;
|
||||
ASSERT_EQ(response.parse(buff.c_str(), buff.size()), fr::Socket::HttpBodyTooBig);
|
||||
}
|
||||
|
||||
TEST(HttpResponseTest, HttpResponseConstruction)
|
||||
{
|
||||
{
|
||||
fr::HttpResponse response;
|
||||
response.set_status(fr::Http::ImATeapot);
|
||||
response.header("bob") = "trob";
|
||||
response.set_body("lob");
|
||||
auto constructed = response.construct("frednicolson.co.uk");
|
||||
response = {};
|
||||
ASSERT_EQ(response.parse(constructed.c_str(), constructed.size()), fr::Socket::Status::Success);
|
||||
|
||||
ASSERT_EQ(response.get_version(), fr::Http::RequestVersion::V1_1);
|
||||
ASSERT_EQ(response.get_status(), fr::Http::RequestStatus::ImATeapot);
|
||||
ASSERT_EQ(response.get_body(), "lob");
|
||||
ASSERT_EQ(response.header("bob"), "trob");
|
||||
}
|
||||
|
||||
{
|
||||
fr::HttpResponse response;
|
||||
response.set_version(fr::Http::RequestVersion::V1);
|
||||
auto constructed = response.construct("frednicolson.co.uk");
|
||||
response = {};
|
||||
response.parse(constructed.c_str(), constructed.size());
|
||||
|
||||
ASSERT_EQ(response.get_version(), fr::Http::RequestVersion::V1);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user