/ tests / test-http-res.cpp
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 */