Same name and namespace in other branches
  1. 8.9.x core/modules/filter/tests/src/Kernel/FilterAPITest.php \Drupal\Tests\filter\Kernel\FilterAPITest::testCheckMarkupFilterSubset()
  2. 9 core/modules/filter/tests/src/Kernel/FilterAPITest.php \Drupal\Tests\filter\Kernel\FilterAPITest::testCheckMarkupFilterSubset()

Tests the ability to apply only a subset of filters.

File

core/modules/filter/tests/src/Kernel/FilterAPITest.php, line 69

Class

FilterAPITest
Tests the behavior of the API of the Filter module.

Namespace

Drupal\Tests\filter\Kernel

Code

public function testCheckMarkupFilterSubset() {
  $text = "Text with <marquee>evil content and</marquee> a URL: https://www.drupal.org!";
  $expected_filtered_text = "Text with evil content and a URL: <a href=\"https://www.drupal.org\">https://www.drupal.org</a>!";
  $expected_filter_text_without_html_generators = "Text with evil content and a URL: https://www.drupal.org!";
  $actual_filtered_text = check_markup($text, 'filtered_html', '', []);
  $this
    ->assertSame($expected_filtered_text, (string) $actual_filtered_text, 'Expected filter result.');
  $actual_filtered_text_without_html_generators = check_markup($text, 'filtered_html', '', [
    FilterInterface::TYPE_MARKUP_LANGUAGE,
  ]);
  $this
    ->assertSame($expected_filter_text_without_html_generators, (string) $actual_filtered_text_without_html_generators, 'Expected filter result when skipping FilterInterface::TYPE_MARKUP_LANGUAGE filters.');

  // Related to @see FilterSecurityTest.php/testSkipSecurityFilters(), but
  // this check focuses on the ability to filter multiple filter types at once.
  // Drupal core only ships with these two types of filters, so this is the
  // most extensive test possible.
  $actual_filtered_text_without_html_generators = check_markup($text, 'filtered_html', '', [
    FilterInterface::TYPE_HTML_RESTRICTOR,
    FilterInterface::TYPE_MARKUP_LANGUAGE,
  ]);
  $this
    ->assertSame($expected_filter_text_without_html_generators, (string) $actual_filtered_text_without_html_generators, 'Expected filter result when skipping FilterInterface::TYPE_MARKUP_LANGUAGE filters, even when trying to disable filters of the FilterInterface::TYPE_HTML_RESTRICTOR type.');
}