diff options
author | Jeremy Lainé <jeremy.laine@m4x.org> | 2014-09-05 11:14:14 +0200 |
---|---|---|
committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2014-09-05 12:20:25 +0200 |
commit | 863f598b650417824a8d531badc7a9d074af64be (patch) | |
tree | 067760789b068db53f4bb4f0f260d59a747ddf7e /tests/auto | |
parent | 7b1dad80212b886424d43c8f94fb92962510fe7f (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')
-rw-r--r-- | tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp | 17 |
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() |