diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2017-12-06 17:32:36 +0100 |
---|---|---|
committer | Jüri Valdmann <juri.valdmann@qt.io> | 2018-01-12 14:43:20 +0000 |
commit | 0c101e281e842f7e2a11c6b43d08c0c977d596c0 (patch) | |
tree | 07db5d44bd3c26f576f342de9f0ea2b5bc6d13cd /tests | |
parent | f3d4cd402ecbdd45793884b5b46c287af0e4cb6e (diff) |
Add tests for rejecting download requests
Change-Id: Ied0fd80d15a02c6f3c4ab69d919025857e7b787a
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/widgets/qwebenginedownloads/tst_qwebenginedownloads.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/auto/widgets/qwebenginedownloads/tst_qwebenginedownloads.cpp b/tests/auto/widgets/qwebenginedownloads/tst_qwebenginedownloads.cpp index 5df722340..6bba8a6df 100644 --- a/tests/auto/widgets/qwebenginedownloads/tst_qwebenginedownloads.cpp +++ b/tests/auto/widgets/qwebenginedownloads/tst_qwebenginedownloads.cpp @@ -60,6 +60,8 @@ private Q_SLOTS: void downloadPage_data(); void downloadPage(); void downloadViaSetUrl(); + void downloadFileNot1(); + void downloadFileNot2(); }; enum DownloadTestUserAction { @@ -645,5 +647,61 @@ void tst_QWebEngineDownloads::downloadViaSetUrl() } } +void tst_QWebEngineDownloads::downloadFileNot1() +{ + // Trigger file download via download() but don't accept(). + + HttpServer server; + QWebEngineProfile profile; + QWebEnginePage page(&profile); + const auto filePath = QByteArrayLiteral("/file"); + const auto fileUrl = server.url(filePath); + + page.download(fileUrl); + auto fileRR = waitForRequest(&server); + QVERIFY(fileRR); + QCOMPARE(fileRR->requestMethod(), QByteArrayLiteral("GET")); + QCOMPARE(fileRR->requestPath(), filePath); + fileRR->sendResponse(); + + QPointer<QWebEngineDownloadItem> downloadItem; + QVERIFY(waitForSignal(&profile, &QWebEngineProfile::downloadRequested, + [&](QWebEngineDownloadItem *item) { + QVERIFY(item); + QCOMPARE(item->state(), QWebEngineDownloadItem::DownloadRequested); + downloadItem = item; + })); + QVERIFY(!downloadItem); +} + +void tst_QWebEngineDownloads::downloadFileNot2() +{ + // Trigger file download via download() but call cancel() instead of accept(). + + HttpServer server; + QWebEngineProfile profile; + QWebEnginePage page(&profile); + const auto filePath = QByteArrayLiteral("/file"); + const auto fileUrl = server.url(filePath); + + page.download(fileUrl); + auto fileRR = waitForRequest(&server); + QVERIFY(fileRR); + QCOMPARE(fileRR->requestMethod(), QByteArrayLiteral("GET")); + QCOMPARE(fileRR->requestPath(), filePath); + fileRR->sendResponse(); + + QPointer<QWebEngineDownloadItem> downloadItem; + QVERIFY(waitForSignal(&profile, &QWebEngineProfile::downloadRequested, + [&](QWebEngineDownloadItem *item) { + QVERIFY(item); + QCOMPARE(item->state(), QWebEngineDownloadItem::DownloadRequested); + item->cancel(); + downloadItem = item; + })); + QVERIFY(downloadItem); + QCOMPARE(downloadItem->state(), QWebEngineDownloadItem::DownloadCancelled); +} + QTEST_MAIN(tst_QWebEngineDownloads) #include "tst_qwebenginedownloads.moc" |