diff options
author | Olivier De Cannière <olivier.decanniere@qt.io> | 2023-02-08 11:17:58 +0100 |
---|---|---|
committer | Olivier De Cannière <olivier.decanniere@qt.io> | 2023-02-09 13:02:01 +0100 |
commit | 6cca731f3e1304ce98f1ec18af42e3bd06001eea (patch) | |
tree | 89eb1a5a9f6bc4c8183602632a7e7e2a08d0902d /tests/auto/qml/qv4urlobject | |
parent | d2c8fe712a87a247864decd9d13167f847035aab (diff) |
UrlObject: Properly encode the url search components
The href() and search() functions now return properly encoded search
components.
Tests were added to tst_urlobject.cpp to verify this.
Pick-to: 6.5
Fixes: QTBUG-110454
Change-Id: I3d6485eeeedbd5ba5423cdd42d9c17669ca4bd62
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'tests/auto/qml/qv4urlobject')
-rw-r--r-- | tests/auto/qml/qv4urlobject/tst_qv4urlobject.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/auto/qml/qv4urlobject/tst_qv4urlobject.cpp b/tests/auto/qml/qv4urlobject/tst_qv4urlobject.cpp index 99a5803586..886bfda018 100644 --- a/tests/auto/qml/qv4urlobject/tst_qv4urlobject.cpp +++ b/tests/auto/qml/qv4urlobject/tst_qv4urlobject.cpp @@ -11,6 +11,10 @@ class tst_urlobject : public QObject private slots: void searchParams_set(); void searchParams_nullUrlPointer(); + void urlObject_search(); + void urlObject_search_data(); + void urlObject_href(); + void urlObject_href_data(); }; void tst_urlobject::searchParams_set() @@ -53,6 +57,88 @@ void tst_urlobject::searchParams_nullUrlPointer() QVERIFY(!result.isError()); } +void tst_urlobject::urlObject_search() +{ + QFETCH(QString, test); + QFETCH(QString, expected); + + QJSEngine engine; + + QCOMPARE(engine.evaluate(test).toString(), expected); +} + +void tst_urlobject::urlObject_search_data() +{ + QTest::addColumn<QString>("test"); + QTest::addColumn<QString>("expected"); + + QTest::newRow("base case") + << "var url = new URL(\"http://www.google.com/search?q=123\");" + "url.search" + << "?q=123"; + QTest::newRow("space") + << "var url = new URL(\"http://www.google.com/search?a=b ~\");" + "url.search" + << "?a=b%20~"; + QTest::newRow("empty search") + << "var url = new URL(\"http://www.google.com/search?\");" + "url.search" + << ""; + QTest::newRow("no search") + << "var url = new URL(\"http://www.google.com/search\");" + "url.search" + << ""; + QTest::newRow("Question mark") + << "var url = new URL(\"http://www.google.com/search??=?\");" + "url.search" + << "??=?"; + QTest::newRow("equal sign") + << "var url = new URL(\"http://www.google.com/search?a==&b=!\");" + "url.search" + << "?a==&b=!"; + QTest::newRow("percent sign") + << "var url = new URL(\"http://www.google.com/search?a=%20\");" + "url.search" + << "?a=%20"; + QTest::newRow("multiple key-value pairs") + << "var url = new URL(\"http://www.google.com/search?a=b&c=d\");" + "url.search" + << "?a=b&c=d"; + QTest::newRow("unreserved") + << "var url = new URL(\"http://www.google.com/search?a=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~\");" + "url.search" + << "?a=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.~"; + QTest::newRow("reserved + illegal") + << "var url = new URL(\"http://google.com/search/?a=!*();:@&=+$,/?#[]\");" + "url.search" + << "?a=!*();:@&=+$,/?"; + QTest::newRow("unicode (U+327D)") + << "var url = new URL(\"http://google.com/search/?a=㉽\");" + "url.search" + << "?a=%E3%89%BD"; +} + +void tst_urlobject::urlObject_href() +{ + QFETCH(QString, test); + QFETCH(QString, expected); + + QJSEngine engine; + + QCOMPARE(engine.evaluate(test).toString(), expected); +} + +void tst_urlobject::urlObject_href_data() +{ + QTest::addColumn<QString>("test"); + QTest::addColumn<QString>("expected"); + + QTest::newRow("QTBUG-110454") + << "var url = new URL(\"https://example.com/?a=b ~\");" + "url.href" + << "https://example.com/?a=b%20~"; +} + QTEST_MAIN(tst_urlobject) #include "tst_qv4urlobject.moc" |