File 0009-fix-http-status.patch of Package cutelyst3-qt5
From 121bffee3602629049d58457b0b2fcda0a44ee34 Mon Sep 17 00:00:00 2001
From: Daniel Nicoletti <dantti12@gmail.com>
Date: Wed, 17 Jul 2024 11:12:56 -0300
Subject: [PATCH] Fix returning http status for non covered status
Fixes #464
---
 Cutelyst/engine.cpp      |   2 +-
 Cutelyst/engine.h        |   1 +
 server/protocolhttp.cpp  | 144 ++++++++++++++++++++++++++++++++++++++-
 tests/coverageobject.cpp |   9 +--
 tests/coverageobject.h   |   5 --
 tests/testresponse.cpp   |  67 ++++++++----------
 6 files changed, 175 insertions(+), 53 deletions(-)
diff --git a/Cutelyst/engine.cpp b/Cutelyst/engine.cpp
index 9f57c153..44d99dc9 100644
--- a/Cutelyst/engine.cpp
+++ b/Cutelyst/engine.cpp
@@ -259,7 +259,7 @@ const char *Engine::httpStatusMessage(quint16 status, int *len)
         ret = "HTTP/1.1 509 Bandwidth Limit Exceeded";
         break;
     default:
-        ret = QByteArrayLiteral("HTTP/1.1 ").append(QByteArray::number(status)).constData();
+        ret = "HTTP/1.1 000 Unknown Status";
         break;
     }
 
diff --git a/Cutelyst/engine.h b/Cutelyst/engine.h
index 12d37de3..3afa48dc 100644
--- a/Cutelyst/engine.h
+++ b/Cutelyst/engine.h
@@ -146,6 +146,7 @@ class CUTELYST_LIBRARY Engine : public QObject
     /**
      * Returns the HTTP status message for the given \p status.
      */
+    Q_DECL_DEPRECATED_X("Will be removed in new major release")
     static const char *httpStatusMessage(quint16 status, int *len = nullptr);
 
 Q_SIGNALS:
diff --git a/server/protocolhttp.cpp b/server/protocolhttp.cpp
index 01fc9c65..d733e984 100644
--- a/server/protocolhttp.cpp
+++ b/server/protocolhttp.cpp
@@ -24,6 +24,8 @@
 
 using namespace Cutelyst;
 
+QByteArray http11StatusMessage(quint16 status);
+
 Q_LOGGING_CATEGORY(CWSGI_HTTP, "cwsgi.http", QtWarningMsg)
 Q_DECLARE_LOGGING_CATEGORY(CWSGI_SOCK)
 
@@ -359,9 +361,7 @@ bool ProtoRequestHttp::writeHeaders(quint16 status, const Cutelyst::Headers &hea
         return false;
     }
 
-    int msgLen;
-    const char *msg = CWsgiEngine::httpStatusMessage(status, &msgLen);
-    QByteArray data(msg, msgLen);
+    QByteArray data = http11StatusMessage(status);
 
     const auto headersData                                = headers.data();
     ProtoRequestHttp::HeaderConnection fallbackConnection = headerConnection;
@@ -574,4 +574,142 @@ bool ProtoRequestHttp::webSocketHandshakeDo(const QString &key,
     return writeHeaders(Cutelyst::Response::SwitchingProtocols, headers);
 }
 
