Regression test for empty headers

This commit is contained in:
Vinnie Falco
2016-10-05 18:19:41 -04:00
parent 6b0b016b21
commit 843d7a5a9c

View File

@@ -18,6 +18,34 @@ namespace http {
class parser_v1_test : public beast::unit_test::suite
{
public:
void testRegressions()
{
using boost::asio::buffer;
// consecutive empty header values
{
error_code ec;
parser_v1<true, string_body, headers> p;
std::string const s =
"GET / HTTP/1.1\r\n"
"X1:\r\n"
"X2:\r\n"
"X3:x\r\n"
"\r\n";
p.write(buffer(s), ec);
if(! BEAST_EXPECTS(! ec, ec.message()))
return;
BEAST_EXPECT(p.complete());
auto const msg = p.release();
BEAST_EXPECT(msg.headers.exists("X1"));
BEAST_EXPECT(msg.headers["X1"] == "");
BEAST_EXPECT(msg.headers.exists("X2"));
BEAST_EXPECT(msg.headers["X2"] == "");
BEAST_EXPECT(msg.headers.exists("X3"));
BEAST_EXPECT(msg.headers["X3"] == "x");
}
}
void run() override
{
using boost::asio::buffer;
@@ -74,6 +102,8 @@ public:
BEAST_EXPECT(! ec);
BEAST_EXPECT(p.complete());
}
testRegressions();
}
};