From aaed4ebc642d95dfb3cddab4fad196e870077bcf Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 5 Jul 2018 19:37:05 +0200 Subject: Add web/urlfilter --- test/urlfilter/urlfiltertest.cpp | 88 ++++++++++++++++++++++++++++++++++++++++ test/urlfilter/urlfiltertest.h | 41 +++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 test/urlfilter/urlfiltertest.cpp create mode 100644 test/urlfilter/urlfiltertest.h (limited to 'test/urlfilter') 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 +* +* 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 . +* ============================================================ */ + +#include "urlfiltertest.h" +#include +#include + +#include + +void UrlFilterTest::matchingDomain_data() +{ + filterDomain.addDomain("example.com"); + filterDomain.addDomain("second-domain.org"); + + // Test adapted from Falkon + QTest::addColumn("domain"); + QTest::addColumn("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("requestUrl"); + QTest::addColumn("resourceType"); + QTest::addColumn("result"); + + QTest::newRow("contains 1") << "http://example.com/ads/annoying-ad.banner/something" << static_cast(QWebEngineUrlRequestInfo::ResourceTypeImage) << true; + QTest::newRow("contains 2") << "http://example.com/ads/annoying-ad.banner/something" << static_cast(QWebEngineUrlRequestInfo::ResourceTypeMedia) << false; + QTest::newRow("contains 3") << "http://example.com/ads/banner" << static_cast(QWebEngineUrlRequestInfo::ResourceTypeImage) << false; + QTest::newRow("blank") << "" << static_cast(QWebEngineUrlRequestInfo::ResourceTypeUnknown) << false; +} + +void UrlFilterTest::matchingType() +{ + QFETCH(QString, requestUrl); + QFETCH(int, resourceType); + QFETCH(bool, result); + + QCOMPARE(filterRule->matchRequestUrl(requestUrl, static_cast(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 +* +* 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 . +* ============================================================ */ +#ifndef URLFILTER_TEST_H +#define URLFILTER_TEST_H + +#include "urlfilter/filterrule.h" +#include "urlfilter/filterdomain.h" +#include + +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 -- cgit v1.2.1