/* ============================================================ * 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); QCOMPARE(filterDomain.hasMatch(domain), result); } 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)