diff options
author | Michal Klocek <michal.klocek@theqtcompany.com> | 2015-11-26 17:19:31 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@theqtcompany.com> | 2015-12-01 22:05:00 +0000 |
commit | 0f64c6ae03a583e1fb060d87fc9b9dedf3b14dd6 (patch) | |
tree | 83bb7885a89ed3eca8d4e7e5bba0a2e44bad821e /tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp | |
parent | 6ef32812ccf6676e94e7d7fa7c3ae301d1069ca5 (diff) |
Rename QWebEngineCookieStoreClient to QWebEngineCookieStore
Change-Id: I8f9a4c5c155a65ede24908799218fd867db0767c
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp')
-rw-r--r-- | tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp b/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp new file mode 100644 index 000000000..e26ca7048 --- /dev/null +++ b/tests/auto/core/qwebenginecookiestore/tst_qwebenginecookiestore.cpp @@ -0,0 +1,210 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the QtWebEngine module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "../../widgets/util.h" +#include <QtTest/QtTest> +#include <QtWebEngineCore/qwebenginecallback.h> +#include <QtWebEngineCore/qwebenginecookiestore.h> +#include <QtWebEngineWidgets/qwebenginepage.h> +#include <QtWebEngineWidgets/qwebengineprofile.h> +#include <QtWebEngineWidgets/qwebengineview.h> + +class tst_QWebEngineCookieStore : public QObject +{ + Q_OBJECT + +public: + tst_QWebEngineCookieStore(); + ~tst_QWebEngineCookieStore(); + +public Q_SLOTS: + void init(); + void cleanup(); + +private Q_SLOTS: + void initTestCase(); + void cleanupTestCase(); + void cookieSignals(); + void setAndDeleteCookie(); + void batchCookieTasks(); +}; + +tst_QWebEngineCookieStore::tst_QWebEngineCookieStore() +{ +} + +tst_QWebEngineCookieStore::~tst_QWebEngineCookieStore() +{ +} + +void tst_QWebEngineCookieStore::init() +{ +} + +void tst_QWebEngineCookieStore::cleanup() +{ +} + +void tst_QWebEngineCookieStore::initTestCase() +{ +} + +void tst_QWebEngineCookieStore::cleanupTestCase() +{ +} + +void tst_QWebEngineCookieStore::cookieSignals() +{ + QWebEngineView view; + QWebEngineCookieStore *client = view.page()->profile()->cookieStore(); + + QSignalSpy loadSpy(&view, SIGNAL(loadFinished(bool))); + QSignalSpy cookieAddedSpy(client, SIGNAL(cookieAdded(const QNetworkCookie &))); + QSignalSpy cookieRemovedSpy(client, SIGNAL(cookieRemoved(const QNetworkCookie &))); + + view.load(QUrl("qrc:///resources/index.html")); + + QTRY_COMPARE(loadSpy.count(), 1); + QVariant success = loadSpy.takeFirst().takeFirst(); + QVERIFY(success.toBool()); + QTRY_COMPARE(cookieAddedSpy.count(), 2); + + // try whether updating a cookie to be expired results in that cookie being removed. + QNetworkCookie expiredCookie(QNetworkCookie::parseCookies(QByteArrayLiteral("SessionCookie=delete; expires=Thu, 01-Jan-1970 00:00:00 GMT; path=///resources")).first()); + client->setCookie(expiredCookie, QUrl("qrc:///resources/index.html")); + QTRY_COMPARE(cookieRemovedSpy.count(), 1); + cookieRemovedSpy.clear(); + + // try removing the other cookie. + QNetworkCookie nonSessionCookie(QNetworkCookie::parseCookies(QByteArrayLiteral("CookieWithExpiresField=QtWebEngineCookieTest; path=///resources")).first()); + client->deleteCookie(nonSessionCookie, QUrl("qrc:///resources/index.html")); + QTRY_COMPARE(cookieRemovedSpy.count(), 1); +} + +void tst_QWebEngineCookieStore::setAndDeleteCookie() +{ + QTest::qWait(500); // remove, when QTBUG-47946 is fixed! + QWebEngineView view; + QWebEngineCookieStore *client = view.page()->profile()->cookieStore(); + + QSignalSpy loadSpy(&view, SIGNAL(loadFinished(bool))); + QSignalSpy cookieAddedSpy(client, SIGNAL(cookieAdded(const QNetworkCookie &))); + QSignalSpy cookieRemovedSpy(client, SIGNAL(cookieRemoved(const QNetworkCookie &))); + + 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()); + 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()); + + // check if pending cookies are set and removed + client->setCookieWithCallback(cookie1, [](bool success) { QVERIFY(success); }); + client->setCookieWithCallback(cookie2, [](bool success) { QVERIFY(success); }); + client->deleteCookie(cookie1); + + view.load(QUrl("qrc:///resources/content.html")); + + QTRY_COMPARE(loadSpy.count(), 1); + QVariant success = loadSpy.takeFirst().takeFirst(); + QVERIFY(success.toBool()); + QTRY_COMPARE(cookieAddedSpy.count(), 2); + QTRY_COMPARE(cookieRemovedSpy.count(), 1); + cookieAddedSpy.clear(); + cookieRemovedSpy.clear(); + + client->setCookieWithCallback(cookie3, [](bool success) { QVERIFY(success); }); + // updating a cookie with an expired 'expires' field should remove the cookie with the same name + client->setCookieWithCallback(expiredCookie3, [](bool success) { QVERIFY(success); }); + client->deleteCookie(cookie2); + QTRY_COMPARE(cookieAddedSpy.count(), 1); + QTRY_COMPARE(cookieRemovedSpy.count(), 2); +} + +void tst_QWebEngineCookieStore::batchCookieTasks() +{ + QTest::qWait(500); // remove, when QTBUG-47946 is fixed! + QWebEngineView view; + QWebEngineCookieStore *client = view.page()->profile()->cookieStore(); + + QSignalSpy loadSpy(&view, SIGNAL(loadFinished(bool))); + QSignalSpy cookieAddedSpy(client, SIGNAL(cookieAdded(const QNetworkCookie &))); + QSignalSpy cookieRemovedSpy(client, SIGNAL(cookieRemoved(const QNetworkCookie &))); + + 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()); + + int capture = 0; + + client->setCookieWithCallback(cookie1, [&capture](bool success) { QVERIFY(success); ++capture; }); + client->setCookieWithCallback(cookie2, [&capture](bool success) { QVERIFY(success); ++capture; }); + + view.load(QUrl("qrc:///resources/index.html")); + + QTRY_COMPARE(loadSpy.count(), 1); + QVariant success = loadSpy.takeFirst().takeFirst(); + QVERIFY(success.toBool()); + QTRY_COMPARE(cookieAddedSpy.count(), 4); + QTRY_COMPARE(cookieRemovedSpy.count(), 0); + QTRY_COMPARE(capture, 2); + capture = 0; + + cookieAddedSpy.clear(); + cookieRemovedSpy.clear(); + + client->getAllCookies([&capture](const QByteArray& cookieLine) { + ++capture; + QCOMPARE(QNetworkCookie::parseCookies(cookieLine).count(), 4); + }); + + client->deleteSessionCookiesWithCallback([&capture](int numDeleted) { + ++capture; + QCOMPARE(numDeleted, 3); + }); + + client->deleteAllCookiesWithCallback([&capture](int numDeleted) { + ++capture; + QCOMPARE(numDeleted, 1); + }); + + QTRY_COMPARE(capture, 3); +} + +QTEST_MAIN(tst_QWebEngineCookieStore) +#include "tst_qwebenginecookiestore.moc" |