Add test to ensure that a push promise on a data stream closes the connection. PiperOrigin-RevId: 254464588 Change-Id: I34740473fe71bf19ef443f97ebc8afe52200d758
diff --git a/quic/core/http/quic_spdy_stream_test.cc b/quic/core/http/quic_spdy_stream_test.cc index 348e5d3..2cb4bce 100644 --- a/quic/core/http/quic_spdy_stream_test.cc +++ b/quic/core/http/quic_spdy_stream_test.cc
@@ -1920,6 +1920,27 @@ ElementsAre(Pair("custom-key", "custom-value"))); } +TEST_P(QuicSpdyStreamTest, PushPromiseOnDataStreamShouldClose) { + Initialize(kShouldProcessData); + if (!HasFrameHeader()) { + return; + } + PushPromiseFrame push_promise; + push_promise.push_id = 0x01; + push_promise.headers = "Headers"; + std::unique_ptr<char[]> buffer; + HttpEncoder encoder; + uint64_t length = + encoder.SerializePushPromiseFrameWithOnlyPushId(push_promise, &buffer); + QuicStreamFrame frame(stream_->id(), false, 0, buffer.get(), length); + // TODO(lassey): Check for HTTP_WRONG_STREAM error code. + EXPECT_CALL(*connection_, CloseConnection(QUIC_HTTP_DECODER_ERROR, _, _)); + stream_->OnStreamHeadersPriority(kV3HighestPriority); + ProcessHeaders(false, headers_); + stream_->ConsumeHeaderList(); + stream_->OnStreamFrame(frame); +} + } // namespace } // namespace test } // namespace quic