diff options
author | MÃ¥rten Nordheim <morten242@gmail.com> | 2021-04-28 18:19:57 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-04-30 16:24:38 +0000 |
commit | baae2252d814241f9d84606d151bef080beefe4e (patch) | |
tree | 30cb1b8b302106176e0d7f71f28163c5c8eb43d3 /tests/auto/network | |
parent | 8c0dab650dae8a88712313525cccf01abd3bf24f (diff) |
Let the h2 test server both send and receive DATA frames
And use this in the authenticationRequired test.
Change-Id: I18e991eb67168214c2c4f829afaca5018568e989
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
(cherry picked from commit deda40b8591a387e634ebfcf48287c14162ef332)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests/auto/network')
-rw-r--r-- | tests/auto/network/access/http2/http2srv.cpp | 6 | ||||
-rw-r--r-- | tests/auto/network/access/http2/tst_http2.cpp | 17 |
2 files changed, 17 insertions, 6 deletions
diff --git a/tests/auto/network/access/http2/http2srv.cpp b/tests/auto/network/access/http2/http2srv.cpp index c2670ca2a5..932b11fbb6 100644 --- a/tests/auto/network/access/http2/http2srv.cpp +++ b/tests/auto/network/access/http2/http2srv.cpp @@ -753,8 +753,10 @@ void Http2Server::handleDATA() } if (inboundFrame.flags().testFlag(FrameFlag::END_STREAM)) { - closedStreams.insert(streamID); // Enter "half-closed remote" state. - streamWindows.erase(it); + if (responseBody.isEmpty()) { + closedStreams.insert(streamID); // Enter "half-closed remote" state. + streamWindows.erase(it); + } emit receivedData(streamID); } emit receivedDATAFrame(streamID, diff --git a/tests/auto/network/access/http2/tst_http2.cpp b/tests/auto/network/access/http2/tst_http2.cpp index f08759ba19..a971792b94 100644 --- a/tests/auto/network/access/http2/tst_http2.cpp +++ b/tests/auto/network/access/http2/tst_http2.cpp @@ -164,6 +164,7 @@ private: int windowUpdates = 0; bool prefaceOK = false; bool serverGotSettingsACK = false; + bool POSTResponseHEADOnly = true; static const RawSettings defaultServerSettings; }; @@ -893,14 +894,21 @@ void tst_Http2::contentEncoding() void tst_Http2::authenticationRequired_data() { QTest::addColumn<bool>("success"); - - QTest::addRow("failed-auth") << false; - QTest::addRow("successful-auth") << true; + QTest::addColumn<bool>("responseHEADOnly"); + + QTest::addRow("failed-auth") << false << true; + QTest::addRow("successful-auth") << true << true; + // Include a DATA frame in the response from the remote server. An example would be receiving a + // JSON response on a request along with the 401 error. + QTest::addRow("failed-auth-with-response") << false << false; + QTest::addRow("successful-auth-with-response") << true << false; } void tst_Http2::authenticationRequired() { clearHTTP2State(); + QFETCH(const bool, responseHEADOnly); + POSTResponseHEADOnly = responseHEADOnly; QFETCH(const bool, success); @@ -979,6 +987,7 @@ void tst_Http2::clearHTTP2State() windowUpdates = 0; prefaceOK = false; serverGotSettingsACK = false; + POSTResponseHEADOnly = true; } void tst_Http2::runEventLoop(int ms) @@ -1111,7 +1120,7 @@ void tst_Http2::receivedData(quint32 streamID) Q_ASSERT(srv); QMetaObject::invokeMethod(srv, "sendResponse", Qt::QueuedConnection, Q_ARG(quint32, streamID), - Q_ARG(bool, true /*HEADERS only*/)); + Q_ARG(bool, POSTResponseHEADOnly /*true = HEADERS only*/)); } void tst_Http2::windowUpdated(quint32 streamID) |