diff options
author | Kirill Burtsev <kirill.burtsev@qt.io> | 2020-07-31 16:02:36 +0200 |
---|---|---|
committer | Kirill Burtsev <kirill.burtsev@qt.io> | 2020-08-31 10:04:32 +0200 |
commit | cb9e6a7d90035cd50e389f000df1a3103e312af0 (patch) | |
tree | 75b5bb8b3bf79c2ec6fc9bbcc88b29d111402d33 /tests/auto | |
parent | e30208ed4d8c2396f0a9c3330b9aefd6c7c91157 (diff) |
Simplify testing with HttpServer
Since reply with 404 for unknown resources is a common pattern in tests,
reply with it automatically for unhandled requests
Change-Id: Ifd184cf474f1ec311c8654dfbacdd735e33d7c97
Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
Diffstat (limited to 'tests/auto')
8 files changed, 31 insertions, 61 deletions
diff --git a/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp b/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp index 8bef29ff7..5290d5373 100644 --- a/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp +++ b/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp @@ -260,13 +260,11 @@ void tst_QWebEngineCookieStore::basicFilterOverHTTP() connect(&httpServer, &HttpServer::newRequest, [&cookieRequestHeader](HttpReqRep *rr) { if (rr->requestPath().size() <= 1) { cookieRequestHeader = rr->requestHeader(QByteArrayLiteral("Cookie")); - rr->setResponseStatus(200); if (cookieRequestHeader.isEmpty()) rr->setResponseHeader(QByteArrayLiteral("Set-Cookie"), QByteArrayLiteral("Test=test")); rr->sendResponse(); } else { - rr->setResponseStatus(404); - rr->sendResponse(); + rr->sendResponse(404); } }); diff --git a/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp b/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp index 350c15174..aad7a205c 100644 --- a/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp +++ b/tests/auto/core/qwebengineurlrequestinterceptor/tst_qwebengineurlrequestinterceptor.cpp @@ -203,10 +203,8 @@ private: QString path = rr->requestPath(); path.remove(0, 1); - if (rr->requestMethod() != "GET" || !resourceDir.exists(path)) - { - rr->setResponseStatus(404); - rr->sendResponse(); + if (rr->requestMethod() != "GET" || !resourceDir.exists(path)) { + rr->sendResponse(404); return; } @@ -663,7 +661,6 @@ void tst_QWebEngineUrlRequestInterceptor::passRefererHeader() const QByteArray headerValue = rr->requestHeader(kHttpHeaderRefererName); QCOMPARE(headerValue, kHttpHeaderReferrerValue); succeeded = headerValue == kHttpHeaderReferrerValue; - rr->setResponseStatus(200); rr->sendResponse(); }); diff --git a/tests/auto/shared/httpreqrep.cpp b/tests/auto/shared/httpreqrep.cpp index b1b6a0a04..96279bbc0 100644 --- a/tests/auto/shared/httpreqrep.cpp +++ b/tests/auto/shared/httpreqrep.cpp @@ -35,10 +35,11 @@ HttpReqRep::HttpReqRep(QTcpSocket *socket, QObject *parent) connect(m_socket, &QTcpSocket::disconnected, this, &HttpReqRep::handleDisconnected); } -void HttpReqRep::sendResponse() +void HttpReqRep::sendResponse(int statusCode) { if (m_state != State::REQUEST_RECEIVED) return; + m_responseStatusCode = statusCode; m_socket->write("HTTP/1.1 "); m_socket->write(QByteArray::number(m_responseStatusCode)); m_socket->write(" OK?\r\n"); diff --git a/tests/auto/shared/httpreqrep.h b/tests/auto/shared/httpreqrep.h index 1666b17d0..84ada0160 100644 --- a/tests/auto/shared/httpreqrep.h +++ b/tests/auto/shared/httpreqrep.h @@ -40,8 +40,9 @@ class HttpReqRep : public QObject public: explicit HttpReqRep(QTcpSocket *socket, QObject *parent = nullptr); - Q_INVOKABLE void sendResponse(); + Q_INVOKABLE void sendResponse(int statusCode = 200); void close(); + bool isClosed() const { return m_state == State::DISCONNECTED; } // Request parameters (only valid after requestReceived()) @@ -99,7 +100,7 @@ private: QByteArray m_requestMethod; QByteArray m_requestPath; std::map<QByteArray, QByteArray> m_requestHeaders; - int m_responseStatusCode = 200; + int m_responseStatusCode = -1; std::map<QByteArray, QByteArray> m_responseHeaders; QByteArray m_responseBody; }; diff --git a/tests/auto/shared/httpserver.cpp b/tests/auto/shared/httpserver.cpp index e282fc8b8..c93d30706 100644 --- a/tests/auto/shared/httpserver.cpp +++ b/tests/auto/shared/httpserver.cpp @@ -85,7 +85,8 @@ void HttpServer::handleNewConnection() auto rr = new HttpReqRep(m_tcpServer->nextPendingConnection(), this); connect(rr, &HttpReqRep::requestReceived, [this, rr]() { Q_EMIT newRequest(rr); - rr->close(); + if (!rr->isClosed()) + rr->sendResponse(404); }); connect(rr, &HttpReqRep::responseSent, [rr]() { qCInfo(gHttpServerLog).noquote() << rr->requestMethod() << rr->requestPath() diff --git a/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp b/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp index 39948c211..81329338c 100644 --- a/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp +++ b/tests/auto/widgets/qwebenginedownloaditem/tst_qwebenginedownloaditem.cpp @@ -440,8 +440,7 @@ void tst_QWebEngineDownloadItem::downloadLink() rr->setResponseBody(fileContents); rr->sendResponse(); } else { - rr->setResponseStatus(404); - rr->sendResponse(); + rr->sendResponse(404); } }); @@ -561,9 +560,6 @@ void tst_QWebEngineDownloadItem::downloadTwoLinks() rr->setResponseHeader(QByteArrayLiteral("content-disposition"), QByteArrayLiteral("attachment")); rr->setResponseBody(QByteArrayLiteral("file2")); rr->sendResponse(); - } else { - rr->setResponseStatus(404); - rr->sendResponse(); } }); @@ -644,9 +640,6 @@ void tst_QWebEngineDownloadItem::downloadPage() rr->setResponseHeader(QByteArrayLiteral("content-type"), QByteArrayLiteral("text/html")); rr->setResponseBody(QByteArrayLiteral("<html><body>Hello</body></html>")); rr->sendResponse(); - } else { - rr->setResponseStatus(404); - rr->sendResponse(); } }); @@ -735,9 +728,6 @@ void tst_QWebEngineDownloadItem::downloadViaSetUrl() rr->setResponseHeader(QByteArrayLiteral("content-disposition"), QByteArrayLiteral("attachment")); rr->setResponseBody(QByteArrayLiteral("redacted")); rr->sendResponse(); - } else { - rr->setResponseStatus(404); - rr->sendResponse(); } }); @@ -779,8 +769,7 @@ void tst_QWebEngineDownloadItem::downloadFileNot1() // Trigger file download via download() but don't accept(). ScopedConnection sc1 = connect(m_server, &HttpServer::newRequest, [&](HttpReqRep *rr) { - rr->setResponseStatus(404); - rr->sendResponse(); + rr->sendResponse(404); }); QPointer<QWebEngineDownloadItem> downloadItem; @@ -802,8 +791,7 @@ void tst_QWebEngineDownloadItem::downloadFileNot2() // Trigger file download via download() but call cancel() instead of accept(). ScopedConnection sc1 = connect(m_server, &HttpServer::newRequest, [&](HttpReqRep *rr) { - rr->setResponseStatus(404); - rr->sendResponse(); + rr->sendResponse(404); }); QPointer<QWebEngineDownloadItem> downloadItem; @@ -825,32 +813,30 @@ void tst_QWebEngineDownloadItem::downloadFileNot2() void tst_QWebEngineDownloadItem::downloadDeleted() { QPointer<QWebEngineDownloadItem> downloadItem; - m_server->setExpectError(true); - int downloadCount = 0; - int finishedCount = 0; + int downloadCount = 0, finishedCount = 0; + ScopedConnection sc2 = connect(m_profile, &QWebEngineProfile::downloadRequested, [&](QWebEngineDownloadItem *item) { QVERIFY(item); QCOMPARE(item->state(), QWebEngineDownloadItem::DownloadRequested); downloadItem = item; - connect(downloadItem, &QWebEngineDownloadItem::finished, [&]() { - finishedCount++; - }); + connect(downloadItem, &QWebEngineDownloadItem::finished, [&]() { ++finishedCount; }); + ++downloadCount; + // accept and schedule deletion, and check if it still finishes item->accept(); - downloadCount++; + item->deleteLater(); + QVERIFY(downloadItem); }); m_page->download(m_server->url(QByteArrayLiteral("/file"))); QTRY_COMPARE(downloadCount, 1); - QVERIFY(downloadItem); - QCOMPARE(finishedCount, 0); - downloadItem->deleteLater(); QTRY_COMPARE(finishedCount, 1); + QTRY_VERIFY(!downloadItem); + QCOMPARE(downloadCount, 1); + QCOMPARE(finishedCount, 1); } void tst_QWebEngineDownloadItem::downloadDeletedByProfile() { - m_server->setExpectError(true); - QPointer<QWebEngineProfile> profile(new QWebEngineProfile); profile->setHttpCacheType(QWebEngineProfile::NoCache); profile->settings()->setAttribute(QWebEngineSettings::AutoLoadIconsForPage, false); @@ -908,8 +894,7 @@ void tst_QWebEngineDownloadItem::downloadUniqueFilename() rr->setResponseBody(QByteArrayLiteral("a")); rr->sendResponse(); } else { - rr->setResponseStatus(404); - rr->sendResponse(); + rr->sendResponse(404); } }); @@ -966,8 +951,7 @@ void tst_QWebEngineDownloadItem::downloadUniqueFilenameWithTimestamp() rr->setResponseBody(QByteArrayLiteral("a")); rr->sendResponse(); } else { - rr->setResponseStatus(404); - rr->sendResponse(); + rr->sendResponse(404); } }); @@ -1062,8 +1046,7 @@ void tst_QWebEngineDownloadItem::downloadToNonExistentDir() rr->setResponseBody(QByteArrayLiteral("a")); rr->sendResponse(); } else { - rr->setResponseStatus(404); - rr->sendResponse(); + rr->sendResponse(404); } }); @@ -1119,8 +1102,7 @@ void tst_QWebEngineDownloadItem::downloadToReadOnlyDir() rr->setResponseBody(QByteArrayLiteral("a")); rr->sendResponse(); } else { - rr->setResponseStatus(404); - rr->sendResponse(); + rr->sendResponse(404); } }); @@ -1174,8 +1156,7 @@ void tst_QWebEngineDownloadItem::downloadPathValidation() rr->setResponseBody(QByteArrayLiteral("a")); rr->sendResponse(); } else { - rr->setResponseStatus(404); - rr->sendResponse(); + rr->sendResponse(404); } }); @@ -1306,8 +1287,7 @@ void tst_QWebEngineDownloadItem::downloadToDirectoryWithFileName() rr->setResponseBody(QByteArrayLiteral("a")); rr->sendResponse(); } else { - rr->setResponseStatus(404); - rr->sendResponse(); + rr->sendResponse(404); } }); diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp index a3c45918b..99c749392 100644 --- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp +++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp @@ -2257,9 +2257,6 @@ void tst_QWebEnginePage::setHtmlWithModuleImport() "}\n"); rr->setResponseHeader("Content-Type", "text/javascript"); rr->sendResponse(); - } else { - rr->setResponseStatus(404); - rr->sendResponse(); } }); QVERIFY(server.start()); @@ -3264,9 +3261,6 @@ void tst_QWebEnginePage::registerProtocolHandler() } else if (rr->requestMethod() == "GET" && rr->requestPath() == "/mail?uri=mailto%3Afoo%40bar.com") { mailRequestCount++; rr->sendResponse(); - } else { - rr->setResponseStatus(404); - rr->sendResponse(); } }); QVERIFY(server.start()); diff --git a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp index 836f1885e..f4c0484eb 100644 --- a/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp +++ b/tests/auto/widgets/qwebengineprofile/tst_qwebengineprofile.cpp @@ -202,10 +202,8 @@ private: QString path = rr->requestPath(); path.remove(0, 1); - if (rr->requestMethod() != "GET" || !resourceDir.exists(path)) - { - rr->setResponseStatus(404); - rr->sendResponse(); + if (rr->requestMethod() != "GET" || !resourceDir.exists(path)) { + rr->sendResponse(404); return; } |