parser.set_buffer(my_buffer("GET / HTTP/1.1\r\n" "host: aliceinthewonderland.com\t \r\n" "\r\n" "POST /upload HTTP/1.1\r\n" "Content-length: 4\r\n" "host:thelastringbearer.org\r\n" "\r\n" "ping" "POST http://notheaven.onion/ HTTP/1.1\r\n" "Host: playwithme.onion\r\n" "X-Pants: On\r\n" "Transfer-Encoding: chunked\r\n" "\r\n" "4\r\n" "Wiki\r\n" "5\r\n" "pedia\r\n" "e\r\n" " in\r\n\r\nchunks.\r\n" "0\r\n" "\r\n" "POST http://notheaven.onion/ HTTP/1.1\r\n" "Host: playwithme.onion\r\n" "X-Pants: On\r\n" "Transfer-Encoding: chunked\r\n" "\r\n" "4\r\n" "Wiki\r\n" "5\r\n" "pedia\r\n" "e\r\n" " in\r\n\r\nchunks.\r\n" "0\r\n" "Content-MD5: \t \t\t 25b83662323c397c9944a8" "a7b3fef7ab \t\t\t\t \t \r\n" "\r\n" "POST / HTTP/1.1\r\n" "host: \r\n" "Transfer-Encoding: chunked\r\n" "\r\n" "0\r\n" "X-Ihateyou: \r\n" "\r\n"));
TEST_CASE("Parse a few pipelined non-fragmented/whole responses", "[parser,good]") { http::reader::response parser; REQUIRE(parser.code() == http::token::code::error_insufficient_data); REQUIRE(parser.token_size() == 0); REQUIRE(parser.expected_token() == http::token::code::skip); parser.set_buffer(my_buffer("HTTP/1.1 200 OK\r\n" "Server: Boost master race\r\n" "Content-Length: 0\r\n" "\r\n" // SECOND RESPONSE "HTTP/1.1 200 OK\r\n" "Transfer-Encoding: chunked\r\n" "\r\n" // THIRD RESPONSE "HTTP/1.1 200 OK\r\n" "Transfer-Encoding: chunked\r\n" "\r\n")); parser.next(); REQUIRE(parser.code() == http::token::code::skip); REQUIRE(parser.token_size() == 7); REQUIRE(parser.expected_token() == http::token::code::version); parser.next();