mirror of
https://invent.kde.org/network/falkon.git
synced 2024-11-11 09:32:12 +01:00
6589e6b58f
Reviewers: drosca Subscribers: falkon Tags: #falkon Differential Revision: https://phabricator.kde.org/D14521
118 lines
5.0 KiB
C++
118 lines
5.0 KiB
C++
/* ============================================================
|
|
* Falkon - Qt web browser
|
|
* Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com>
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
* ============================================================ */
|
|
#include "qmlcookiesapitest.h"
|
|
#include "autotests.h"
|
|
#include "qmltesthelper.h"
|
|
#include "mainapplication.h"
|
|
#include "cookiejar.h"
|
|
#include "qml/api/cookies/qmlcookie.h"
|
|
#include <QWebEngineProfile>
|
|
|
|
void QmlCookiesApiTest::initTestCase()
|
|
{
|
|
}
|
|
|
|
void QmlCookiesApiTest::cleanupTestCase()
|
|
{
|
|
}
|
|
|
|
void QmlCookiesApiTest::testCookieAdditionRemoval()
|
|
{
|
|
QSignalSpy cookieAddSpy(mApp->cookieJar(), &CookieJar::cookieAdded);
|
|
m_testHelper.evaluate("Falkon.Cookies.set({"
|
|
" name: 'Example',"
|
|
" url: '.example.com',"
|
|
" expirationDate: Date.now() + 60*1000"
|
|
"})");
|
|
QTRY_COMPARE(cookieAddSpy.count(), 1);
|
|
QNetworkCookie netCookie = qvariant_cast<QNetworkCookie>(cookieAddSpy.at(0).at(0));
|
|
QCOMPARE(netCookie.name(), "Example");
|
|
QObject *object = m_testHelper.evaluateQObject("Falkon.Cookies");
|
|
QVERIFY(object);
|
|
QSignalSpy qmlCookieSpy(object, SIGNAL(changed(QVariantMap)));
|
|
QNetworkCookie anotherNetCookie;
|
|
anotherNetCookie.setName(QString("Hello").toLocal8Bit());
|
|
anotherNetCookie.setDomain(".mydomain.com");
|
|
anotherNetCookie.setExpirationDate(QDateTime::currentDateTime().addSecs(60));
|
|
mApp->webProfile()->cookieStore()->setCookie(anotherNetCookie);
|
|
QTRY_COMPARE(qmlCookieSpy.count(), 1);
|
|
QVariantMap addedQmlCookieMap = QVariant(qmlCookieSpy.at(0).at(0)).toMap();
|
|
QObject *addedQmlCookie = qvariant_cast<QObject*>(addedQmlCookieMap.value("cookie"));
|
|
bool removed = addedQmlCookieMap.value("removed").toBool();
|
|
QCOMPARE(addedQmlCookie->property("name").toString(), "Hello");
|
|
QCOMPARE(removed, false);
|
|
|
|
mApp->webProfile()->cookieStore()->deleteCookie(netCookie);
|
|
QTRY_COMPARE(qmlCookieSpy.count(), 2);
|
|
QVariantMap removedQmlCookieMap = QVariant(qmlCookieSpy.at(1).at(0)).toMap();
|
|
QObject *removedQmlCookie = qvariant_cast<QObject*>(removedQmlCookieMap.value("cookie"));
|
|
removed = removedQmlCookieMap.value("removed").toBool();
|
|
QCOMPARE(removedQmlCookie->property("name").toString(), "Example");
|
|
QCOMPARE(removed, true);
|
|
|
|
QSignalSpy cookieRemoveSpy(mApp->cookieJar(), &CookieJar::cookieRemoved);
|
|
m_testHelper.evaluate("Falkon.Cookies.remove({"
|
|
" name: 'Hello',"
|
|
" url: '.mydomain.com',"
|
|
"})");
|
|
QTRY_COMPARE(cookieRemoveSpy.count(), 1);
|
|
netCookie = qvariant_cast<QNetworkCookie>(cookieRemoveSpy.at(0).at(0));
|
|
QCOMPARE(netCookie.name(), "Hello");
|
|
}
|
|
|
|
void QmlCookiesApiTest::testCookieGet()
|
|
{
|
|
QDateTime current = QDateTime::currentDateTime();
|
|
QSignalSpy cookieAddSpy(mApp->cookieJar(), &CookieJar::cookieAdded);
|
|
|
|
QNetworkCookie netCookie_1;
|
|
netCookie_1.setName(QString("Apple").toLocal8Bit());
|
|
netCookie_1.setDomain(".apple-domain.com");
|
|
netCookie_1.setExpirationDate(current.addSecs(60));
|
|
mApp->webProfile()->cookieStore()->setCookie(netCookie_1);
|
|
|
|
QNetworkCookie netCookie_2;
|
|
netCookie_2.setName(QString("Mango").toLocal8Bit());
|
|
netCookie_2.setDomain(".mango-domain.com");
|
|
netCookie_2.setExpirationDate(current.addSecs(120));
|
|
mApp->webProfile()->cookieStore()->setCookie(netCookie_2);
|
|
|
|
QNetworkCookie netCookie_3;
|
|
netCookie_3.setName(QString("Mango").toLocal8Bit());
|
|
netCookie_3.setDomain(".yet-another-mango-domain.com");
|
|
netCookie_3.setExpirationDate(current.addSecs(180));
|
|
mApp->webProfile()->cookieStore()->setCookie(netCookie_3);
|
|
|
|
QTRY_COMPARE(cookieAddSpy.count(), 3);
|
|
|
|
QObject *mangoCookie = m_testHelper.evaluateQObject("Falkon.Cookies.get({"
|
|
" name: 'Mango',"
|
|
" url: '.mango-domain.com'"
|
|
"})");
|
|
QVERIFY(mangoCookie);
|
|
QCOMPARE(mangoCookie->property("name").toString(), "Mango");
|
|
// FIXME: Here current.addSecs differes from expirationDate by some ms
|
|
// a solution is to convert both to string, but this is not the best solution
|
|
QCOMPARE(mangoCookie->property("expirationDate").toDateTime().toString(), current.addSecs(120).toString());
|
|
|
|
QList<QVariant> mangoCookies = m_testHelper.evaluate("Falkon.Cookies.getAll({name: 'Mango'})").toVariant().toList();
|
|
QCOMPARE(mangoCookies.length(), 2);
|
|
}
|
|
|
|
FALKONTEST_MAIN(QmlCookiesApiTest)
|