summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/auto/qsslcertificate/tst_qsslcertificate.cpp40
1 files changed, 31 insertions, 9 deletions
diff --git a/tests/auto/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/qsslcertificate/tst_qsslcertificate.cpp
index 1b3d039ded..e0bc029c71 100644
--- a/tests/auto/qsslcertificate/tst_qsslcertificate.cpp
+++ b/tests/auto/qsslcertificate/tst_qsslcertificate.cpp
@@ -118,6 +118,9 @@ private slots:
void subjectAndIssuerAttributes();
void verify();
+ // helper for verbose test failure messages
+ QString toString(const QList<QSslError>&);
+
// ### add tests for certificate bundles (multiple certificates concatenated into a single
// structure); both PEM and DER formatted
#endif
@@ -907,10 +910,16 @@ void tst_QSslCertificate::verify()
QList<QSslError> errors;
QList<QSslCertificate> toVerify;
+ // Like QVERIFY, but be verbose about the content of `errors' when failing
+#define VERIFY_VERBOSE(A) \
+ QVERIFY2((A), \
+ qPrintable(QString("errors: %1").arg(toString(errors))) \
+ )
+
// Empty chain is unspecified error
errors = QSslCertificate::verify(toVerify);
- QVERIFY(errors.count() == 1);
- QVERIFY(errors[0] == QSslError(QSslError::UnspecifiedError));
+ VERIFY_VERBOSE(errors.count() == 1);
+ VERIFY_VERBOSE(errors[0] == QSslError(QSslError::UnspecifiedError));
errors.clear();
// Verify a valid cert signed by a CA
@@ -921,7 +930,7 @@ void tst_QSslCertificate::verify()
errors = QSslCertificate::verify(toVerify);
QEXPECT_FAIL("", "QTBUG-20582 fails since ~5am, 27th July 2011", Continue);
- QVERIFY(errors.count() == 0);
+ VERIFY_VERBOSE(errors.count() == 0);
errors.clear();
// Test a blacklisted certificate
@@ -940,8 +949,8 @@ void tst_QSslCertificate::verify()
// This one is expired and untrusted
toVerify = QSslCertificate::fromPath(SRCDIR "more-certificates/cert-large-serial-number.pem");
errors = QSslCertificate::verify(toVerify);
- QVERIFY(errors.contains(QSslError(QSslError::SelfSignedCertificate, toVerify[0])));
- QVERIFY(errors.contains(QSslError(QSslError::CertificateExpired, toVerify[0])));
+ VERIFY_VERBOSE(errors.contains(QSslError(QSslError::SelfSignedCertificate, toVerify[0])));
+ VERIFY_VERBOSE(errors.contains(QSslError(QSslError::CertificateExpired, toVerify[0])));
errors.clear();
toVerify.clear();
@@ -949,7 +958,7 @@ void tst_QSslCertificate::verify()
toVerify << QSslCertificate::fromPath(SRCDIR "verify-certs/test-intermediate-not-ca-cert.pem").first();
toVerify << QSslCertificate::fromPath(SRCDIR "verify-certs/test-ocsp-good-cert.pem").first();
errors = QSslCertificate::verify(toVerify);
- QVERIFY(errors.contains(QSslError(QSslError::InvalidCaCertificate, toVerify[1])));
+ VERIFY_VERBOSE(errors.contains(QSslError(QSslError::InvalidCaCertificate, toVerify[1])));
toVerify.clear();
// This one is signed by a valid cert, and the signer is a valid CA
@@ -957,17 +966,30 @@ void tst_QSslCertificate::verify()
toVerify << QSslCertificate::fromPath(SRCDIR "verify-certs/test-intermediate-ca-cert.pem").first();
errors = QSslCertificate::verify(toVerify);
QEXPECT_FAIL("", "QTBUG-20582 fails since ~5am, 27th July 2011", Continue);
- QVERIFY(errors.length() == 0);
+ VERIFY_VERBOSE(errors.count() == 0);
// Recheck the above with hostname validation
errors = QSslCertificate::verify(toVerify, QLatin1String("example.com"));
QEXPECT_FAIL("", "QTBUG-20582 fails since ~5am, 27th July 2011", Continue);
- QVERIFY(errors.length() == 0);
+ VERIFY_VERBOSE(errors.count() == 0);
// Recheck the above with a bad hostname
errors = QSslCertificate::verify(toVerify, QLatin1String("fail.example.com"));
- QVERIFY(errors.contains(QSslError(QSslError::HostNameMismatch, toVerify[0])));
+ VERIFY_VERBOSE(errors.contains(QSslError(QSslError::HostNameMismatch, toVerify[0])));
toVerify.clear();
+
+#undef VERIFY_VERBOSE
+}
+
+QString tst_QSslCertificate::toString(const QList<QSslError>& errors)
+{
+ QStringList errorStrings;
+
+ foreach (const QSslError& error, errors) {
+ errorStrings.append(QLatin1String("\"") + error.errorString() + QLatin1String("\""));
+ }
+
+ return QLatin1String("[ ") + errorStrings.join(QLatin1String(", ")) + QLatin1String(" ]");
}
#endif // QT_NO_OPENSSL