Add HTTPBalsaFrameTest.RequestWithTrailers.
PiperOrigin-RevId: 459235027
diff --git a/quiche/balsa/balsa_frame_test.cc b/quiche/balsa/balsa_frame_test.cc
index b6dc2ae..7895cd9 100644
--- a/quiche/balsa/balsa_frame_test.cc
+++ b/quiche/balsa/balsa_frame_test.cc
@@ -1204,6 +1204,45 @@
EXPECT_EQ("monkeys", funky);
}
+TEST_F(HTTPBalsaFrameTest, RequestWithTrailers) {
+ std::string headers =
+ "GET / HTTP/1.1\r\n"
+ "Connection: close\r\n"
+ "transfer-encoding: chunked\r\n"
+ "\r\n";
+
+ std::string chunks =
+ "3\r\n"
+ "123\r\n"
+ "0\r\n";
+ std::string trailer =
+ "crass: monkeys\r\n"
+ "funky: monkeys\r\n"
+ "\r\n";
+
+ ASSERT_EQ(headers.size(),
+ balsa_frame_.ProcessInput(headers.data(), headers.size()));
+ ASSERT_EQ(chunks.size(),
+ balsa_frame_.ProcessInput(chunks.data(), chunks.size()));
+
+ FakeHeaders fake_trailers;
+ fake_trailers.AddKeyValue("crass", "monkeys");
+ fake_trailers.AddKeyValue("funky", "monkeys");
+
+ EXPECT_CALL(visitor_mock_, OnTrailerInput(_)).Times(AtLeast(1));
+ EXPECT_CALL(visitor_mock_, ProcessTrailers(fake_trailers));
+ EXPECT_EQ(trailer.size(),
+ balsa_frame_.ProcessInput(trailer.data(), trailer.size()));
+
+ EXPECT_TRUE(balsa_frame_.MessageFullyRead());
+ EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode());
+
+ const absl::string_view crass = trailer_.GetHeader("crass");
+ EXPECT_EQ("monkeys", crass);
+ const absl::string_view funky = trailer_.GetHeader("funky");
+ EXPECT_EQ("monkeys", funky);
+}
+
TEST_F(HTTPBalsaFrameTest, NothingBadHappensWhenNoVisitorIsAssignedInResponse) {
std::string headers =
"HTTP/1.1 502 Bad Gateway\r\n"