TEST(DecoderTest, Request) { Try<Socket> socket = Socket::create(); ASSERT_SOME(socket); DataDecoder decoder = DataDecoder(socket.get()); const string data = "GET /path/file.json?key1=value1&key2=value2#fragment HTTP/1.1\r\n" "Host: localhost\r\n" "Connection: close\r\n" "Accept-Encoding: compress, gzip\r\n" "\r\n"; deque<http::Request*> requests = decoder.decode(data.data(), data.length()); ASSERT_FALSE(decoder.failed()); ASSERT_EQ(1, requests.size()); Owned<http::Request> request(requests[0]); EXPECT_EQ("GET", request->method); EXPECT_EQ("/path/file.json", request->url.path); EXPECT_SOME_EQ("fragment", request->url.fragment); EXPECT_EQ(2u, request->url.query.size()); EXPECT_SOME_EQ("value1", request->url.query.get("key1")); EXPECT_SOME_EQ("value2", request->url.query.get("key2")); EXPECT_TRUE(request->body.empty()); EXPECT_FALSE(request->keepAlive); EXPECT_EQ(3u, request->headers.size()); EXPECT_SOME_EQ("localhost", request->headers.get("Host")); EXPECT_SOME_EQ("close", request->headers.get("Connection")); EXPECT_SOME_EQ("compress, gzip", request->headers.get("Accept-Encoding")); }
TEST(DecoderTest, RequestHeaderCaseInsensitive) { Try<Socket> socket = Socket::create(); ASSERT_SOME(socket); DataDecoder decoder = DataDecoder(socket.get()); const string data = "GET /path/file.json HTTP/1.1\r\n" "Host: localhost\r\n" "cOnnECtioN: close\r\n" "accept-ENCODING: compress, gzip\r\n" "\r\n"; deque<http::Request*> requests = decoder.decode(data.data(), data.length()); ASSERT_FALSE(decoder.failed()); ASSERT_EQ(1, requests.size()); Owned<http::Request> request(requests[0]); EXPECT_FALSE(request->keepAlive); EXPECT_SOME_EQ("compress, gzip", request->headers.get("Accept-Encoding")); }