Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(655)

Unified Diff: net/spdy/spdy_network_transaction_unittest.cc

Issue 2445113002: Add HTTP/2 error code NO_ERROR. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/spdy/spdy_network_transaction_unittest.cc
diff --git a/net/spdy/spdy_network_transaction_unittest.cc b/net/spdy/spdy_network_transaction_unittest.cc
index 5b2f4f1f063a5e86f09600b8f267b1db3d3048f3..a3eee45bcc8b7579e7f17dcb0c0f7c7316284171 100644
--- a/net/spdy/spdy_network_transaction_unittest.cc
+++ b/net/spdy/spdy_network_transaction_unittest.cc
@@ -6332,6 +6332,50 @@ TEST_F(SpdyNetworkTransactionTest, CRLFInHeaderValue) {
EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR));
}
+// Regression test for https://crbug.com/603182.
+// No response headers received before RST_STREAM: error.
+TEST_F(SpdyNetworkTransactionTest, RstStreamNoError) {
+ SpdySerializedFrame req(spdy_util_.ConstructChunkedSpdyPost(nullptr, 0));
+ MockWrite writes[] = {CreateMockWrite(req, 0, ASYNC)};
+
+ SpdySerializedFrame rst(
+ spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_NO_ERROR));
+ MockRead reads[] = {CreateMockRead(rst, 1), MockRead(ASYNC, 0, 2)};
+
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
+ NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(),
+ DEFAULT_PRIORITY, NetLogWithSource(),
+ nullptr);
+ helper.RunToCompletion(&data);
+ TransactionHelperResult out = helper.output();
+ EXPECT_THAT(out.rv, IsError(ERR_SPDY_PROTOCOL_ERROR));
+}
+
+// Regression test for https://crbug.com/603182.
+// Response headers and data, then RST_STREAM received,
+// before request body is sent: success.
+TEST_F(SpdyNetworkTransactionTest, RstStreamNoErrorAfterResponse) {
+ SpdySerializedFrame req(spdy_util_.ConstructChunkedSpdyPost(nullptr, 0));
+ MockWrite writes[] = {CreateMockWrite(req, 0, ASYNC)};
+
+ SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0));
+ SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true));
+ SpdySerializedFrame rst(
+ spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_NO_ERROR));
+ MockRead reads[] = {CreateMockRead(resp, 1), CreateMockRead(body, 2),
+ CreateMockRead(rst, 3), MockRead(ASYNC, 0, 4)};
+
+ SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
+ NormalSpdyTransactionHelper helper(CreateChunkedPostRequest(),
+ DEFAULT_PRIORITY, NetLogWithSource(),
+ nullptr);
+ helper.RunToCompletion(&data);
+ TransactionHelperResult out = helper.output();
+ EXPECT_THAT(out.rv, IsOk());
+ EXPECT_EQ("HTTP/1.1 200", out.status_line);
+ EXPECT_EQ("hello!", out.response_data);
+}
+
class SpdyNetworkTransactionTLSUsageCheckTest
: public SpdyNetworkTransactionTest {
protected:

Powered by Google App Engine
This is Rietveld 408576698