summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2022-01-12 17:27:23 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2022-01-19 18:10:16 +0100
commit6e8e53757c684c30d9547bf7fb3f5ce0b7e3f0c8 (patch)
treedea719067942d3d32ac082e5304f95d6fa9605e8 /tests
parent52f0ca90445c633c68694fde84b4630a13c3c14e (diff)
Add testing of redirect by interceptor
Looks the same in the interceptor, but different in the jobs. Extra combinations not yet tested. Change-Id: Ib9c34029e5dd293d30380ce42495905fbcab12b7 Reviewed-by: Kirill Burtsev <kirill.burtsev@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/core/origins/resources/redirect.css2
-rw-r--r--tests/auto/core/origins/resources/redirect.html2
-rw-r--r--tests/auto/core/origins/tst_origins.cpp93
3 files changed, 76 insertions, 21 deletions
diff --git a/tests/auto/core/origins/resources/redirect.css b/tests/auto/core/origins/resources/redirect.css
index 41d7560cc..9c4308c07 100644
--- a/tests/auto/core/origins/resources/redirect.css
+++ b/tests/auto/core/origins/resources/redirect.css
@@ -1,6 +1,6 @@
@font-face {
font-family: 'MyWebFont';
- src: url('redirect1:/resources/Akronim-Regular.woff2') format('woff2');
+ src: url('redirect:redirect-secure/resources/Akronim-Regular.woff2') format('woff2');
}
body {
diff --git a/tests/auto/core/origins/resources/redirect.html b/tests/auto/core/origins/resources/redirect.html
index 04948e14b..bc4a9b80e 100644
--- a/tests/auto/core/origins/resources/redirect.html
+++ b/tests/auto/core/origins/resources/redirect.html
@@ -2,7 +2,7 @@
<html>
<head>
<title>redirect</title>
- <link rel="stylesheet" href="redirect1:/resources/redirect.css">
+ <link rel="stylesheet" href="redirect:redirect-secure/resources/redirect.css">
</head>
<body>
Text
diff --git a/tests/auto/core/origins/tst_origins.cpp b/tests/auto/core/origins/tst_origins.cpp
index 1731bee8a..32bcf9b9f 100644
--- a/tests/auto/core/origins/tst_origins.cpp
+++ b/tests/auto/core/origins/tst_origins.cpp
@@ -31,6 +31,7 @@
#include <QtCore/qfile.h>
#include <QtTest/QtTest>
+#include <QtWebEngineCore/qwebengineurlrequestinterceptor.h>
#include <QtWebEngineCore/qwebengineurlrequestjob.h>
#include <QtWebEngineCore/qwebengineurlscheme.h>
#include <QtWebEngineCore/qwebengineurlschemehandler.h>
@@ -48,6 +49,8 @@
#define QSL QStringLiteral
#define QBAL QByteArrayLiteral
+Q_LOGGING_CATEGORY(lc, "qt.webengine.tests")
+
void registerSchemes()
{
{
@@ -125,14 +128,14 @@ void registerSchemes()
}
{
- QWebEngineUrlScheme scheme(QBAL("redirect1"));
+ QWebEngineUrlScheme scheme(QBAL("redirect"));
scheme.setFlags(QWebEngineUrlScheme::CorsEnabled);
QWebEngineUrlScheme::registerScheme(scheme);
}
{
- QWebEngineUrlScheme scheme(QBAL("redirect2"));
- scheme.setFlags(QWebEngineUrlScheme::CorsEnabled);
+ QWebEngineUrlScheme scheme(QBAL("redirect-secure"));
+ scheme.setFlags(QWebEngineUrlScheme::SecureScheme);
QWebEngineUrlScheme::registerScheme(scheme);
}
@@ -175,8 +178,9 @@ public:
profile->installUrlSchemeHandler(QBAL("HostSyntax-ContentSecurityPolicyIgnored"), this);
profile->installUrlSchemeHandler(QBAL("HostAndPortSyntax"), this);
profile->installUrlSchemeHandler(QBAL("HostPortAndUserInformationSyntax"), this);
- profile->installUrlSchemeHandler(QBAL("redirect1"), this);
- profile->installUrlSchemeHandler(QBAL("redirect2"), this);
+ profile->installUrlSchemeHandler(QBAL("redirect"), this);
+ profile->installUrlSchemeHandler(QBAL("redirect-local"), this);
+ profile->installUrlSchemeHandler(QBAL("redirect-secure"), this);
profile->installUrlSchemeHandler(QBAL("cors"), this);
profile->installUrlSchemeHandler(QBAL("local"), this);
profile->installUrlSchemeHandler(QBAL("local-cors"), this);
@@ -190,10 +194,15 @@ private:
QUrl url = job->requestUrl();
m_requests << url;
- if (url.scheme() == QBAL("redirect1")) {
- url.setScheme(QBAL("redirect2"));
- job->redirect(url);
- return;
+ if (url.scheme().startsWith("redirect")) {
+ QString path = url.path();
+ int idx = path.indexOf(QChar('/'));
+ if (idx > 0) {
+ url.setScheme(path.first(idx));
+ url.setPath(path.mid(idx, -1));
+ job->redirect(url);
+ return;
+ }
}
QString pathPrefix = QDir(QT_TESTCASE_SOURCEDIR).canonicalPath();
@@ -217,6 +226,30 @@ private:
QList<QUrl> m_requests;
};
+class TestRequestInterceptor : public QWebEngineUrlRequestInterceptor
+{
+public:
+ TestRequestInterceptor() = default;
+ void interceptRequest(QWebEngineUrlRequestInfo &info) override
+ {
+ qCDebug(lc) << this << "Type:" << info.resourceType() << info.requestMethod() << "Navigation:" << info.navigationType()
+ << info.requestUrl() << "Initiator:" << info.initiator();
+
+ QUrl url = info.requestUrl();
+ requests << url;
+ if (url.scheme().startsWith("redirect")) {
+ QString path = url.path();
+ int idx = path.indexOf(QChar('/'));
+ if (idx > 0) {
+ url.setScheme(path.first(idx));
+ url.setPath(path.mid(idx, -1));
+ info.redirect(url);
+ }
+ }
+ }
+ QList<QUrl> requests;
+};
+
class tst_Origins final : public QObject {
Q_OBJECT
@@ -245,7 +278,8 @@ private Q_SLOTS:
void serviceWorker();
void viewSource();
void createObjectURL();
- void redirect();
+ void redirectScheme();
+ void redirectInterceptor();
private:
bool verifyLoad(const QUrl &url)
@@ -999,17 +1033,38 @@ void tst_Origins::createObjectURL()
QVERIFY(eval(QSL("result")).toString().startsWith(QSL("blob:tst:")));
}
-void tst_Origins::redirect()
+void tst_Origins::redirectScheme()
{
- QVERIFY(verifyLoad(QSL("redirect1:/resources/redirect.html")));
+ QVERIFY(verifyLoad(QSL("redirect:redirect-secure/resources/redirect.html")));
QTRY_COMPARE(m_handler->requests().size(), 7);
- QCOMPARE(m_handler->requests()[0], QUrl(QStringLiteral("redirect1:/resources/redirect.html")));
- QCOMPARE(m_handler->requests()[1], QUrl(QStringLiteral("redirect2:/resources/redirect.html")));
- QCOMPARE(m_handler->requests()[2], QUrl(QStringLiteral("redirect1:/resources/redirect.css")));
- QCOMPARE(m_handler->requests()[3], QUrl(QStringLiteral("redirect2:/resources/redirect.css")));
- QCOMPARE(m_handler->requests()[4], QUrl(QStringLiteral("redirect1:/resources/Akronim-Regular.woff2")));
- QCOMPARE(m_handler->requests()[5], QUrl(QStringLiteral("redirect1:/resources/Akronim-Regular.woff2")));
- QCOMPARE(m_handler->requests()[6], QUrl(QStringLiteral("redirect2:/resources/Akronim-Regular.woff2")));
+ QCOMPARE(m_handler->requests()[0], QUrl(QStringLiteral("redirect:redirect-secure/resources/redirect.html")));
+ QCOMPARE(m_handler->requests()[1], QUrl(QStringLiteral("redirect-secure:/resources/redirect.html")));
+ QCOMPARE(m_handler->requests()[2], QUrl(QStringLiteral("redirect:redirect-secure/resources/redirect.css")));
+ QCOMPARE(m_handler->requests()[3], QUrl(QStringLiteral("redirect-secure:/resources/redirect.css")));
+ QCOMPARE(m_handler->requests()[4], QUrl(QStringLiteral("redirect:redirect-secure/resources/Akronim-Regular.woff2")));
+ QCOMPARE(m_handler->requests()[5], QUrl(QStringLiteral("redirect:redirect-secure/resources/Akronim-Regular.woff2")));
+ QCOMPARE(m_handler->requests()[6], QUrl(QStringLiteral("redirect-secure:/resources/Akronim-Regular.woff2")));
+}
+
+void tst_Origins::redirectInterceptor()
+{
+ TestRequestInterceptor interceptor;
+ m_profile.setUrlRequestInterceptor(&interceptor);
+
+ QVERIFY(verifyLoad(QSL("redirect:redirect-secure/resources/redirect.html")));
+ QTRY_COMPARE(interceptor.requests.size(), 7);
+ QTRY_COMPARE(m_handler->requests().size(), 3);
+ QCOMPARE(m_handler->requests()[0], QUrl(QStringLiteral("redirect-secure:/resources/redirect.html")));
+ QCOMPARE(m_handler->requests()[1], QUrl(QStringLiteral("redirect-secure:/resources/redirect.css")));
+ QCOMPARE(m_handler->requests()[2], QUrl(QStringLiteral("redirect-secure:/resources/Akronim-Regular.woff2")));
+
+ QCOMPARE(interceptor.requests[0], QUrl(QStringLiteral("redirect:redirect-secure/resources/redirect.html")));
+ QCOMPARE(interceptor.requests[1], QUrl(QStringLiteral("redirect-secure:/resources/redirect.html")));
+ QCOMPARE(interceptor.requests[2], QUrl(QStringLiteral("redirect:redirect-secure/resources/redirect.css")));
+ QCOMPARE(interceptor.requests[3], QUrl(QStringLiteral("redirect-secure:/resources/redirect.css")));
+ QCOMPARE(interceptor.requests[4], QUrl(QStringLiteral("redirect:redirect-secure/resources/Akronim-Regular.woff2")));
+ QCOMPARE(interceptor.requests[5], QUrl(QStringLiteral("redirect:redirect-secure/resources/Akronim-Regular.woff2")));
+ QCOMPARE(interceptor.requests[6], QUrl(QStringLiteral("redirect-secure:/resources/Akronim-Regular.woff2")));
}
QTEST_MAIN(tst_Origins)