+QByteArray http11StatusMessage(quint16 status)
+{
+    QByteArray ret;
+    switch (status) {
+    case Response::OK:
+        ret = QByteArrayLiteral("HTTP/1.1 200 OK");
+        break;
+    case Response::Found:
+        ret = QByteArrayLiteral("HTTP/1.1 302 Found");
+        break;
+    case Response::NotFound:
+        ret = QByteArrayLiteral("HTTP/1.1 404 Not Found");
+        break;
+    case Response::InternalServerError:
+        ret = QByteArrayLiteral("HTTP/1.1 500 Internal Server Error");
+        break;
+    case Response::MovedPermanently:
+        ret = QByteArrayLiteral("HTTP/1.1 301 Moved Permanently");
+        break;
+    case Response::NotModified:
+        ret = QByteArrayLiteral("HTTP/1.1 304 Not Modified");
+        break;
+    case Response::SeeOther:
+        ret = QByteArrayLiteral("HTTP/1.1 303 See Other");
+        break;
+    case Response::Forbidden:
+        ret = QByteArrayLiteral("HTTP/1.1 403 Forbidden");
+        break;
+    case Response::TemporaryRedirect:
+        ret = QByteArrayLiteral("HTTP/1.1 307 Temporary Redirect");
+        break;
+    case Response::Unauthorized:
+        ret = QByteArrayLiteral("HTTP/1.1 401 Unauthorized");
+        break;
+    case Response::BadRequest:
+        ret = QByteArrayLiteral("HTTP/1.1 400 Bad Request");
+        break;
+    case Response::MethodNotAllowed:
+        ret = QByteArrayLiteral("HTTP/1.1 405 Method Not Allowed");
+        break;
+    case Response::RequestTimeout:
+        ret = QByteArrayLiteral("HTTP/1.1 408 Request Timeout");
+        break;
+    case Response::Continue:
+        ret = QByteArrayLiteral("HTTP/1.1 100 Continue");
+        break;
+    case Response::SwitchingProtocols:
+        ret = QByteArrayLiteral("HTTP/1.1 101 Switching Protocols");
+        break;
+    case Response::Created:
+        ret = QByteArrayLiteral("HTTP/1.1 201 Created");
+        break;
+    case Response::Accepted:
+        ret = QByteArrayLiteral("HTTP/1.1 202 Accepted");
+        break;
+    case Response::NonAuthoritativeInformation:
+        ret = QByteArrayLiteral("HTTP/1.1 203 Non-Authoritative Information");
+        break;
+    case Response::NoContent:
+        ret = QByteArrayLiteral("HTTP/1.1 204 No Content");
+        break;
+    case Response::ResetContent:
+        ret = QByteArrayLiteral("HTTP/1.1 205 Reset Content");
+        break;
+    case Response::PartialContent:
+        ret = QByteArrayLiteral("HTTP/1.1 206 Partial Content");
+        break;
+    case Response::MultipleChoices:
+        ret = QByteArrayLiteral("HTTP/1.1 300 Multiple Choices");
+        break;
+    case Response::UseProxy:
+        ret = QByteArrayLiteral("HTTP/1.1 305 Use Proxy");
+        break;
+    case Response::PaymentRequired:
+        ret = QByteArrayLiteral("HTTP/1.1 402 Payment Required");
+        break;
+    case Response::NotAcceptable:
+        ret = QByteArrayLiteral("HTTP/1.1 406 Not Acceptable");
+        break;
+    case Response::ProxyAuthenticationRequired:
+        ret = QByteArrayLiteral("HTTP/1.1 407 Proxy Authentication Required");
+        break;
+    case Response::Conflict:
+        ret = QByteArrayLiteral("HTTP/1.1 409 Conflict");
+        break;
+    case Response::Gone:
+        ret = QByteArrayLiteral("HTTP/1.1 410 Gone");
+        break;
+    case Response::LengthRequired:
+        ret = QByteArrayLiteral("HTTP/1.1 411 Length Required");
+        break;
+    case Response::PreconditionFailed:
+        ret = QByteArrayLiteral("HTTP/1.1 412 Precondition Failed");
+        break;
+    case Response::RequestEntityTooLarge:
+        ret = QByteArrayLiteral("HTTP/1.1 413 Request Entity Too Large");
+        break;
+    case Response::RequestURITooLong:
+        ret = QByteArrayLiteral("HTTP/1.1 414 Request-URI Too Long");
+        break;
+    case Response::UnsupportedMediaType:
+        ret = QByteArrayLiteral("HTTP/1.1 415 Unsupported Media Type");
+        break;
+    case Response::RequestedRangeNotSatisfiable:
+        ret = QByteArrayLiteral("HTTP/1.1 416 Requested Range Not Satisfiable");
+        break;
+    case Response::ExpectationFailed:
+        ret = QByteArrayLiteral("HTTP/1.1 417 Expectation Failed");
+        break;
+    case Response::NotImplemented:
+        ret = QByteArrayLiteral("HTTP/1.1 501 Not Implemented");
+        break;
+    case Response::BadGateway:
+        ret = QByteArrayLiteral("HTTP/1.1 502 Bad Gateway");
+        break;
+    case Response::ServiceUnavailable:
+        ret = QByteArrayLiteral("HTTP/1.1 503 Service Unavailable");
+        break;
+    case Response::MultiStatus:
+        ret = QByteArrayLiteral("HTTP/1.1 207 Multi-Status");
+        break;
+    case Response::GatewayTimeout:
+        ret = QByteArrayLiteral("HTTP/1.1 504 Gateway Timeout");
+        break;
+    case Response::HTTPVersionNotSupported:
+        ret = QByteArrayLiteral("HTTP/1.1 505 HTTP Version Not Supported");
+        break;
+    case Response::BandwidthLimitExceeded:
+        ret = QByteArrayLiteral("HTTP/1.1 509 Bandwidth Limit Exceeded");
+        break;
+    default:
+        ret = QByteArrayLiteral("HTTP/1.1 ").append(QByteArray::number(status));
+        break;
+    }
+
+    return ret;
+}
+
 #include "moc_protocolhttp.cpp"
