Changeset View
Changeset View
Standalone View
Standalone View
autotests/qml/qmlcookiesapitest.cpp
- This file was added.
1 | /* ============================================================ | ||||
---|---|---|---|---|---|
2 | * Falkon - Qt web browser | ||||
3 | * Copyright (C) 2018 Anmol Gautam <tarptaeya@gmail.com> | ||||
4 | * | ||||
5 | * This program is free software: you can redistribute it and/or modify | ||||
6 | * it under the terms of the GNU General Public License as published by | ||||
7 | * the Free Software Foundation, either version 3 of the License, or | ||||
8 | * (at your option) any later version. | ||||
9 | * | ||||
10 | * This program is distributed in the hope that it will be useful, | ||||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
13 | * GNU General Public License for more details. | ||||
14 | * | ||||
15 | * You should have received a copy of the GNU General Public License | ||||
16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||||
17 | * ============================================================ */ | ||||
18 | #include "qmlcookiesapitest.h" | ||||
19 | #include "autotests.h" | ||||
20 | #include "qmltesthelper.h" | ||||
21 | #include "mainapplication.h" | ||||
22 | #include "cookiejar.h" | ||||
23 | #include "qml/api/cookies/qmlcookie.h" | ||||
24 | #include <QWebEngineProfile> | ||||
25 | | ||||
26 | void QmlCookiesApiTest::initTestCase() | ||||
27 | { | ||||
28 | } | ||||
29 | | ||||
30 | void QmlCookiesApiTest::cleanupTestCase() | ||||
31 | { | ||||
32 | } | ||||
33 | | ||||
34 | void QmlCookiesApiTest::testCookieAdditionRemoval() | ||||
35 | { | ||||
36 | QSignalSpy cookieAddSpy(mApp->cookieJar(), &CookieJar::cookieAdded); | ||||
37 | m_testHelper.evaluate("Falkon.Cookies.set({" | ||||
38 | " name: 'Example'," | ||||
39 | " url: '.example.com'," | ||||
40 | " expirationDate: Date.now() + 60*1000" | ||||
41 | "})"); | ||||
42 | QTRY_COMPARE(cookieAddSpy.count(), 1); | ||||
43 | QNetworkCookie netCookie = qvariant_cast<QNetworkCookie>(cookieAddSpy.at(0).at(0)); | ||||
44 | QCOMPARE(netCookie.name(), "Example"); | ||||
45 | QObject *object = m_testHelper.evaluateQObject("Falkon.Cookies"); | ||||
46 | QVERIFY(object); | ||||
47 | QSignalSpy qmlCookieSpy(object, SIGNAL(changed(QVariantMap))); | ||||
48 | QNetworkCookie anotherNetCookie; | ||||
49 | anotherNetCookie.setName(QString("Hello").toLocal8Bit()); | ||||
50 | anotherNetCookie.setDomain(".mydomain.com"); | ||||
51 | anotherNetCookie.setExpirationDate(QDateTime::currentDateTime().addSecs(60)); | ||||
52 | mApp->webProfile()->cookieStore()->setCookie(anotherNetCookie); | ||||
53 | QTRY_COMPARE(qmlCookieSpy.count(), 1); | ||||
54 | QVariantMap addedQmlCookieMap = QVariant(qmlCookieSpy.at(0).at(0)).toMap(); | ||||
55 | QObject *addedQmlCookie = qvariant_cast<QObject*>(addedQmlCookieMap.value("cookie")); | ||||
56 | bool removed = addedQmlCookieMap.value("removed").toBool(); | ||||
57 | QCOMPARE(addedQmlCookie->property("name").toString(), "Hello"); | ||||
58 | QCOMPARE(removed, false); | ||||
59 | | ||||
60 | mApp->webProfile()->cookieStore()->deleteCookie(netCookie); | ||||
61 | QTRY_COMPARE(qmlCookieSpy.count(), 2); | ||||
62 | QVariantMap removedQmlCookieMap = QVariant(qmlCookieSpy.at(1).at(0)).toMap(); | ||||
63 | QObject *removedQmlCookie = qvariant_cast<QObject*>(removedQmlCookieMap.value("cookie")); | ||||
64 | removed = removedQmlCookieMap.value("removed").toBool(); | ||||
65 | QCOMPARE(removedQmlCookie->property("name").toString(), "Example"); | ||||
66 | QCOMPARE(removed, true); | ||||
67 | | ||||
68 | QSignalSpy cookieRemoveSpy(mApp->cookieJar(), &CookieJar::cookieRemoved); | ||||
69 | m_testHelper.evaluate("Falkon.Cookies.remove({" | ||||
70 | " name: 'Hello'," | ||||
71 | " url: '.mydomain.com'," | ||||
72 | "})"); | ||||
73 | QTRY_COMPARE(cookieRemoveSpy.count(), 1); | ||||
74 | netCookie = qvariant_cast<QNetworkCookie>(cookieRemoveSpy.at(0).at(0)); | ||||
75 | QCOMPARE(netCookie.name(), "Hello"); | ||||
76 | } | ||||
77 | | ||||
78 | void QmlCookiesApiTest::testCookieGet() | ||||
79 | { | ||||
80 | QDateTime current = QDateTime::currentDateTime(); | ||||
81 | QSignalSpy cookieAddSpy(mApp->cookieJar(), &CookieJar::cookieAdded); | ||||
82 | | ||||
83 | QNetworkCookie netCookie_1; | ||||
84 | netCookie_1.setName(QString("Apple").toLocal8Bit()); | ||||
85 | netCookie_1.setDomain(".apple-domain.com"); | ||||
86 | netCookie_1.setExpirationDate(current.addSecs(60)); | ||||
87 | mApp->webProfile()->cookieStore()->setCookie(netCookie_1); | ||||
88 | | ||||
89 | QNetworkCookie netCookie_2; | ||||
90 | netCookie_2.setName(QString("Mango").toLocal8Bit()); | ||||
91 | netCookie_2.setDomain(".mango-domain.com"); | ||||
92 | netCookie_2.setExpirationDate(current.addSecs(120)); | ||||
93 | mApp->webProfile()->cookieStore()->setCookie(netCookie_2); | ||||
94 | | ||||
95 | QNetworkCookie netCookie_3; | ||||
96 | netCookie_3.setName(QString("Mango").toLocal8Bit()); | ||||
97 | netCookie_3.setDomain(".yet-another-mango-domain.com"); | ||||
98 | netCookie_3.setExpirationDate(current.addSecs(180)); | ||||
99 | mApp->webProfile()->cookieStore()->setCookie(netCookie_3); | ||||
100 | | ||||
101 | QTRY_COMPARE(cookieAddSpy.count(), 3); | ||||
102 | | ||||
103 | QObject *mangoCookie = m_testHelper.evaluateQObject("Falkon.Cookies.get({" | ||||
104 | " name: 'Mango'," | ||||
105 | " url: '.mango-domain.com'" | ||||
106 | "})"); | ||||
107 | QVERIFY(mangoCookie); | ||||
108 | QCOMPARE(mangoCookie->property("name").toString(), "Mango"); | ||||
109 | // FIXME: Here current.addSecs differes from expirationDate by some ms | ||||
110 | // a solution is to convert both to string, but this is not the best solution | ||||
111 | QCOMPARE(mangoCookie->property("expirationDate").toDateTime().toString(), current.addSecs(120).toString()); | ||||
112 | | ||||
113 | QList<QVariant> mangoCookies = m_testHelper.evaluate("Falkon.Cookies.getAll({name: 'Mango'})").toVariant().toList(); | ||||
114 | QCOMPARE(mangoCookies.length(), 2); | ||||
115 | } | ||||
116 | | ||||
117 | FALKONTEST_MAIN(QmlCookiesApiTest) |