diff options
| author | luqiuwen <[email protected]> | 2019-01-29 14:45:57 +0600 |
|---|---|---|
| committer | luqiuwen <[email protected]> | 2019-01-29 14:45:57 +0600 |
| commit | f6c1ea0e28d756683e492a129fd13def7981f27b (patch) | |
| tree | 1310977307cdda9951634f41ff2558ea334cbc0e /plugin/protocol/http | |
| parent | 966628083406772dda50ebfec1b9d6fa643a6c3e (diff) | |
Close #115 升级http-parser到2.9.0版本并增加对以\r\n起始的HTTP应答执行HTTP解析的单元测试用例
Diffstat (limited to 'plugin/protocol/http')
| -rw-r--r-- | plugin/protocol/http/test/test_http_half.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/plugin/protocol/http/test/test_http_half.cpp b/plugin/protocol/http/test/test_http_half.cpp index a27968d..aa2df56 100644 --- a/plugin/protocol/http/test/test_http_half.cpp +++ b/plugin/protocol/http/test/test_http_half.cpp @@ -1478,6 +1478,69 @@ TEST_F(HttpHalfResponseParser, GzipChunkResponseStream) EXPECT_EQ(ret, 1); } +static const char * __str_test_split_http_1 = + "GET http://download.bookset.me/d.php?f=2008/9/%5B%E6%97%A5%5D-%E4%B8%9C%E9%87%8E%E5%9C%AD%E5%90%BE-%E7%99%BD%E5%A4%9C%E8%A1%8C-9787544242516.epub HTTP/1.1\r\n" + "Host: download.bookset.me\r\n" + "Proxy-Connection: keep-alive\r\n" + "Pragma: no-cache\r\n" + "Cache-Control: no-cache\r\n" + "Upgrade-Insecure-Requests: 1\r\n" + "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36\r\n" + "DNT: 1\r\n" + "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n" + "Accept-Encoding: gzip, deflate"; + +static const char * __str_test_split_http_2 = + "\r\nAccept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7\r\n" + "Cookie: __cfduid=d9409925f352f688f4276a454c05a6b8e1548735697\r\n" + "\r\n"; + +static const char * __str_test_split_http_resp_1 = + "\nHTTP/1.1 200 OK\r\n" + "Date: Tue, 29 Jan 2019 04:22:25 GMT\r\n" + "Content-Type: application/octet-stream\r\n" + "Content-Length: 491664\r\n" + "Connection: close\r\n" + "X-Powered-By: PHP/7.0.21\r\n" + "Content-Transfer-Encoding: Binary\r\n" + "Content-disposition: attachment; filename=87544242516.epub\r\n" + "Server: cloudflare\r\n" + "CF-RAY: 4a08eae2e77dc28d-FRA\r\n"; + +TEST(HttpHalfRequestParser, SplitRequestAtHeader) +{ + auto * hf_request = hf_private_create(TFE_HTTP_REQUEST, 1, 1); + ASSERT_TRUE(hf_request != NULL); + + /* First Part of HTTP Request */ + int ret = hf_private_parse(hf_request, (const unsigned char *) __str_test_split_http_1, + strlen(__str_test_split_http_1)); + + EXPECT_EQ(ret, 0); + EXPECT_EQ(hf_request->parse_cursor, strlen(__str_test_split_http_1)); + + hf_request->parse_cursor = 0; + + ret = hf_private_parse(hf_request, (const unsigned char *) __str_test_split_http_2, + strlen(__str_test_split_http_2)); + + EXPECT_EQ(ret, 1); + EXPECT_EQ(hf_request->parse_cursor, strlen(__str_test_split_http_2)); +} + +TEST(HttpHalfRequestParser, SplitResponseAtHeader) +{ + auto * hf_request = hf_private_create(TFE_HTTP_RESPONSE, 1, 1); + ASSERT_TRUE(hf_request != NULL); + + /* First Part of HTTP Request */ + int ret = hf_private_parse(hf_request, (const unsigned char *) __str_test_split_http_resp_1, + strlen(__str_test_split_http_resp_1)); + + EXPECT_EQ(ret, 0); + EXPECT_EQ(hf_request->parse_cursor, strlen(__str_test_split_http_resp_1)); +} + void tfe_stream_write_access_log(const struct tfe_stream * stream, int level, const char * fmt, ...) { return; |
