summaryrefslogtreecommitdiffstats
path: root/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp')
-rw-r--r--tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp41
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)