diff options
Diffstat (limited to 'tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp')
-rw-r--r-- | tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index d22850ba4e..f6e3962454 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -546,7 +546,9 @@ static void setupSslServer(QSslSocket* serverSocket) } #endif -// Does not work for PUT! Limited support for POST. +// NOTE: MiniHttpServer has a very limited support of PUT/POST requests! Make +// sure you understand the server's code before PUTting/POSTing data (and +// probably you'll have to update the logic). class MiniHttpServer: public QTcpServer { Q_OBJECT @@ -589,6 +591,12 @@ public: dataToTransmit = data; } + void clearHeaderParserState() + { + contentLength = 0; + receivedData.clear(); + } + protected: void incomingConnection(qintptr socketDescriptor) { @@ -670,15 +678,17 @@ private slots: } public slots: + void readyReadSlot() { Q_ASSERT(!client.isNull()); + receivedData += client->readAll(); const int doubleEndlPos = receivedData.indexOf("\r\n\r\n"); if (doubleEndlPos != -1) { const int endOfHeader = doubleEndlPos + 4; - hasContent = receivedData.startsWith("POST"); + hasContent = receivedData.startsWith("POST") || receivedData.startsWith("PUT"); if (hasContent && contentLength == 0) parseContentLength(); contentRead = receivedData.length() - endOfHeader; @@ -7282,6 +7292,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), false); + server.clearHeaderParserState(); server.setDataToTransmit(getReply); reply.reset(manager.get(request)); QVERIFY2(waitForFinish(reply) == Success, msgWaitForFinished(reply)); @@ -7291,6 +7302,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), true); + server.clearHeaderParserState(); server.setDataToTransmit(postReply); request.setRawHeader("Content-Type", "text/plain"); reply.reset(manager.post(request, postData)); @@ -7303,6 +7315,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QCOMPARE(reply->readAll(), QByteArray("POST")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), false); + server.clearHeaderParserState(); server.setDataToTransmit(getReply); reply.reset(manager.get(request)); @@ -7313,6 +7326,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), false); + server.clearHeaderParserState(); server.setDataToTransmit(getReply); reply.reset(manager.get(request)); @@ -7323,6 +7337,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), true); + server.clearHeaderParserState(); server.setDataToTransmit(putReply); reply.reset(manager.put(request, postData)); @@ -7332,6 +7347,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QCOMPARE(reply->error(), QNetworkReply::NoError); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), false); + server.clearHeaderParserState(); server.setDataToTransmit(getReply); reply.reset(manager.get(request)); @@ -7342,6 +7358,7 @@ void tst_QNetworkReply::qtbug28035browserDoesNotLoadQtProjectOrgCorrectly() { QCOMPARE(reply->readAll(), QByteArray("GET")); QCOMPARE(reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool(), false); + server.clearHeaderParserState(); server.setDataToTransmit(getReply); reply.reset(manager.get(request)); |