function FilterUnitTestCase::testNoFollowFilter

Tests the spam deterrent.

File

modules/filter/filter.test, line 1231

Class

FilterUnitTestCase
Unit tests for core filters.

Code

function testNoFollowFilter() {
  // Setup dummy filter object.
  $filter = new stdClass();
  $filter->settings = array(
    'allowed_html' => '<a>',
    'filter_html_help' => 1,
    'filter_html_nofollow' => 1,
  );
  // Test if the rel="nofollow" attribute is added, even if we try to prevent
  // it.
  $f = _filter_html('<a href="http://www.example.com/">text</a>', $filter);
  $this->assertNormalized($f, 'rel="nofollow"', 'Spam deterrent -- no evasion.');
  $f = _filter_html('<A href="http://www.example.com/">text</a>', $filter);
  $this->assertNormalized($f, 'rel="nofollow"', 'Spam deterrent evasion -- capital A.');
  $f = _filter_html("<a/href=\"http://www.example.com/\">text</a>", $filter);
  $this->assertNormalized($f, 'rel="nofollow"', 'Spam deterrent evasion -- non whitespace character after tag name.');
  $f = _filter_html("<\x00a\x00 href=\"http://www.example.com/\">text</a>", $filter);
  $this->assertNormalized($f, 'rel="nofollow"', 'Spam deterrent evasion -- some nulls.');
  $f = _filter_html('<a href="http://www.example.com/" rel="follow">text</a>', $filter);
  $this->assertNoNormalized($f, 'rel="follow"', 'Spam deterrent evasion -- with rel set - rel="follow" removed.');
  $this->assertNormalized($f, 'rel="nofollow"', 'Spam deterrent evasion -- with rel set - rel="nofollow" added.');
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.