diff options
Diffstat (limited to 'tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp')
-rw-r--r-- | tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp index ee2b05aada..e84d4eb667 100644 --- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp +++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp @@ -106,6 +106,8 @@ private slots: void version_data(); void version(); void pkcs12(); + void invalidDateTime_data(); + void invalidDateTime(); // helper for verbose test failure messages QString toString(const QList<QSslError>&); @@ -1370,6 +1372,45 @@ void tst_QSslCertificate::pkcs12() nocert.close(); } +void tst_QSslCertificate::invalidDateTime_data() +{ + QTest::addColumn<QString>("path"); + QTest::addColumn<bool>("effectiveDateIsValid"); + QTest::addColumn<bool>("expiryDateIsValid"); + + QTest::addRow("invalid-begin-end") << testDataDir + "more-certificates/malformed-begin-end-dates.pem" + << false + << false; +} + +void tst_QSslCertificate::invalidDateTime() +{ + QFETCH(QString, path); + QFETCH(bool, effectiveDateIsValid); + QFETCH(bool, expiryDateIsValid); + + QList<QSslCertificate> certList = QSslCertificate::fromPath(path); + + // QTBUG-84676: on OpenSSL we get a valid certificate with null dates, + // on other backends we don't get a certificate at all. + switch (certList.size()) { + case 0: + break; + + case 1: { + const QSslCertificate &cert = certList.at(0); + QVERIFY(!cert.isNull()); + QCOMPARE(cert.effectiveDate().isValid(), effectiveDateIsValid); + QCOMPARE(cert.expiryDate().isValid(), expiryDateIsValid); + break; + } + + default: + QFAIL("Only one certificate should have been loaded"); + break; + } +} + #endif // QT_NO_SSL QTEST_MAIN(tst_QSslCertificate) |