diff --git a/tests/coverageobject.cpp b/tests/coverageobject.cpp
index 12f85e34..f969d7df 100644
--- a/tests/coverageobject.cpp
+++ b/tests/coverageobject.cpp
@@ -23,7 +23,6 @@ class TestEngineConnection : public EngineRequest
 
 public:
     QByteArray m_responseData;
-    QByteArray m_status;
     Headers m_headers;
     quint16 m_statusCode;
 };
@@ -117,7 +116,6 @@ QVariantMap TestEngine::createRequest(const QString &method,
     processRequest(&req);
 
     ret = {{QStringLiteral("body"), req.m_responseData},
-           {QStringLiteral("status"), req.m_status},
            {QStringLiteral("statusCode"), req.m_statusCode},
            {QStringLiteral("headers"), QVariant::fromValue(req.m_headers)}};
 
@@ -169,11 +167,8 @@ qint64 TestEngineConnection::doWrite(const char *data, qint64 len)
 bool TestEngineConnection::writeHeaders(quint16 status, const Headers &headers)
 {
     qDebug() << "---------= " << status;
-    int len;
-    const auto *statusChar = TestEngine::httpStatusMessage(status, &len);
-    m_statusCode           = status;
-    m_status               = QByteArray(statusChar + 9, len - 9);
-    m_headers              = headers;
+    m_statusCode = status;
+    m_headers    = headers;
 
     return true;
 }
diff --git a/tests/coverageobject.h b/tests/coverageobject.h
index b2506921..45758544 100644
--- a/tests/coverageobject.h
+++ b/tests/coverageobject.h
@@ -45,11 +45,6 @@ class TestEngine : public Engine
                               QByteArray *body);
 
     virtual bool init() override;
-
-    inline static const char *httpStatusMessage(quint16 status, int *len = nullptr)
-    {
-        return Engine::httpStatusMessage(status, len);
-    }
 };
 
 class SequentialBuffer : public QIODevice
diff --git a/tests/testresponse.cpp b/tests/testresponse.cpp
index 05a8546a..e81b2dd2 100644
--- a/tests/testresponse.cpp
+++ b/tests/testresponse.cpp
@@ -230,7 +230,7 @@ void TestResponse::doTest()
     QFETCH(QString, url);
     QFETCH(Headers, headers);
     QFETCH(QByteArray, body);
-    QFETCH(QByteArray, responseStatus);
+    QFETCH(int, responseStatus);
     QFETCH(Headers, responseHeaders);
     QFETCH(QByteArray, output);
 
@@ -239,7 +239,7 @@ void TestResponse::doTest()
     QVariantMap result = m_engine->createRequest(
         method, urlAux.path(), urlAux.query(QUrl::FullyEncoded).toLatin1(), headers, &body);
 
