diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-07-05 19:37:05 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-07-05 19:37:05 +0200 |
commit | aaed4ebc642d95dfb3cddab4fad196e870077bcf (patch) | |
tree | 1534dccf6ffd1b6ae3f4d85b13201c0d474c3f78 /test/urlfilter | |
parent | Add filter.header (diff) | |
download | smolbote-aaed4ebc642d95dfb3cddab4fad196e870077bcf.tar.xz |
Add web/urlfilter
Diffstat (limited to 'test/urlfilter')
-rw-r--r-- | test/urlfilter/urlfiltertest.cpp | 88 | ||||
-rw-r--r-- | test/urlfilter/urlfiltertest.h | 41 |
2 files changed, 129 insertions, 0 deletions
diff --git a/test/urlfilter/urlfiltertest.cpp b/test/urlfilter/urlfiltertest.cpp new file mode 100644 index 0000000..f7ae0fb --- /dev/null +++ b/test/urlfilter/urlfiltertest.cpp @@ -0,0 +1,88 @@ +/* ============================================================ +* Falkon - Qt web browser +* Copyright (C) 2013-2018 David Rosca <nowrep@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 "urlfiltertest.h" +#include <QtTest/QtTest> +#include <QUrl> + +#include <QJsonObject> + +void UrlFilterTest::matchingDomain_data() +{ + filterDomain.addDomain("example.com"); + filterDomain.addDomain("second-domain.org"); + + // Test adapted from Falkon + QTest::addColumn<QString>("domain"); + QTest::addColumn<bool>("result"); + + // description site domain result + QTest::newRow("missing tld") << "example" << false; + QTest::newRow("different tld") << "example.org" << false; + QTest::newRow("exact match") << "example.com" << true; + QTest::newRow("exact match 2") << "second-domain.org" << true; + QTest::newRow("subdomain match") << "www.example.com" << true; + QTest::newRow("subdomain match") << "www.test.example.com" << true; + QTest::newRow("similar domain") << "anotherexample.com" << false; + QTest::newRow("empty domain") << "" << false; +} + +void UrlFilterTest::matchingDomain() +{ + QFETCH(QString, domain); + QFETCH(bool, result); + + filterDomain.setType(FilterDomain::Whitelist); + QCOMPARE(filterDomain.hasMatch(domain), result); + filterDomain.setType(FilterDomain::Blacklist); + QCOMPARE(filterDomain.hasMatch(domain), !result); + filterDomain.setType(FilterDomain::WhitelistAll); + QCOMPARE(filterDomain.hasMatch(domain), true); + filterDomain.setType(FilterDomain::BlacklistAll); + QCOMPARE(filterDomain.hasMatch(domain), false); +} + +void UrlFilterTest::matchingType_data() +{ + QJsonObject j; + j.insert("action", "Blacklist"); + j.insert("contains", "annoying-ad.banner"); + + filterRule = new FilterRule(j); + Q_ASSERT(filterRule->isValid()); + + QTest::addColumn<QString>("requestUrl"); + QTest::addColumn<int>("resourceType"); + QTest::addColumn<bool>("result"); + + QTest::newRow("contains 1") << "http://example.com/ads/annoying-ad.banner/something" << static_cast<int>(QWebEngineUrlRequestInfo::ResourceTypeImage) << true; + QTest::newRow("contains 2") << "http://example.com/ads/annoying-ad.banner/something" << static_cast<int>(QWebEngineUrlRequestInfo::ResourceTypeMedia) << false; + QTest::newRow("contains 3") << "http://example.com/ads/banner" << static_cast<int>(QWebEngineUrlRequestInfo::ResourceTypeImage) << false; + QTest::newRow("blank") << "" << static_cast<int>(QWebEngineUrlRequestInfo::ResourceTypeUnknown) << false; +} + +void UrlFilterTest::matchingType() +{ + QFETCH(QString, requestUrl); + QFETCH(int, resourceType); + QFETCH(bool, result); + + QCOMPARE(filterRule->matchRequestUrl(requestUrl, static_cast<QWebEngineUrlRequestInfo::ResourceType>(resourceType)), result); +} + +QTEST_GUILESS_MAIN(UrlFilterTest) diff --git a/test/urlfilter/urlfiltertest.h b/test/urlfilter/urlfiltertest.h new file mode 100644 index 0000000..1b158e8 --- /dev/null +++ b/test/urlfilter/urlfiltertest.h @@ -0,0 +1,41 @@ +/* ============================================================ +* Falkon - Qt web browser +* Copyright (C) 2013-2018 David Rosca <nowrep@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/>. +* ============================================================ */ +#ifndef URLFILTER_TEST_H +#define URLFILTER_TEST_H + +#include "urlfilter/filterrule.h" +#include "urlfilter/filterdomain.h" +#include <QObject> + +class UrlFilterTest : public QObject +{ + Q_OBJECT + +private slots: + void matchingDomain_data(); + void matchingDomain(); + + void matchingType_data(); + void matchingType(); + +private: + FilterDomain filterDomain; + FilterRule *filterRule; +}; + +#endif // URLFILTER_TEST_H |