summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2022-03-31 18:48:42 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2022-04-27 18:31:01 +0200
commitd642c16fe745e156a93129fbb3750784b361ee39 (patch)
tree62665c96fad5d30cf51e970b5e0e06f36066f8a0 /tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
parent45b09215e51b84fd6d01e5d8a8cb8555c9099f0e (diff)
QNetworkReply: update decompress error message and handling
The error message was quite vague since it would then not require any additional translations. However, in hindsight this was a mistake since now developers just thought their downloads were being corrupted. Pick-to: 6.2 6.3 Fixes: QTBUG-101942 Change-Id: Ie9af42510ca027d15248e5bcf21e836e709898d9 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp')
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp35
1 files changed, 34 insertions, 1 deletions
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
index c8e02f27a9..9c177e6281 100644
--- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -532,6 +532,8 @@ private Q_SLOTS:
void cacheWithContentEncoding();
void downloadProgressWithContentEncoding_data();
void downloadProgressWithContentEncoding();
+ void contentEncodingError_data();
+ void contentEncodingError();
// NOTE: This test must be last!
void parentingRepliesToTheApp();
@@ -7105,7 +7107,7 @@ void tst_QNetworkReply::compressedHttpReplyBrokenGzip()
QCOMPARE(waitForFinish(reply), int(Failure));
- QCOMPARE(reply->error(), QNetworkReply::ProtocolFailure);
+ QCOMPARE(reply->error(), QNetworkReply::UnknownContentError);
}
// TODO add similar test for FTP
@@ -9808,6 +9810,37 @@ void tst_QNetworkReply::downloadProgressWithContentEncoding()
QCOMPARE(bytesReceived, expected.size());
}
+void tst_QNetworkReply::contentEncodingError_data()
+{
+ QTest::addColumn<QByteArray>("encoding");
+ QTest::addColumn<QString>("path");
+ QTest::addColumn<QNetworkReply::NetworkError>("expectedError");
+
+ QTest::addRow("archive-bomb") << QByteArray("gzip") << (":/4G.gz")
+ << QNetworkReply::UnknownContentError;
+}
+
+void tst_QNetworkReply::contentEncodingError()
+{
+ QFETCH(QString, path);
+ QFile compressedFile(path);
+ QVERIFY(compressedFile.open(QIODevice::ReadOnly));
+ QByteArray body = compressedFile.readAll();
+
+ QFETCH(QByteArray, encoding);
+ QString header("HTTP/1.0 200 OK\r\nContent-Encoding: %1\r\nContent-Length: %2\r\n\r\n");
+ header = header.arg(encoding, QString::number(body.size()));
+
+ MiniHttpServer server(header.toLatin1() + body);
+
+ QNetworkRequest request(
+ QUrl(QLatin1String("http://localhost:%1").arg(QString::number(server.serverPort()))));
+ QNetworkReplyPtr reply(manager.get(request));
+
+ QTRY_VERIFY2_WITH_TIMEOUT(reply->isFinished(), qPrintable(reply->errorString()), 15000);
+ QTEST(reply->error(), "expectedError");
+}
+
// NOTE: This test must be last testcase in tst_qnetworkreply!
void tst_QNetworkReply::parentingRepliesToTheApp()
{