diff options
Diffstat (limited to 'tests/auto/qhttpserver/tst_qhttpserver.cpp')
-rw-r--r-- | tests/auto/qhttpserver/tst_qhttpserver.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/auto/qhttpserver/tst_qhttpserver.cpp b/tests/auto/qhttpserver/tst_qhttpserver.cpp index 4c50463..a5feaf9 100644 --- a/tests/auto/qhttpserver/tst_qhttpserver.cpp +++ b/tests/auto/qhttpserver/tst_qhttpserver.cpp @@ -129,6 +129,7 @@ private slots: void routeExtraHeaders(); void invalidRouterArguments(); void checkRouteLambdaCapture(); + void afterRequest(); private: void checkReply(QNetworkReply *reply, const QString &response); @@ -289,6 +290,10 @@ void tst_QHttpServer::initTestCase() return resp; }); + httpserver.afterRequest([] (QHttpServerResponse &&resp) { + return std::move(resp); + }); + quint16 port = httpserver.listen(); if (!port) qCritical() << "Http server listen failed"; @@ -870,6 +875,36 @@ void tst_QHttpServer::checkRouteLambdaCapture() return; } +void tst_QHttpServer::afterRequest() +{ + httpserver.afterRequest([] (QHttpServerResponse &&resp, + const QHttpServerRequest &request) { + if (request.url().path() == "/test-after-request") + resp.setHeader("Arguments-Order-1", "resp, request"); + + return std::move(resp); + }); + + httpserver.afterRequest([] (const QHttpServerRequest &request, + QHttpServerResponse &&resp) { + if (request.url().path() == "/test-after-request") + resp.setHeader("Arguments-Order-2", "request, resp"); + + return std::move(resp); + }); + + const QUrl requestUrl(urlBase.arg("/test-after-request")); + auto reply = networkAccessManager.get(QNetworkRequest(requestUrl)); + + QTRY_VERIFY(reply->isFinished()); + + QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader), "application/x-empty"); + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 404); + QCOMPARE(reply->rawHeader("Arguments-Order-1"), "resp, request"); + QCOMPARE(reply->rawHeader("Arguments-Order-2"), "request, resp"); + reply->deleteLater(); +} + void tst_QHttpServer::checkReply(QNetworkReply *reply, const QString &response) { QTRY_VERIFY(reply->isFinished()); |