Exemplo n.º 1
0
TEST_F(HTTP2CodecTest, BasicHeader) {
  HTTPMessage req = getGetRequest("/guacamole");
  req.getHeaders().add("user-agent", "coolio");
  // Connection header will get dropped
  req.getHeaders().add("Connection", "Love");
  req.setSecure(true);
  upstreamCodec_.generateHeader(output_, 1, req, 0, true /* eom */);

  parse();
  callbacks_.expectMessage(true, 2, "/guacamole");
  EXPECT_TRUE(callbacks_.msg->isSecure());
  const auto& headers = callbacks_.msg->getHeaders();
  EXPECT_EQ("coolio", headers.getSingleOrEmpty("user-agent"));
  EXPECT_EQ("www.foo.com", headers.getSingleOrEmpty("host"));
}
Exemplo n.º 2
0
TEST_F(HTTP2CodecTest, DuplicateHeaders) {
  HTTPMessage req = getGetRequest("/guacamole");
  req.getHeaders().add("user-agent", "coolio");
  req.setSecure(true);
  upstreamCodec_.generateHeader(output_, 1, req, 0, true /* eom */);
  writeFrameHeaderManual(output_, 0, (uint8_t)http2::FrameType::HEADERS,
                         http2::END_STREAM, 1);

  parse();
  EXPECT_EQ(callbacks_.messageBegin, 1);
  EXPECT_EQ(callbacks_.headersComplete, 1);
  EXPECT_EQ(callbacks_.messageComplete, 1);
  EXPECT_EQ(callbacks_.streamErrors, 0);
  EXPECT_EQ(callbacks_.sessionErrors, 1);
}
Exemplo n.º 3
0
TEST_F(HTTP2CodecTest, Cookies) {
  HTTPMessage req = getGetRequest("/guacamole");
  req.getHeaders().add("Cookie", "chocolate-chip=1");
  req.getHeaders().add("Cookie", "rainbow-chip=2");
  req.getHeaders().add("Cookie", "butterscotch=3");
  req.getHeaders().add("Cookie", "oatmeal-raisin=4");
  req.setSecure(true);
  upstreamCodec_.generateHeader(output_, 1, req, 0);

  parse();
  callbacks_.expectMessage(false, 2, "/guacamole");
  EXPECT_EQ(callbacks_.msg->getCookie("chocolate-chip"), "1");
  EXPECT_EQ(callbacks_.msg->getCookie("rainbow-chip"), "2");
  EXPECT_EQ(callbacks_.msg->getCookie("butterscotch"), "3");
  EXPECT_EQ(callbacks_.msg->getCookie("oatmeal-raisin"), "4");
}
Exemplo n.º 4
0
TEST_F(HTTP2CodecTest, BasicHeader) {
  HTTPMessage req = getGetRequest("/guacamole");
  req.getHeaders().add("user-agent", "coolio");
  // Connection header will get dropped
  req.getHeaders().add("Connection", "Love");
  req.setSecure(true);
  upstreamCodec_.generateHeader(output_, 1, req, 0);

  parse([] (IOBuf *ingress) {
      // for now, hack the END_STREAM flag in
      ingress->writableData()[4 + http2::kConnectionPreface.length()] |=
        http2::END_STREAM;
    });
  callbacks_.expectMessage(true, 2, "/guacamole");
  EXPECT_TRUE(callbacks_.msg->isSecure());
  const auto& headers = callbacks_.msg->getHeaders();
  EXPECT_EQ("coolio", headers.getSingleOrEmpty("user-agent"));
  EXPECT_EQ("www.foo.com", headers.getSingleOrEmpty("host"));
}