summaryrefslogtreecommitdiffstats
path: root/tests/auto/qhttpserver/tst_qhttpserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qhttpserver/tst_qhttpserver.cpp')
-rw-r--r--tests/auto/qhttpserver/tst_qhttpserver.cpp35
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());