From 863f598b650417824a8d531badc7a9d074af64be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeremy=20Lain=C3=A9?= Date: Fri, 5 Sep 2014 11:14:14 +0200 Subject: 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 --- tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'tests') 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 &peerVerifyList = peerVerifyErrorSpy; + foreach (const QVariantList &args, peerVerifyList) + peerErrors << qvariant_cast(args.first()).error(); + QVERIFY(peerErrors.contains(QSslError::HostNameMismatch)); + + // check HostNameMismatch was emitted by sslErrors QVERIFY(!sslErrorsSpy.isEmpty()); - QCOMPARE(qvariant_cast(peerVerifyErrorSpy.last().at(0)).error(), QSslError::HostNameMismatch); - QCOMPARE(qvariant_cast >(sslErrorsSpy.at(0).at(0)).size(), peerVerifyErrorSpy.size()); + SslErrorList sslErrors; + foreach (const QSslError &err, qvariant_cast >(sslErrorsSpy.first().first())) + sslErrors << err.error(); + QVERIFY(peerErrors.contains(QSslError::HostNameMismatch)); + + QCOMPARE(sslErrors.size(), peerErrors.size()); } void tst_QSslSocket::disconnectFromHostWhenConnecting() -- cgit v1.2.3