test-http-res.cpp
1 #include <cassert> 2 #include "HTTP.h" 3 4 using namespace i2p::http; 5 6 int main() { 7 HTTPRes *res; 8 int ret = 0, len = 0; 9 const char *buf; 10 11 /* test: parsing valid response without body */ 12 buf = 13 "HTTP/1.1 304 Not Modified\r\n" 14 "Date: Thu, 14 Apr 2016 00:00:00 GMT\r\n" 15 "Server: nginx/1.2.1\r\n" 16 "Content-Length: 536\r\n" 17 "\r\n"; 18 len = strlen(buf); 19 res = new HTTPRes; 20 assert((ret = res->parse(buf, len)) == len); 21 assert(res->version == "HTTP/1.1"); 22 assert(res->status == "Not Modified"); 23 assert(res->code == 304); 24 assert(res->headers.size() == 3); 25 assert(res->headers.count("Date") == 1); 26 assert(res->headers.count("Server") == 1); 27 assert(res->headers.count("Content-Length") == 1); 28 assert(res->headers.find("Date")->second == "Thu, 14 Apr 2016 00:00:00 GMT"); 29 assert(res->headers.find("Server")->second == "nginx/1.2.1"); 30 assert(res->headers.find("Content-Length")->second == "536"); 31 assert(res->is_chunked() == false); 32 assert(res->content_length() == 536); 33 delete res; 34 35 /* test: building request */ 36 buf = 37 "HTTP/1.0 304 Not Modified\r\n" 38 "Content-Length: 0\r\n" 39 "\r\n"; 40 res = new HTTPRes; 41 res->version = "HTTP/1.0"; 42 res->code = 304; 43 res->status = "Not Modified"; 44 res->add_header("Content-Length", "0"); 45 assert(res->to_string() == buf); 46 47 return 0; 48 } 49 50 /* vim: expandtab:ts=2 */