diff options
author | Eric Lemanissier <eric.lemanissier@gmail.com> | 2014-09-01 19:57:51 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2014-09-09 22:26:27 +0200 |
commit | 3e804976687ce3dbe424ae5dfa47bba0a6280ce1 (patch) | |
tree | 7b0d7948d071e709ed5f820f75a9d431f80ca55c /tests/auto | |
parent | 529a31c967a202458abd126d378a2f690c2ec256 (diff) |
Preventing caching of null authenticator
In some cases, e.g. when bad credentials are provided in an ftp URI,
QNetworkAccessAuthenticationManager::cacheCredentials is called with a
null authenticator. This authenticator should not be cached, because
it is useless, and leads to inconsistencies in the use of the cache
Task-number: QTBUG-40622
Change-Id: If2a0a422b915f268648f5eef1d68601446123371
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp index 9988db74c7..70c118b681 100644 --- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp @@ -219,6 +219,7 @@ private Q_SLOTS: void putToFile(); void putToFtp_data(); void putToFtp(); + void putToFtpWithInvalidCredentials(); // QTBUG-40622 void putToHttp_data(); void putToHttp(); void putToHttpSynchronous_data(); @@ -2075,6 +2076,28 @@ void tst_QNetworkReply::putToFtp() QObject::disconnect(r, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop())); } +void tst_QNetworkReply::putToFtpWithInvalidCredentials() +{ + QUrl url("ftp://" + QtNetworkSettings::serverName()); + url.setPath(QString("/qtest/upload/qnetworkaccess-putToFtp-%1-%2") + .arg(QTest::currentDataTag()) + .arg(uniqueExtension)); + url.setUserName("invalidUser"); + url.setPassword("InvalidPassword"); + QNetworkRequest req(url); + QNetworkReplyPtr r; + + for (int i = 0; i < 2; i++) + { + runSimpleRequest(QNetworkAccessManager::PutOperation, req, r, QByteArray()); + + QVERIFY(r->isFinished()); + QCOMPARE(r->url(), url); + QCOMPARE(r->error(), QNetworkReply::AuthenticationRequiredError); + r->close(); + } +} + void tst_QNetworkReply::putToHttp_data() { putToFile_data(); |