summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp')
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp328
1 files changed, 38 insertions, 290 deletions
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
index 6450d2a5d2..915926e488 100644
--- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -66,12 +66,6 @@
#include <QtNetwork/private/qsslconfiguration_p.h>
#endif
#endif
-#ifndef QT_NO_BEARERMANAGEMENT
-#include <QtNetwork/qnetworkconfigmanager.h>
-#include <QtNetwork/qnetworkconfiguration.h>
-#include <QtNetwork/qnetworksession.h>
-#include <QtNetwork/private/qnetworksession_p.h>
-#endif
#ifdef QT_BUILD_INTERNAL
#include <QtNetwork/private/qnetworkreplyimpl_p.h> // implicitly included by qnetworkaccessmanager_p.h currently, but don't rely on that being true forever
#include <QtNetwork/private/qnetworkaccessmanager_p.h>
@@ -161,11 +155,6 @@ class tst_QNetworkReply: public QObject
QList<QSslError> storedExpectedSslErrors;
static const QString certsFilePath;
#endif
-#ifndef QT_NO_BEARERMANAGEMENT
- QNetworkConfigurationManager *netConfMan;
- QNetworkConfiguration networkConfiguration;
- QScopedPointer<QNetworkSession> networkSession;
-#endif
using QObject::connect;
static bool connect(const QNetworkReplyPtr &ptr, const char *signal, const QObject *receiver, const char *slot, Qt::ConnectionType ct = Qt::AutoConnection)
@@ -219,9 +208,11 @@ private Q_SLOTS:
void getFromFile();
void getFromFileSpecial_data();
void getFromFileSpecial();
+#if QT_CONFIG(ftp)
void getFromFtp_data();
void getFromFtp();
void getFromFtpAfterError(); // QTBUG-40797
+#endif
void getFromHttp_data();
void getFromHttp();
void getErrors_data();
@@ -232,9 +223,11 @@ private Q_SLOTS:
#endif // !QT_NO_NETWORKPROXY
void putToFile_data();
void putToFile();
+#if QT_CONFIG(ftp)
void putToFtp_data();
void putToFtp();
void putToFtpWithInvalidCredentials(); // QTBUG-40622
+#endif
void putToHttp_data();
void putToHttp();
void putToHttpSynchronous_data();
@@ -275,9 +268,11 @@ private Q_SLOTS:
void ioGetFromFileSpecial();
void ioGetFromFile_data();
void ioGetFromFile();
+#if QT_CONFIG(ftp)
void ioGetFromFtp_data();
void ioGetFromFtp();
void ioGetFromFtpWithReuse();
+#endif
void ioGetFromHttp();
void ioGetFromBuiltinHttp_data();
@@ -319,8 +314,10 @@ private Q_SLOTS:
void ioPutToFileFromLocalSocket();
void ioPutToFileFromProcess_data();
void ioPutToFileFromProcess();
+#if QT_CONFIG(ftp)
void ioPutToFtpFromFile_data();
void ioPutToFtpFromFile();
+#endif
void ioPutToHttpFromFile_data();
void ioPutToHttpFromFile();
void ioPostToHttpFromFile_data();
@@ -466,20 +463,13 @@ private Q_SLOTS:
void closeDuringDownload_data();
void closeDuringDownload();
+#if QT_CONFIG(ftp)
void ftpAuthentication_data();
void ftpAuthentication();
+#endif
void emitErrorForAllReplies(); // QTBUG-36890
-#ifdef QT_BUILD_INTERNAL
- void backgroundRequest_data();
- void backgroundRequest();
- void backgroundRequestInterruption_data();
- void backgroundRequestInterruption();
- void backgroundRequestConnectInBackground_data();
- void backgroundRequestConnectInBackground();
-#endif
-
void putWithRateLimiting();
void ioHttpSingleRedirect();
@@ -1566,15 +1556,6 @@ void tst_QNetworkReply::initTestCase()
#ifndef QT_NO_SSL
QSslConfiguration::defaultConfiguration().caCertificates(); //preload certificates
#endif
-#ifndef QT_NO_BEARERMANAGEMENT
- netConfMan = new QNetworkConfigurationManager(this);
- networkConfiguration = netConfMan->defaultConfiguration();
- networkSession.reset(new QNetworkSession(networkConfiguration));
- if (!networkSession->isOpen()) {
- networkSession->open();
- QVERIFY(networkSession->waitForOpened(30000));
- }
-#endif
echoProcessDir = QFINDTESTDATA("echo");
QVERIFY2(!echoProcessDir.isEmpty(), qPrintable(
@@ -1589,11 +1570,6 @@ void tst_QNetworkReply::cleanupTestCase()
if (!wronlyFileName.isNull())
QFile::remove(wronlyFileName);
#endif
-#ifndef QT_NO_BEARERMANAGEMENT
- if (networkSession && networkSession->isOpen()) {
- networkSession->close();
- }
-#endif
}
void tst_QNetworkReply::cleanupTestData()
@@ -1852,6 +1828,7 @@ void tst_QNetworkReply::getFromFileSpecial()
QCOMPARE(reply->readAll(), resource.readAll());
}
+#if QT_CONFIG(ftp)
void tst_QNetworkReply::getFromFtp_data()
{
QTest::addColumn<QString>("referenceName");
@@ -1904,6 +1881,7 @@ void tst_QNetworkReply::getFromFtpAfterError()
QCOMPARE(validReply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), reference.size());
QCOMPARE(validReply->readAll(), reference.readAll());
}
+#endif
void tst_QNetworkReply::getFromHttp_data()
{
@@ -1914,10 +1892,6 @@ void tst_QNetworkReply::getFromHttp_data()
<< testDataDir + "/rfc3252.txt"
<< "http://" + QtNetworkSettings::httpServerName() + "/qtest/rfc3252.txt";
- QTest::newRow("success-external")
- << testDataDir + "/rfc3252.txt"
- << "http://www.ietf.org/rfc/rfc3252.txt";
-
QTest::newRow("bigfile-internal")
<< testDataDir + "/bigfile"
<< "http://" + QtNetworkSettings::httpServerName() + "/qtest/bigfile";
@@ -2077,6 +2051,7 @@ void tst_QNetworkReply::getErrors_data()
QTest::newRow("file-permissions") << "file:" + filePermissionFileName
<< int(QNetworkReply::ContentAccessDenied) << 0 << true;
+#if QT_CONFIG(ftp)
// ftp: errors
QTest::newRow("ftp-host") << "ftp://invalid.test.qt-project.org/foo.txt"
<< int(QNetworkReply::HostNotFoundError) << 0 << true;
@@ -2090,6 +2065,7 @@ void tst_QNetworkReply::getErrors_data()
<< int(QNetworkReply::ContentAccessDenied) << 0 << true;
QTest::newRow("ftp-exist") << "ftp://" + QtNetworkSettings::ftpServerName() + "/pub/this-file-doesnt-exist.txt"
<< int(QNetworkReply::ContentNotFoundError) << 0 << true;
+#endif
// http: errors
QTest::newRow("http-host") << "http://invalid.test.qt-project.org/"
@@ -2143,9 +2119,11 @@ void tst_QNetworkReply::getErrors()
QVERIFY2(waitResult != Timeout, msgGetErrors(waitResult, reply));
QFETCH(int, error);
+#if QT_CONFIG(ftp)
QEXPECT_FAIL("ftp-is-dir", "QFtp cannot provide enough detail", Abort);
// the line below is not necessary
QEXPECT_FAIL("ftp-dir-not-readable", "QFtp cannot provide enough detail", Abort);
+#endif
QCOMPARE(reply->error(), QNetworkReply::NetworkError(error));
QTEST(reply->readAll().isEmpty(), "dataIsEmpty");
@@ -2215,6 +2193,7 @@ void tst_QNetworkReply::putToFile()
QCOMPARE(contents, data);
}
+#if QT_CONFIG(ftp)
void tst_QNetworkReply::putToFtp_data()
{
putToFile_data();
@@ -2287,6 +2266,7 @@ void tst_QNetworkReply::putToFtpWithInvalidCredentials()
r->close();
}
}
+#endif
void tst_QNetworkReply::putToHttp_data()
{
@@ -3287,6 +3267,7 @@ void tst_QNetworkReply::ioGetFromFile()
QCOMPARE(reader.data, data);
}
+#if QT_CONFIG(ftp)
void tst_QNetworkReply::ioGetFromFtp_data()
{
QTest::addColumn<QString>("fileName");
@@ -3353,6 +3334,7 @@ void tst_QNetworkReply::ioGetFromFtpWithReuse()
QCOMPARE(reader1.data, referenceData);
QCOMPARE(reader2.data, referenceData);
}
+#endif
void tst_QNetworkReply::ioGetFromHttp()
{
@@ -4209,6 +4191,7 @@ void tst_QNetworkReply::ioGetWithManyProxies_data()
<< "http://" + QtNetworkSettings::httpServerName() + "/qtest/rfc3252.txt"
<< QNetworkReply::NoError;
+#if QT_CONFIG(ftp)
// FTP request with FTP caching proxy
proxyList.clear();
proxyList << QNetworkProxy(QNetworkProxy::FtpCachingProxy, QtNetworkSettings::ftpProxyServerName(), 2121);
@@ -4227,6 +4210,7 @@ void tst_QNetworkReply::ioGetWithManyProxies_data()
<< proxyList << proxyList.at(0)
<< "ftp://" + QtNetworkSettings::ftpServerName() + "/qtest/rfc3252.txt"
<< QNetworkReply::NoError;
+#endif
#ifndef QT_NO_SSL
// HTTPS with HTTP transparent proxy
@@ -4256,6 +4240,7 @@ void tst_QNetworkReply::ioGetWithManyProxies_data()
<< "http://" + QtNetworkSettings::httpServerName() + "/qtest/rfc3252.txt"
<< QNetworkReply::ProxyNotFoundError;
+#if QT_CONFIG(ftp)
// FTP request with HTTP caching proxy
proxyList.clear();
proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::httpProxyServerName(), 3129);
@@ -4272,6 +4257,7 @@ void tst_QNetworkReply::ioGetWithManyProxies_data()
<< proxyList << QNetworkProxy()
<< "ftp://" + QtNetworkSettings::ftpServerName() + "/qtest/rfc3252.txt"
<< QNetworkReply::ProxyNotFoundError;
+#endif
#ifndef QT_NO_SSL
// HTTPS with HTTP caching proxy
@@ -4339,6 +4325,7 @@ void tst_QNetworkReply::ioGetWithManyProxies_data()
<< "http://" + QtNetworkSettings::httpServerName() + "/qtest/rfc3252.txt"
<< QNetworkReply::NoError;
+#if QT_CONFIG(ftp)
// FTP request with HTTP Caching + FTP
proxyList.clear();
proxyList << QNetworkProxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::httpProxyServerName(), 3129)
@@ -4347,6 +4334,7 @@ void tst_QNetworkReply::ioGetWithManyProxies_data()
<< proxyList << proxyList.at(1) // second proxy should be used
<< "ftp://" + QtNetworkSettings::ftpServerName() + "/qtest/rfc3252.txt"
<< QNetworkReply::NoError;
+#endif
#ifndef QT_NO_SSL
// HTTPS request with HTTP Caching + HTTP transparent
@@ -4407,7 +4395,9 @@ void tst_QNetworkReply::ioGetWithManyProxies()
#endif
QFETCH(QNetworkReply::NetworkError, expectedError);
+#if QT_CONFIG(ftp)
QEXPECT_FAIL("ftp-on-socks", "QFtp is too limited and won't accept non-FTP proxies", Abort);
+#endif
QCOMPARE(reply->error(), expectedError);
// Verify that the factory was called properly
@@ -4423,8 +4413,10 @@ void tst_QNetworkReply::ioGetWithManyProxies()
if (proxyUsed.type() == QNetworkProxy::NoProxy) {
QCOMPARE(authspy.count(), 0);
} else {
+#if QT_CONFIG(ftp)
if (QByteArray(QTest::currentDataTag()).startsWith("ftp-"))
return; // No authentication with current FTP or with FTP proxies
+#endif
QCOMPARE(authspy.count(), 1);
QCOMPARE(qvariant_cast<QNetworkProxy>(authspy.at(0).at(0)), proxyUsed);
}
@@ -4605,6 +4597,7 @@ void tst_QNetworkReply::ioPutToFileFromProcess()
#endif // QT_CONFIG(process)
}
+#if QT_CONFIG(ftp)
void tst_QNetworkReply::ioPutToFtpFromFile_data()
{
ioPutToFileFromFile_data();
@@ -4653,6 +4646,7 @@ void tst_QNetworkReply::ioPutToFtpFromFile()
QTestEventLoop::instance().enterLoop(10);
QObject::disconnect(r, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
}
+#endif
void tst_QNetworkReply::ioPutToHttpFromFile_data()
{
@@ -5903,11 +5897,6 @@ void tst_QNetworkReply::httpProxyCommands()
QNetworkRequest request(url);
request.setRawHeader("User-Agent", "QNetworkReplyAutoTest/1.0");
QNetworkReplyPtr reply(manager.get(request));
- //clearing the proxy here causes the test to fail.
- //the proxy isn't used until after the bearer has been started
- //which is correct in general, because system proxy isn't known until that time.
- //removing this line is safe, as the proxy is also reset by the cleanup() function
- //manager.setProxy(QNetworkProxy());
// wait for the finished signal
QVERIFY(waitForFinish(reply) != Timeout);
@@ -7000,38 +6989,7 @@ void tst_QNetworkReply::getFromUnreachableIp()
// NOERROR; so socket engine starts a timer (30 s.) and waits for a timeout/
// error/success. Unfortunately, the test itself is waiting only for 5 s.
// So we have to adjust the connection timeout or skip the test completely
- // if the 'bearermanagement' feature is not available.
-#if QT_CONFIG(bearermanagement)
- class ConfigurationGuard
- {
- public:
- explicit ConfigurationGuard(QNetworkAccessManager *m)
- : manager(m)
- {
- Q_ASSERT(m);
- auto conf = manager->configuration();
- previousTimeout = conf.connectTimeout();
- conf.setConnectTimeout(1500);
- manager->setConfiguration(conf);
- }
- ~ConfigurationGuard()
- {
- Q_ASSERT(manager);
- auto conf = manager->configuration();
- conf.setConnectTimeout(previousTimeout);
- manager->setConfiguration(conf);
- }
- private:
- QNetworkAccessManager *manager = nullptr;
- int previousTimeout = 0;
-
- Q_DISABLE_COPY(ConfigurationGuard)
- };
-
- const ConfigurationGuard restorer(&manager);
-#else // bearermanagement
QSKIP("This test is non-deterministic on Windows x86");
-#endif // !bearermanagement
#endif // Q_OS_WIN
QNetworkRequest request(QUrl("http://255.255.255.255/42/23/narf/narf/narf"));
@@ -8028,7 +7986,9 @@ void tst_QNetworkReply::closeDuringDownload_data()
{
QTest::addColumn<QUrl>("url");
QTest::newRow("http") << QUrl("http://" + QtNetworkSettings::httpServerName() + "/bigfile");
+#if QT_CONFIG(ftp)
QTest::newRow("ftp") << QUrl("ftp://" + QtNetworkSettings::ftpServerName() + "/qtest/bigfile");
+#endif
}
void tst_QNetworkReply::closeDuringDownload()
@@ -8046,6 +8006,7 @@ void tst_QNetworkReply::closeDuringDownload()
QVERIFY(destroySpy.wait());
}
+#if QT_CONFIG(ftp)
void tst_QNetworkReply::ftpAuthentication_data()
{
QTest::addColumn<QString>("referenceName");
@@ -8072,6 +8033,7 @@ void tst_QNetworkReply::ftpAuthentication()
QCOMPARE(reply->url(), request.url());
QCOMPARE(reply->error(), QNetworkReply::NetworkError(error));
}
+#endif
void tst_QNetworkReply::emitErrorForAllReplies() // QTBUG-36890
{
@@ -8104,222 +8066,6 @@ void tst_QNetworkReply::emitErrorForAllReplies() // QTBUG-36890
}
}
-#ifdef QT_BUILD_INTERNAL
-void tst_QNetworkReply::backgroundRequest_data()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<bool>("background");
- QTest::addColumn<int>("policy");
- QTest::addColumn<QNetworkReply::NetworkError>("error");
-
- QUrl httpurl("http://" + QtNetworkSettings::httpServerName());
- QUrl httpsurl("https://" + QtNetworkSettings::httpServerName());
- QUrl ftpurl("ftp://" + QtNetworkSettings::ftpServerName() + "/qtest/rfc3252.txt");
-
- QTest::newRow("http, fg, normal") << httpurl << false << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError;
- QTest::newRow("http, bg, normal") << httpurl << true << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError;
- QTest::newRow("http, fg, nobg") << httpurl << false << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::NoError;
- QTest::newRow("http, bg, nobg") << httpurl << true << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::BackgroundRequestNotAllowedError;
-
-#ifndef QT_NO_SSL
- QTest::newRow("https, fg, normal") << httpsurl << false << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError;
- QTest::newRow("https, bg, normal") << httpsurl << true << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError;
- QTest::newRow("https, fg, nobg") << httpsurl << false << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::NoError;
- QTest::newRow("https, bg, nobg") << httpsurl << true << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::BackgroundRequestNotAllowedError;
-#endif
-
- QTest::newRow("ftp, fg, normal") << ftpurl << false << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError;
- QTest::newRow("ftp, bg, normal") << ftpurl << true << (int)QNetworkSession::NoPolicy << QNetworkReply::NoError;
- QTest::newRow("ftp, fg, nobg") << ftpurl << false << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::NoError;
- QTest::newRow("ftp, bg, nobg") << ftpurl << true << (int)QNetworkSession::NoBackgroundTrafficPolicy << QNetworkReply::BackgroundRequestNotAllowedError;
-#endif // !QT_NO_BEARERMANAGEMENT
-}
-#endif
-
-//test purpose: background requests can't be started when not allowed
-#ifdef QT_BUILD_INTERNAL
-void tst_QNetworkReply::backgroundRequest()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- QFETCH(QUrl, url);
- QFETCH(bool, background);
- QFETCH(int, policy);
- QFETCH(QNetworkReply::NetworkError, error);
-
- QNetworkRequest request(url);
-
- if (background)
- request.setAttribute(QNetworkRequest::BackgroundRequestAttribute, QVariant::fromValue(true));
-
- //this preconstructs the session so we can change policies in advance
- manager.setConfiguration(networkConfiguration);
-
-#ifndef QT_NO_SSL
- connect(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
- SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
-#endif
-
- const QWeakPointer<const QNetworkSession> sessionWeakPtr = QNetworkAccessManagerPrivate::getNetworkSession(&manager);
- QVERIFY(!sessionWeakPtr.isNull());
- auto session = const_cast<QNetworkSession *>(sessionWeakPtr.toStrongRef().data());
- QNetworkSession::UsagePolicies original = session->usagePolicies();
- QNetworkSessionPrivate::setUsagePolicies(*session, QNetworkSession::UsagePolicies(policy));
-
- QNetworkReplyPtr reply(manager.get(request));
-
- QVERIFY(waitForFinish(reply) != Timeout);
- if (session)
- QNetworkSessionPrivate::setUsagePolicies(*session, original);
-
- QVERIFY(reply->isFinished());
- QCOMPARE(reply->error(), error);
-#endif
-}
-#endif
-
-#ifdef QT_BUILD_INTERNAL
-void tst_QNetworkReply::backgroundRequestInterruption_data()
-{
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<bool>("background");
- QTest::addColumn<QNetworkReply::NetworkError>("error");
-
- QUrl httpurl("http://" + QtNetworkSettings::httpServerName() + "/qtest/mediumfile");
- QUrl httpsurl("https://" + QtNetworkSettings::httpServerName() + "/qtest/mediumfile");
- QUrl ftpurl("ftp://" + QtNetworkSettings::ftpServerName() + "/qtest/bigfile");
-
- QTest::newRow("http, fg, nobg") << httpurl << false << QNetworkReply::NoError;
- QTest::newRow("http, bg, nobg") << httpurl << true << QNetworkReply::BackgroundRequestNotAllowedError;
-
-#ifndef QT_NO_SSL
- QTest::newRow("https, fg, nobg") << httpsurl << false << QNetworkReply::NoError;
- QTest::newRow("https, bg, nobg") << httpsurl << true << QNetworkReply::BackgroundRequestNotAllowedError;
-#endif
-
- QTest::newRow("ftp, fg, nobg") << ftpurl << false << QNetworkReply::NoError;
- QTest::newRow("ftp, bg, nobg") << ftpurl << true << QNetworkReply::BackgroundRequestNotAllowedError;
-
-}
-#endif
-
-//test purpose: background requests in progress are aborted when policy changes to disallow them
-#ifdef QT_BUILD_INTERNAL
-void tst_QNetworkReply::backgroundRequestInterruption()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- if (QNetworkStatusMonitor::isEnabled() && QByteArray(QTest::currentDataTag()).startsWith("http"))
- QSKIP("This test (currently) doesn't make any sense when QNetworkStatusMonitor is enabled");
-
- QFETCH(QUrl, url);
- QFETCH(bool, background);
- QFETCH(QNetworkReply::NetworkError, error);
-
- QNetworkRequest request(url);
-
- if (background)
- request.setAttribute(QNetworkRequest::BackgroundRequestAttribute, QVariant::fromValue(true));
-
- //this preconstructs the session so we can change policies in advance
- manager.setConfiguration(networkConfiguration);
-
-#ifndef QT_NO_SSL
- connect(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>)),
- SLOT(sslErrors(QNetworkReply*,QList<QSslError>)));
-#endif
-
- const QWeakPointer<const QNetworkSession> sessionWeakPtr = QNetworkAccessManagerPrivate::getNetworkSession(&manager);
- QVERIFY(!sessionWeakPtr.isNull());
- auto session = const_cast<QNetworkSession *>(sessionWeakPtr.toStrongRef().data());
- QNetworkSession::UsagePolicies original = session->usagePolicies();
- QNetworkSessionPrivate::setUsagePolicies(*session, QNetworkSession::NoPolicy);
-
- request.setAttribute(QNetworkRequest::MaximumDownloadBufferSizeAttribute, 8192);
- QNetworkReplyPtr reply(manager.get(request));
- reply->setReadBufferSize(1024);
-
- QSignalSpy spy(reply.data(), SIGNAL(readyRead()));
- QTRY_VERIFY(spy.count() > 0);
-
- QNetworkSessionPrivate::setUsagePolicies(*session, QNetworkSession::NoBackgroundTrafficPolicy);
-
- // After we have changed the policy we can download at full speed.
- reply->setReadBufferSize(0);
-
- QVERIFY(waitForFinish(reply) != Timeout);
- if (session)
- QNetworkSessionPrivate::setUsagePolicies(*session, original);
-
- QVERIFY(reply->isFinished());
- QCOMPARE(reply->error(), error);
-#endif
-}
-#endif
-
-#ifdef QT_BUILD_INTERNAL
-void tst_QNetworkReply::backgroundRequestConnectInBackground_data()
-{
- QTest::addColumn<QUrl>("url");
- QTest::addColumn<bool>("background");
-
- QUrl httpurl("http://" + QtNetworkSettings::httpServerName());
- QUrl ftpurl("ftp://" + QtNetworkSettings::ftpServerName() + "/qtest/rfc3252.txt");
-
- QTest::newRow("http, fg") << httpurl << false;
- QTest::newRow("http, bg") << httpurl << true;
-
- QTest::newRow("ftp, fg") << ftpurl << false;
- QTest::newRow("ftp, bg") << ftpurl << true;
-}
-#endif
-
-//test purpose: check that backgroundness is propagated to the network session
-#ifdef QT_BUILD_INTERNAL
-void tst_QNetworkReply::backgroundRequestConnectInBackground()
-{
-#ifndef QT_NO_BEARERMANAGEMENT
- QFETCH(QUrl, url);
- QFETCH(bool, background);
-
- QNetworkRequest request(url);
-
- if (background)
- request.setAttribute(QNetworkRequest::BackgroundRequestAttribute, QVariant::fromValue(true));
-
- QWeakPointer<const QNetworkSession> session = QNetworkAccessManagerPrivate::getNetworkSession(&manager);
- //force QNAM to reopen the session.
- if (session && session.toStrongRef().data()->isOpen()) {
- const_cast<QNetworkSession *>(session.toStrongRef().data())->close();
- QCoreApplication::processEvents(); //let signals propagate inside QNAM
- }
-
- //this preconstructs the session so we can change policies in advance
- manager.setConfiguration(networkConfiguration);
-
- session = QNetworkAccessManagerPrivate::getNetworkSession(&manager);
- QVERIFY(session);
- QNetworkSession::UsagePolicies original = session.toStrongRef().data()->usagePolicies();
- QNetworkSessionPrivate::setUsagePolicies(*const_cast<QNetworkSession *>(session.toStrongRef().data()), QNetworkSession::NoPolicy);
-
- QNetworkReplyPtr reply(manager.get(request));
-
- QVERIFY(waitForFinish(reply) != Timeout);
- session = QNetworkAccessManagerPrivate::getNetworkSession(&manager);
- if (session) {
- QVariant cib = session.toStrongRef().data()->sessionProperty(QStringLiteral("ConnectInBackground"));
- if (!cib.isValid())
- QSKIP("inconclusive - ConnectInBackground session property not supported by the bearer plugin");
- QCOMPARE(cib.toBool(), background);
- QNetworkSessionPrivate::setUsagePolicies(*const_cast<QNetworkSession *>(session.toStrongRef().data()), original);
- } else {
- QSKIP("inconclusive - network session has been destroyed");
- }
-
- QVERIFY(reply->isFinished());
-#endif
-}
-#endif
-
class RateLimitedUploadDevice : public QIODevice
{
Q_OBJECT
@@ -9195,7 +8941,9 @@ void tst_QNetworkReply::autoDeleteRepliesAttribute_data()
QTest::newRow("http") << QUrl("http://QInvalidDomain.qt/test");
QTest::newRow("https") << QUrl("https://QInvalidDomain.qt/test");
+#if QT_CONFIG(ftp)
QTest::newRow("ftp") << QUrl("ftp://QInvalidDomain.qt/test");
+#endif
QTest::newRow("file") << QUrl("file:///thisfolderdoesn'texist/probably.txt");
#ifdef Q_OS_WIN
// Only supported on windows.