Add test for MAYBE_BODY_BUT_NO_CONTENT_LENGTH warning. PiperOrigin-RevId: 532871732
diff --git a/quiche/balsa/balsa_frame_test.cc b/quiche/balsa/balsa_frame_test.cc index ce6af47..83dc611 100644 --- a/quiche/balsa/balsa_frame_test.cc +++ b/quiche/balsa/balsa_frame_test.cc
@@ -3039,6 +3039,34 @@ EXPECT_EQ(BalsaFrameEnums::BALSA_NO_ERROR, balsa_frame_.ErrorCode()); } +TEST_F(HTTPBalsaFrameTest, MissingContentLength) { + std::string header = "HTTP/1.1 200 OK\r\n\r\n"; + balsa_frame_.set_is_request(false); + balsa_frame_.ProcessInput(header.data(), header.size()); + + EXPECT_FALSE(balsa_frame_.Error()); + EXPECT_EQ(BalsaFrameEnums::MAYBE_BODY_BUT_NO_CONTENT_LENGTH, + balsa_frame_.ErrorCode()); +} + +TEST_F(HTTPBalsaFrameTest, MultipleTransferEncodingsWithMissingContentLength) { + HttpValidationPolicy http_validation_policy; + http_validation_policy.validate_transfer_encoding = false; + balsa_frame_.set_http_validation_policy(http_validation_policy); + + std::string header = + "HTTP/1.1 200 OK\r\n" + "transfer-encoding: chunked\r\n" + "transfer-encoding: identity\r\n" + "\r\n"; + balsa_frame_.set_is_request(false); + balsa_frame_.ProcessInput(header.data(), header.size()); + + EXPECT_FALSE(balsa_frame_.Error()); + EXPECT_EQ(BalsaFrameEnums::MAYBE_BODY_BUT_NO_CONTENT_LENGTH, + balsa_frame_.ErrorCode()); +} + class DetachOnDoneFramer : public NoOpBalsaVisitor { public: DetachOnDoneFramer() {