From 513c5435536c041eb89136fbc322a68e38caf845 Mon Sep 17 00:00:00 2001 From: Kirill Burtsev Date: Wed, 9 Jun 2021 12:20:42 +0000 Subject: 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 Change-Id: I6f3c87a0d1561a32465da61a811edc753e69c24b Reviewed-by: Michal Klocek (cherry picked from commit 8427a3e370291598ccd7f6f3a843cc1ba90109ae) Reviewed-by: Qt Cherry-pick Bot --- .../auto/core/certificateerror/tst_certificateerror.cpp | 17 +++++++++++++++++ tests/auto/quick/qmltests/data/tst_certificateError.qml | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) (limited to 'tests') 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 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); + } } } -- cgit v1.2.3