-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrequest_parser_test.cpp
51 lines (41 loc) · 1.78 KB
/
request_parser_test.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "gtest/gtest.h"
#include "request_parser.hpp"
#include "request.hpp"
#include <boost/asio.hpp>
#include <boost/bind.hpp>
namespace http {
namespace server {
TEST(RequestParsingTesting, EmptyParse) {
request_parser request_parser_;
request_parser::result_type res;
Request request_;
std::string buffer = "";
std::tie(res, std::ignore) = request_parser_.parse(buffer.begin(), buffer.end());
EXPECT_EQ(res, request_parser::indeterminate);
}
TEST(RequestParsingTesting, BadParse) {
request_parser request_parser_;
request_parser::result_type res;
Request request_;
std::string buffer = "()";
std::tie(res, std::ignore) = request_parser_.parse(buffer.begin(), buffer.end());
EXPECT_EQ(res, request_parser::bad);
}
TEST(RequestParsingTesting, GoodParse) {
request_parser request_parser_;
request_parser::result_type res;
Request request_;
std::string buffer = "GET /index.html HTTP/1.1\r\n\r\n";
std::tie(res, std::ignore) = request_parser_.parse(buffer.begin(), buffer.end());
EXPECT_EQ(res, request_parser::good);
}
TEST(RequestParsingTesting, GoodLongParse) {
request_parser request_parser_;
request_parser::result_type res;
Request request_;
std::string buffer = "GET /index.html HTTP/1.1\r\nHost: localhost:12345\r\nConnection: keep-alive\r\nCache-Control: max-age=0\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp;q=0.8\r\nAccept-Encoding: gzip, deflate, sdch, br\r\nAccept-Language: en-US,en;q=0.8\r\n\r\n";
std::tie(res, std::ignore) = request_parser_.parse(buffer.begin(), buffer.end());
EXPECT_EQ(res, request_parser::good);
}
}
}