/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: git://neueland.iserlohn-fortress.net/smolbote.git * * SPDX-License-Identifier: GPL-3.0 */ #include "filtertest.h" #include #include "../filterrule.h" #include FilterTest::FilterTest(QObject *parent) : QObject(parent) { } void FilterTest::initTestCase() { addressRule = new FilterRule("/banner/*/img^"); QVERIFY(addressRule->isValid() == true); QVERIFY(addressRule->isException() == false); domainRule = new FilterRule("||ads.example.com^"); QVERIFY(domainRule->isValid() == true); QVERIFY(domainRule->isException() == false); exactAddressRule = new FilterRule("|http://example.com/|"); QVERIFY(exactAddressRule->isValid() == true); QVERIFY(exactAddressRule->isException() == false); } void FilterTest::testAddressBlock() { // This rule blocks: QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner/foo/img")) == true); QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner/foo/bar/img?param")) == true); QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner//img/foo")) == true); // This rule doesn't block: QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner/img")) == false); QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner/foo/imgraph")) == false); QVERIFY(addressRule->shouldBlock(QUrl("http://example.com/banner/foo/img.gif")) == false); } void FilterTest::testDomainBlock() { // This rule blocks: QVERIFY(domainRule->shouldBlock(QUrl("http://ads.example.com/foo.gif")) == true); QVERIFY(domainRule->shouldBlock(QUrl("http://server1.ads.example.com/foo.gif")) == true); QVERIFY(domainRule->shouldBlock(QUrl("https://ads.example.com:8000/")) == true); // This rule doesn't block: QVERIFY(domainRule->shouldBlock(QUrl("http://ads.example.com.ua/foo.gif")) == false); QVERIFY(domainRule->shouldBlock(QUrl("http://example.com/redirect/http://ads.example.com/")) == false); } void FilterTest::testExactAddressBlock() { // This rule blocks: QVERIFY(exactAddressRule->shouldBlock(QUrl("http://example.com/")) == true); // This rule doesn't block: QVERIFY(exactAddressRule->shouldBlock(QUrl("http://example.com/foo.gif")) == false); QVERIFY(exactAddressRule->shouldBlock(QUrl("http://example.info/redirect/http://example.com/")) == false); } void FilterTest::cleanupTestCase() { delete addressRule; }