summaryrefslogtreecommitdiffstats
path: root/tests/auto/network
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2014-09-05 11:14:14 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2014-09-05 12:20:25 +0200
commit863f598b650417824a8d531badc7a9d074af64be (patch)
tree067760789b068db53f4bb4f0f260d59a747ddf7e /tests/auto/network
parent7b1dad80212b886424d43c8f94fb92962510fe7f (diff)
ssl: make peerVerifyError test agnostic of error order
Currently the peerVerifyError test for QSslSocket makes an assumption about the order in which SSL errors are emitted by peerVerifyError. This assumption does not necessarily hold for non-OpenSSL backends. This change fixes this assumption, and also checks that HostNameMismatch was found both in the errors emitted by peerVerifyError and by sslErrors. Change-Id: I856d1ea43b36332db0f178d35fc14a4bb18ad673 Reviewed-by: Richard J. Moore <rich@kde.org>
Diffstat (limited to 'tests/auto/network')
-rw-r--r--tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
index c2f004f756..295b60e739 100644
--- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
@@ -1998,10 +1998,23 @@ void tst_QSslSocket::peerVerifyError()
socket->connectToHostEncrypted(QHostInfo::fromName(QtNetworkSettings::serverName()).addresses().first().toString(), 443);
if (socket->waitForEncrypted(10000))
QSKIP("Skipping flaky test - See QTBUG-29941");
+
+ // check HostNameMismatch was emitted by peerVerifyError
QVERIFY(!peerVerifyErrorSpy.isEmpty());
+ SslErrorList peerErrors;
+ const QList<QVariantList> &peerVerifyList = peerVerifyErrorSpy;
+ foreach (const QVariantList &args, peerVerifyList)
+ peerErrors << qvariant_cast<QSslError>(args.first()).error();
+ QVERIFY(peerErrors.contains(QSslError::HostNameMismatch));
+
+ // check HostNameMismatch was emitted by sslErrors
QVERIFY(!sslErrorsSpy.isEmpty());
- QCOMPARE(qvariant_cast<QSslError>(peerVerifyErrorSpy.last().at(0)).error(), QSslError::HostNameMismatch);
- QCOMPARE(qvariant_cast<QList<QSslError> >(sslErrorsSpy.at(0).at(0)).size(), peerVerifyErrorSpy.size());
+ SslErrorList sslErrors;
+ foreach (const QSslError &err, qvariant_cast<QList<QSslError> >(sslErrorsSpy.first().first()))
+ sslErrors << err.error();
+ QVERIFY(peerErrors.contains(QSslError::HostNameMismatch));
+
+ QCOMPARE(sslErrors.size(), peerErrors.size());
}
void tst_QSslSocket::disconnectFromHostWhenConnecting()