-    QCOMPARE(result.value(QStringLiteral("status")).toByteArray(), responseStatus);
+    QCOMPARE(result.value(QStringLiteral("statusCode")).toInt(), responseStatus);
     auto resultHeaders = result.value(QStringLiteral("headers")).value<Headers>();
     if (responseHeaders != resultHeaders) {
         qDebug() << resultHeaders.data() << responseHeaders.data();
@@ -254,7 +254,7 @@ void TestResponse::testController_data()
     QTest::addColumn<QString>("url");
     QTest::addColumn<Headers>("headers");
     QTest::addColumn<QByteArray>("body");
-    QTest::addColumn<QByteArray>("responseStatus");
+    QTest::addColumn<int>("responseStatus");
     QTest::addColumn<Headers>("responseHeaders");
     QTest::addColumn<QByteArray>("output");
 
@@ -265,54 +265,49 @@ void TestResponse::testController_data()
     Headers headers;
 
     QTest::newRow("status-test00")
-        << get << QStringLiteral("/response/test/status?data=200") << headers << QByteArray()
-        << QByteArrayLiteral("200 OK")
+        << get << QStringLiteral("/response/test/status?data=200") << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("3")}}
         << QByteArrayLiteral("200");
 
     QTest::newRow("status-test01")
-        << get << QStringLiteral("/response/test/status?data=404") << headers << QByteArray()
-        << QByteArrayLiteral("404 Not Found")
+        << get << QStringLiteral("/response/test/status?data=404") << headers << QByteArray() << 404
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("3")}}
         << QByteArrayLiteral("404");
 
     QTest::newRow("status-test02")
-        << get << QStringLiteral("/response/test/status?data=301") << headers << QByteArray()
-        << QByteArrayLiteral("301 Moved Permanently")
+        << get << QStringLiteral("/response/test/status?data=301") << headers << QByteArray() << 301
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("3")}}
         << QByteArrayLiteral("301");
 
     QTest::newRow("status-test03")
-        << get << QStringLiteral("/response/test/status?data=400") << headers << QByteArray()
-        << QByteArrayLiteral("400 Bad Request")
+        << get << QStringLiteral("/response/test/status?data=400") << headers << QByteArray() << 400
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("3")}}
         << QByteArrayLiteral("400");
 
     QTest::newRow("contentEncoding-test00")
         << get << QStringLiteral("/response/test/contentEncoding?data=UTF-8") << headers
-        << QByteArray() << QByteArrayLiteral("200 OK")
+        << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("5")},
                    {QStringLiteral("Content-Encoding"), QStringLiteral("UTF-8")}}
         << QByteArrayLiteral("UTF-8");
 
     QTest::newRow("contentEncoding-test01")
         << get << QStringLiteral("/response/test/contentEncoding?data=UTF-16") << headers
-        << QByteArray() << QByteArrayLiteral("200 OK")
+        << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("6")},
                    {QStringLiteral("Content-Encoding"), QStringLiteral("UTF-16")}}
         << QByteArrayLiteral("UTF-16");
 
     QTest::newRow("contentLength-test00")
         << get << QStringLiteral("/response/test/contentLength?data=Hello") << headers
-        << QByteArray() << QByteArrayLiteral("200 OK")
-        << Headers{{QStringLiteral("Content-Length"), QStringLiteral("1")}}
+        << QByteArray() << 200 << Headers{{QStringLiteral("Content-Length"), QStringLiteral("1")}}
         << QByteArrayLiteral("5");
 
     query.clear();
     query.addQueryItem(QStringLiteral("data"), QStringLiteral("appplication/json"));
     QTest::newRow("contentType-test00")
         << get << QStringLiteral("/response/test/contentType?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("17")},
                    {QStringLiteral("Content-Type"), QStringLiteral("appplication/json")}}
         << QByteArrayLiteral("appplication/json");
@@ -321,7 +316,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("data"), QStringLiteral("TEXT/PLAIN; charset=UTF-8"));
     QTest::newRow("contentType-test01")
         << get << QStringLiteral("/response/test/contentType?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("10")},
                    {QStringLiteral("Content-Type"), QStringLiteral("TEXT/PLAIN; charset=UTF-8")}}
         << QByteArrayLiteral("text/plain");
