summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/SpamBlacklist/tests/phpunit/SpamBlacklistTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/SpamBlacklist/tests/phpunit/SpamBlacklistTest.php')
-rw-r--r--www/wiki/extensions/SpamBlacklist/tests/phpunit/SpamBlacklistTest.php91
1 files changed, 91 insertions, 0 deletions
diff --git a/www/wiki/extensions/SpamBlacklist/tests/phpunit/SpamBlacklistTest.php b/www/wiki/extensions/SpamBlacklist/tests/phpunit/SpamBlacklistTest.php
new file mode 100644
index 00000000..7558cfda
--- /dev/null
+++ b/www/wiki/extensions/SpamBlacklist/tests/phpunit/SpamBlacklistTest.php
@@ -0,0 +1,91 @@
+<?php
+
+/**
+ * @group SpamBlacklist
+ */
+class SpamBlacklistTest extends MediaWikiTestCase {
+ /**
+ * @var SpamBlacklist
+ */
+ protected $spamFilter;
+
+ /**
+ * Spam blacklist regexes. Examples taken from:
+ *
+ * @see http://meta.wikimedia.org/wiki/Spam_blacklist
+ * @see http://en.wikipedia.org/wiki/MediaWiki:Spam-blacklist
+ *
+ * via Flow extension
+ *
+ * @var array
+ */
+ protected $blacklist = [ '\b01bags\.com\b', 'sytes\.net' ];
+
+ /**
+ * Spam whitelist regexes. Examples taken from:
+ *
+ * @see http://en.wikipedia.org/wiki/MediaWiki:Spam-whitelist
+ *
+ * via Flow extension
+ *
+ * @var array
+ */
+ protected $whitelist = [ 'a5b\.sytes\.net' ];
+
+ public function spamProvider() {
+ return [
+ 'no spam' => [
+ [ 'https://example.com' ],
+ false,
+ ],
+ 'revision with spam, with additional non-spam' => [
+ [ 'https://foo.com', 'http://01bags.com', 'http://bar.com' ],
+ [ '01bags.com' ],
+ ],
+
+ 'revision with spam using full width stop normalization' => [
+ [ 'http://01bags.com' ],
+ [ '01bags.com' ],
+ ],
+
+ 'revision with domain blacklisted as spam, but subdomain whitelisted' => [
+ [ 'http://a5b.sytes.net' ],
+ false,
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider spamProvider
+ */
+ public function testSpam( $links, $expected ) {
+ $returnValue = $this->spamFilter->filter( $links, Title::newMainPage() );
+ $this->assertEquals( $expected, $returnValue );
+ }
+
+ protected function setUp() {
+ parent::setUp();
+
+ // create spam filter
+ $this->spamFilter = new SpamBlacklist;
+
+ $this->setMwGlobals( 'wgBlacklistSettings', [
+ 'files' => [],
+ ] );
+
+ \MessageCache::singleton()->enable();
+ $this->insertPage( 'MediaWiki:Spam-blacklist', implode( "\n", $this->blacklist ) );
+ $this->insertPage( 'MediaWiki:Spam-whitelist', implode( "\n", $this->whitelist ) );
+
+ // That only works if the spam blacklist is really reset
+ $instance = BaseBlacklist::getInstance( 'spam' );
+ $reflProp = new \ReflectionProperty( $instance, 'regexes' );
+ $reflProp->setAccessible( true );
+ $reflProp->setValue( $instance, false );
+ }
+
+ protected function tearDown() {
+ \MessageCache::singleton()->disable();
+ parent::tearDown();
+ }
+}