summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2017-12-06 17:32:36 +0100
committerJüri Valdmann <juri.valdmann@qt.io>2018-01-12 14:43:20 +0000
commit0c101e281e842f7e2a11c6b43d08c0c977d596c0 (patch)
tree07db5d44bd3c26f576f342de9f0ea2b5bc6d13cd /tests
parentf3d4cd402ecbdd45793884b5b46c287af0e4cb6e (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.cpp58
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"