@@ -331,7 +326,7 @@ void TestResponse::testController_data()
     QTest::newRow("contentTypeCharset-test00")
         << get
         << QStringLiteral("/response/test/contentTypeCharset?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("0")},
                    {QStringLiteral("Content-Type"), QStringLiteral("appplication/json")}}
         << QByteArrayLiteral("");
@@ -341,22 +336,20 @@ void TestResponse::testController_data()
     QTest::newRow("contentTypeCharset-test01")
         << get
         << QStringLiteral("/response/test/contentTypeCharset?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("5")},
                    {QStringLiteral("Content-Type"), QStringLiteral("TEXT/PLAIN; charset=utf-8")}}
         << QByteArrayLiteral("UTF-8");
 
     query.clear();
     QTest::newRow("largeBody-test00")
-        << get << QStringLiteral("/response/test/largeBody") << headers << QByteArray()
-        << QByteArrayLiteral("200 OK")
+        << get << QStringLiteral("/response/test/largeBody") << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("4194304")}}
         << QByteArrayLiteral("abcd").repeated(1024 * 1024);
 
     query.clear();
     QTest::newRow("largeSetBody-test01")
-        << get << QStringLiteral("/response/test/largeSetBody") << headers << QByteArray()
-        << QByteArrayLiteral("200 OK")
+        << get << QStringLiteral("/response/test/largeSetBody") << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("4194304")}}
         << QByteArrayLiteral("abcd").repeated(1024 * 1024);
 
@@ -365,7 +358,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("foo"), QStringLiteral("bar"));
     QTest::newRow("setJsonBody-test00")
         << get << QStringLiteral("/response/test/setJsonBody?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("14")},
                    {QStringLiteral("Content-Type"), QStringLiteral("application/json")}}
         << QByteArrayLiteral("{\"foo\":\"barz\"}");
@@ -375,7 +368,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("x"), QStringLiteral("y"));
     QTest::newRow("setJsonBody-test01")
         << get << QStringLiteral("/response/test/setJsonBody?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("21")},
                    {QStringLiteral("Content-Type"), QStringLiteral("application/json")}}
         << QByteArrayLiteral("{\"foo\":\"bar\",\"x\":\"y\"}");
@@ -384,7 +377,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("url"), QStringLiteral("http://cutelyst.org/foo#something"));
     QTest::newRow("redirect-test00")
         << get << QStringLiteral("/response/test/redirect?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("302 Found")
+        << headers << QByteArray() << 302
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("217")},
                    {QStringLiteral("Content-Type"), QStringLiteral("text/html; charset=utf-8")},
                    {QStringLiteral("Location"),
@@ -398,7 +391,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("url"), QStringLiteral("http://cutelyst.org/foo#something"));
     QTest::newRow("redirecturl-test0")
         << get << QStringLiteral("/response/test/redirectUrl?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("302 Found")
+        << headers << QByteArray() << 302
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("217")},
                    {QStringLiteral("Content-Type"), QStringLiteral("text/html; charset=utf-8")},
                    {QStringLiteral("Location"),
@@ -413,7 +406,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("value"), QStringLiteral("bar"));
     QTest::newRow("setCookie-test00")
         << get << QStringLiteral("/response/test/setCookie?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("7")},
                    {QStringLiteral("Set-Cookie"), QStringLiteral("foo=bar")}}
         << QByteArrayLiteral("foo=bar");
@@ -424,7 +417,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("domain"), QStringLiteral("cutelyst.org"));
     QTest::newRow("setCookie-test01")
         << get << QStringLiteral("/response/test/setCookie?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("28")},
                    {QStringLiteral("Set-Cookie"), QStringLiteral("foo=bar; domain=cutelyst.org")}}
         << QByteArrayLiteral("foo=bar; domain=cutelyst.org");
