diff options
author | Kirill Burtsev <kirill.burtsev@qt.io> | 2021-06-09 12:20:42 +0000 |
---|---|---|
committer | Kirill Burtsev <kirill.burtsev@qt.io> | 2021-08-10 18:49:29 +0200 |
commit | 8427a3e370291598ccd7f6f3a843cc1ba90109ae (patch) | |
tree | cfea95adc6310a049f3c66fca89651a3c5ac7fe1 /tests | |
parent | c4d794898394d7d0f79001a04c8cff50dbc4fba7 (diff) |
Revert "Remove certificate fatal error test"
This reverts commit 3cdf6827de796b49fb49f94a18906303732bb93f.
Reason for revert: The test didn't work and was skipped due to real regression
Pick-to: 6.2
Change-Id: I6f3c87a0d1561a32465da61a811edc753e69c24b
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/core/certificateerror/tst_certificateerror.cpp | 17 | ||||
-rw-r--r-- | tests/auto/quick/qmltests/data/tst_certificateError.qml | 17 |
2 files changed, 34 insertions, 0 deletions
diff --git a/tests/auto/core/certificateerror/tst_certificateerror.cpp b/tests/auto/core/certificateerror/tst_certificateerror.cpp index a2b15a1ae..da679fa8a 100644 --- a/tests/auto/core/certificateerror/tst_certificateerror.cpp +++ b/tests/auto/core/certificateerror/tst_certificateerror.cpp @@ -43,6 +43,7 @@ public: private Q_SLOTS: void handleError_data(); void handleError(); + void fatalError(); }; struct PageWithCertificateErrorHandler : QWebEnginePage @@ -131,5 +132,21 @@ void tst_CertificateError::handleError() QCOMPARE(toPlainTextSync(&page), expectedContent); } +void tst_CertificateError::fatalError() +{ + PageWithCertificateErrorHandler page(false, false); + page.settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false); + QSignalSpy loadFinishedSpy(&page, &QWebEnginePage::loadFinished); + + page.setUrl(QUrl("https://revoked.badssl.com")); + if (!loadFinishedSpy.wait(10000)) + QSKIP("Couldn't load page from network, skipping test."); + QTRY_VERIFY(page.error); + QVERIFY(!page.error->isOverridable()); + + // Fatal certificate errors are implicitly rejected. This should not cause crash. + page.error->rejectCertificate(); +} + QTEST_MAIN(tst_CertificateError) #include <tst_certificateerror.moc> diff --git a/tests/auto/quick/qmltests/data/tst_certificateError.qml b/tests/auto/quick/qmltests/data/tst_certificateError.qml index a707f4a74..bad24bf0f 100644 --- a/tests/auto/quick/qmltests/data/tst_certificateError.qml +++ b/tests/auto/quick/qmltests/data/tst_certificateError.qml @@ -121,5 +121,22 @@ TestWebEngineView { verify(error.overridable) compare(error.type, WebEngineCertificateError.CertificateAuthorityInvalid) } + + function test_fatalError() { + var handleCertificateError = function(error) { + verify(!error.overrideable); + // QQuickWebEngineViewPrivate::allowCertificateError() will implicitly reject + // fatal errors and it should not crash if already rejected in handler. + error.rejectCertificate(); + } + view.certificateError.connect(handleCertificateError); + + view.url = Qt.resolvedUrl('https://revoked.badssl.com'); + if (!view.waitForLoadFailed(10000)) + skip("Couldn't load page from network, skipping test."); + compare(spyError.count, 1); + + view.certificateError.disconnect(handleCertificateError); + } } } |