diff --git a/test/StatifyBlacklistTest.php b/test/StatifyBlacklistTest.php new file mode 100644 index 0000000..0299e21 --- /dev/null +++ b/test/StatifyBlacklistTest.php @@ -0,0 +1,95 @@ + 0, + 'cron_referer' => 0, + 'referer' => array( + 'example.com' => 0, + 'example.net' => 1 + ) + ); + + /* No multisite */ + StatifyBlacklist::$multisite = false; + + /* No referer */ + unset( $_SERVER['HTTP_REFERER'] ); + $this->assertFalse( StatifyBlacklist::apply_blacklist_filter() ); + /* Non-blacklisted referer */ + $_SERVER['HTTP_REFERER'] = 'http://example.org'; + $this->assertFalse( StatifyBlacklist::apply_blacklist_filter() ); + /* Blacklisted referer */ + $_SERVER['HTTP_REFERER'] = 'http://example.com'; + $this->assertFalse( StatifyBlacklist::apply_blacklist_filter() ); + /* Blacklisted referer with path */ + $_SERVER['HTTP_REFERER'] = 'http://example.net/foo/bar.html'; + $this->assertFalse( StatifyBlacklist::apply_blacklist_filter() ); + + /* Activate filter and run tests again */ + StatifyBlacklist::$_options['active_referer'] = 1; + + unset( $_SERVER['HTTP_REFERER'] ); + $this->assertFalse( StatifyBlacklist::apply_blacklist_filter() ); + + $_SERVER['HTTP_REFERER'] = 'http://example.org'; + $this->assertFalse( StatifyBlacklist::apply_blacklist_filter() ); + + $_SERVER['HTTP_REFERER'] = 'http://example.com'; + $this->assertTrue( StatifyBlacklist::apply_blacklist_filter() ); + + $_SERVER['HTTP_REFERER'] = 'http://example.net/foo/bar.html'; + $this->assertTrue( StatifyBlacklist::apply_blacklist_filter() ); + } + + public function testRegexFilter() { + /* Prepare Options: 2 regular expressions */ + StatifyBlacklist::$_options = array( + 'active_referer' => 1, + 'cron_referer' => 0, + 'referer' => array( + 'example.[a-z]+' => 0, + 'test' => 1 + ), + 'referer_regexp' => 1 + ); + + /* No multisite */ + StatifyBlacklist::$multisite = false; + + /* No referer */ + unset( $_SERVER['HTTP_REFERER'] ); + $this->assertFalse( StatifyBlacklist::apply_blacklist_filter() ); + /* Non-blacklisted referer */ + $_SERVER['HTTP_REFERER'] = 'http://not.evil'; + $this->assertFalse( StatifyBlacklist::apply_blacklist_filter() ); + /* Blacklisted referer */ + $_SERVER['HTTP_REFERER'] = 'http://example.com'; + $this->assertTrue( StatifyBlacklist::apply_blacklist_filter() ); + /* Blacklisted referer with path */ + $_SERVER['HTTP_REFERER'] = 'http://foobar.net/test/me'; + $this->assertTrue( StatifyBlacklist::apply_blacklist_filter() ); + /* Matching both */ + $_SERVER['HTTP_REFERER'] = 'http://example.net/test/me'; + $this->assertTrue( StatifyBlacklist::apply_blacklist_filter() ); + /* Mathinc with wrong case */ + $_SERVER['HTTP_REFERER'] = 'http://eXaMpLe.NeT/tEsT/mE'; + $this->assertFalse( StatifyBlacklist::apply_blacklist_filter() ); + + /* Set RegExp filter to case insensitive */ + StatifyBlacklist::$_options['referer_regexp'] = 2; + $this->assertTrue( StatifyBlacklist::apply_blacklist_filter() ); + } + +} \ No newline at end of file