@@ -436,7 +429,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("expiration_date"), QStringLiteral("2016-06-21T10:08:15Z"));
     QTest::newRow("setCookie-test02")
         << get << QStringLiteral("/response/test/setCookie?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("67")},
                    {QStringLiteral("Set-Cookie"),
                     QStringLiteral(
@@ -451,7 +444,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("http_only"), QStringLiteral("true"));
     QTest::newRow("setCookie-test03")
         << get << QStringLiteral("/response/test/setCookie?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("77")},
                    {QStringLiteral("Set-Cookie"),
                     QStringLiteral("foo=bar; HttpOnly; expires=Tue, 21-Jun-2016 10:08:15 GMT; "
@@ -468,7 +461,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("path"), QStringLiteral("/path"));
     QTest::newRow("setCookie-test04")
         << get << QStringLiteral("/response/test/setCookie?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("89")},
                    {QStringLiteral("Set-Cookie"),
                     QStringLiteral("foo=bar; HttpOnly; expires=Tue, 21-Jun-2016 10:08:15 GMT; "
@@ -486,7 +479,7 @@ void TestResponse::testController_data()
     query.addQueryItem(QStringLiteral("secure"), QStringLiteral("true"));
     QTest::newRow("setCookie-test05")
         << get << QStringLiteral("/response/test/setCookie?") + query.toString(QUrl::FullyEncoded)
-        << headers << QByteArray() << QByteArrayLiteral("200 OK")
+        << headers << QByteArray() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("97")},
                    {QStringLiteral("Set-Cookie"),
                     QStringLiteral("foo=bar; secure; HttpOnly; expires=Tue, 21-Jun-2016 10:08:15 "
@@ -505,7 +498,7 @@ void TestResponse::testController_data()
     headers.setContentType(QStringLiteral("application/x-www-form-urlencoded"));
     QTest::newRow("setCookies-test00")
         << post << QStringLiteral("/response/test/setCookies?") + query.toString(QUrl::FullyEncoded)
-        << headers << query.toString(QUrl::FullyEncoded).toLatin1() << QByteArrayLiteral("200 OK")
+        << headers << query.toString(QUrl::FullyEncoded).toLatin1() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("97")},
                    {QStringLiteral("Set-Cookie"),
                     QStringLiteral("bar=baz; secure; HttpOnly; expires=Tue, 21-Jun-2016 10:08:15 "
@@ -531,7 +524,7 @@ void TestResponse::testController_data()
     headers.setContentType(QStringLiteral("application/x-www-form-urlencoded"));
     QTest::newRow("setCookies-test01")
         << post << QStringLiteral("/response/test/setCookies?") + query.toString(QUrl::FullyEncoded)
-        << headers << cookies.toString(QUrl::FullyEncoded).toLatin1() << QByteArrayLiteral("200 OK")
+        << headers << cookies.toString(QUrl::FullyEncoded).toLatin1() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("97")},
                    {QStringLiteral("Set-Cookie"),
                     QStringLiteral("bar=baz; secure; HttpOnly; expires=Tue, 21-Jun-2016 10:08:15 "
@@ -561,7 +554,7 @@ void TestResponse::testController_data()
     QTest::newRow("removeCookies-test00")
         << post
         << QStringLiteral("/response/test/removeCookies/foo?") + query.toString(QUrl::FullyEncoded)
-        << headers << cookies.toString(QUrl::FullyEncoded).toLatin1() << QByteArrayLiteral("200 OK")
+        << headers << cookies.toString(QUrl::FullyEncoded).toLatin1() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("97")},
                    {QStringLiteral("Set-Cookie"),
                     QStringLiteral("bar=baz; secure; HttpOnly; expires=Tue, 21-Jun-2016 10:08:15 "
@@ -588,7 +581,7 @@ void TestResponse::testController_data()
     QTest::newRow("removeCookies-test01")
         << post
         << QStringLiteral("/response/test/removeCookies/foo?") + query.toString(QUrl::FullyEncoded)
-        << headers << cookies.toString(QUrl::FullyEncoded).toLatin1() << QByteArrayLiteral("200 OK")
+        << headers << cookies.toString(QUrl::FullyEncoded).toLatin1() << 200
         << Headers{{QStringLiteral("Content-Length"), QStringLiteral("97")}}
         << QByteArrayLiteral("foo=baz; secure; HttpOnly; expires=Tue, 21-Jun-2016 10:08:15 GMT; "
                              "domain=cutelyst.org; path=/path");