diff options
author | Kirill Burtsev <kirill.burtsev@qt.io> | 2020-02-12 16:18:49 +0100 |
---|---|---|
committer | Kirill Burtsev <kirill.burtsev@qt.io> | 2020-02-14 16:54:35 +0100 |
commit | bb46f8f9fa6001188049616a9b39e8cccf1b815a (patch) | |
tree | 7338ad899a7a052f83cd9f51c21e78b820c54396 /tests | |
parent | 89b62938c9aeb723b2519053928f979c7e781089 (diff) |
Stabilize cookie test and prepare for loadAllCookies API fix
Trigger cookie monster init by making simple blank navigation to allow
run every single test separately. API loadAllCookies supposed to init
cookie storage to avoid this navigation but currenly doesn't work.
Task-number: QTBUG-80605
Change-Id: I0b71e7eeb015169af2042e90713c5aa96f8bb135
Reviewed-by: Jüri Valdmann <juri.valdmann@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp | 63 |
1 files changed, 41 insertions, 22 deletions
diff --git a/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp b/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp index 4ff33dbac..2c41aa9b1 100644 --- a/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp +++ b/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp @@ -45,17 +45,21 @@ public Q_SLOTS: void init(); void cleanup(); -private Q_SLOTS: void initTestCase(); void cleanupTestCase(); - void cookieSignals(); + +private Q_SLOTS: + // MEMO should be the first test of a testcase + // as it checks storage manipulation without navigation void setAndDeleteCookie(); + + void cookieSignals(); void batchCookieTasks(); void basicFilter(); void html5featureFilter(); private: - QWebEngineProfile m_profile; + QWebEngineProfile *m_profile; }; tst_QWebEngineCookieStore::tst_QWebEngineCookieStore() @@ -72,22 +76,24 @@ void tst_QWebEngineCookieStore::init() void tst_QWebEngineCookieStore::cleanup() { - m_profile.cookieStore()->deleteAllCookies(); + m_profile->cookieStore()->deleteAllCookies(); } void tst_QWebEngineCookieStore::initTestCase() { + m_profile = new QWebEngineProfile; } void tst_QWebEngineCookieStore::cleanupTestCase() { + delete m_profile; } void tst_QWebEngineCookieStore::cookieSignals() { - QWebEnginePage page(&m_profile); + QWebEnginePage page(m_profile); - QWebEngineCookieStore *client = m_profile.cookieStore(); + QWebEngineCookieStore *client = m_profile->cookieStore(); QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool))); QSignalSpy cookieAddedSpy(client, SIGNAL(cookieAdded(const QNetworkCookie &))); @@ -95,7 +101,7 @@ void tst_QWebEngineCookieStore::cookieSignals() page.load(QUrl("qrc:///resources/index.html")); - QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 30000); QVariant success = loadSpy.takeFirst().takeFirst(); QVERIFY(success.toBool()); QTRY_COMPARE(cookieAddedSpy.count(), 2); @@ -115,8 +121,8 @@ void tst_QWebEngineCookieStore::cookieSignals() void tst_QWebEngineCookieStore::setAndDeleteCookie() { - QWebEnginePage page(&m_profile); - QWebEngineCookieStore *client = m_profile.cookieStore(); + QWebEnginePage page(m_profile); + QWebEngineCookieStore *client = m_profile->cookieStore(); QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool))); QSignalSpy cookieAddedSpy(client, SIGNAL(cookieAdded(const QNetworkCookie &))); @@ -127,16 +133,23 @@ void tst_QWebEngineCookieStore::setAndDeleteCookie() QNetworkCookie cookie3(QNetworkCookie::parseCookies(QByteArrayLiteral("SessionCookie=QtWebEngineCookieTest; Path=///resources")).first()); QNetworkCookie expiredCookie3(QNetworkCookie::parseCookies(QByteArrayLiteral("SessionCookie=delete; expires=Thu, 01-Jan-1970 00:00:00 GMT; path=///resources")).first()); + // force to init storage as it's done lazily upon first navigation + client->loadAllCookies(); + // /* FIXME remove 'blank' navigation once loadAllCookies api is fixed + page.load(QUrl("about:blank")); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 30000); + // */ + // check if pending cookies are set and removed client->setCookie(cookie1); - QTRY_COMPARE(cookieAddedSpy.count(),1); client->setCookie(cookie2); - QTRY_COMPARE(cookieAddedSpy.count(),2); + QTRY_COMPARE(cookieAddedSpy.count(), 2); client->deleteCookie(cookie1); + QTRY_COMPARE(cookieRemovedSpy.count(), 1); page.load(QUrl("qrc:///resources/content.html")); - QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 2, 30000); QVariant success = loadSpy.takeFirst().takeFirst(); QVERIFY(success.toBool()); QTRY_COMPARE(cookieAddedSpy.count(), 2); @@ -155,8 +168,8 @@ void tst_QWebEngineCookieStore::setAndDeleteCookie() void tst_QWebEngineCookieStore::batchCookieTasks() { - QWebEnginePage page(&m_profile); - QWebEngineCookieStore *client = m_profile.cookieStore(); + QWebEnginePage page(m_profile); + QWebEngineCookieStore *client = m_profile->cookieStore(); QSignalSpy loadSpy(&page, SIGNAL(loadFinished(bool))); QSignalSpy cookieAddedSpy(client, SIGNAL(cookieAdded(const QNetworkCookie &))); @@ -165,14 +178,20 @@ void tst_QWebEngineCookieStore::batchCookieTasks() QNetworkCookie cookie1(QNetworkCookie::parseCookies(QByteArrayLiteral("khaos=I9GX8CWI; Domain=.example.com; Path=/docs")).first()); QNetworkCookie cookie2(QNetworkCookie::parseCookies(QByteArrayLiteral("Test%20Cookie=foobar; domain=example.com; Path=/")).first()); + // force to init storage as it's done lazily upon first navigation + client->loadAllCookies(); + // /* FIXME remove 'blank' navigation once loadAllCookies api is fixed + page.load(QUrl("about:blank")); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 30000); + // */ + client->setCookie(cookie1); - QTRY_COMPARE(cookieAddedSpy.count(), 1); client->setCookie(cookie2); QTRY_COMPARE(cookieAddedSpy.count(), 2); page.load(QUrl("qrc:///resources/index.html")); - QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 2, 30000); QVariant success = loadSpy.takeFirst().takeFirst(); QVERIFY(success.toBool()); QTRY_COMPARE(cookieAddedSpy.count(), 4); @@ -190,8 +209,8 @@ void tst_QWebEngineCookieStore::batchCookieTasks() void tst_QWebEngineCookieStore::basicFilter() { - QWebEnginePage page(&m_profile); - QWebEngineCookieStore *client = m_profile.cookieStore(); + QWebEnginePage page(m_profile); + QWebEngineCookieStore *client = m_profile->cookieStore(); QAtomicInt accessTested = 0; client->setCookieFilter([&](const QWebEngineCookieStore::FilterRequest &){ ++accessTested; return true;}); @@ -202,7 +221,7 @@ void tst_QWebEngineCookieStore::basicFilter() page.load(QUrl("qrc:///resources/index.html")); - QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 30000); QVERIFY(loadSpy.takeFirst().takeFirst().toBool()); QTRY_COMPARE(cookieAddedSpy.count(), 2); QTRY_COMPARE(accessTested.loadAcquire(), 2); // FIXME? @@ -222,8 +241,8 @@ void tst_QWebEngineCookieStore::basicFilter() void tst_QWebEngineCookieStore::html5featureFilter() { - QWebEnginePage page(&m_profile); - QWebEngineCookieStore *client = m_profile.cookieStore(); + QWebEnginePage page(m_profile); + QWebEngineCookieStore *client = m_profile->cookieStore(); QAtomicInt accessTested = 0; client->setCookieFilter([&](const QWebEngineCookieStore::FilterRequest &){ ++accessTested; return false;}); @@ -232,7 +251,7 @@ void tst_QWebEngineCookieStore::html5featureFilter() page.load(QUrl("qrc:///resources/content.html")); - QTRY_COMPARE(loadSpy.count(), 1); + QTRY_COMPARE_WITH_TIMEOUT(loadSpy.count(), 1, 30000); QVERIFY(loadSpy.takeFirst().takeFirst().toBool()); QCOMPARE(accessTested.loadAcquire(), 0); // FIXME? QTest::ignoreMessage(QtCriticalMsg, QRegularExpression(".*Uncaught SecurityError.*sessionStorage.*")); |