function EntityFilteringThemeTest::setUp

Same name and namespace in other branches
  1. 11.x core/modules/system/tests/src/Functional/Theme/EntityFilteringThemeTest.php \Drupal\Tests\system\Functional\Theme\EntityFilteringThemeTest::setUp()
  2. 9 core/modules/system/tests/src/Functional/Theme/EntityFilteringThemeTest.php \Drupal\Tests\system\Functional\Theme\EntityFilteringThemeTest::setUp()
  3. 8.9.x core/modules/system/tests/src/Functional/Theme/EntityFilteringThemeTest.php \Drupal\Tests\system\Functional\Theme\EntityFilteringThemeTest::setUp()

Overrides BrowserTestBase::setUp

File

core/modules/system/tests/src/Functional/Theme/EntityFilteringThemeTest.php, line 84

Class

EntityFilteringThemeTest
Tests XSS filtering for themed output for each entity type in all themes.

Namespace

Drupal\Tests\system\Functional\Theme

Code

protected function setUp() : void {
  parent::setUp();
  // Install all available non-testing themes.
  $listing = new ExtensionDiscovery(\Drupal::root());
  $this->themes = $listing->scan('theme', FALSE);
  /** @var \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler */
  $theme_data = \Drupal::service('extension.list.theme')->reset()
    ->getList();
  foreach (array_keys($this->themes) as $theme) {
    // Skip obsolete and deprecated themes.
    $info = $theme_data[$theme]->info;
    if ($info[ExtensionLifecycle::LIFECYCLE_IDENTIFIER] === ExtensionLifecycle::OBSOLETE || $info[ExtensionLifecycle::LIFECYCLE_IDENTIFIER] === ExtensionLifecycle::DEPRECATED) {
      unset($this->themes[$theme]);
    }
  }
  \Drupal::service('theme_installer')->install(array_keys($this->themes));
  // Create a test user.
  $this->user = $this->drupalCreateUser([
    'access content',
    'access user profiles',
  ]);
  $this->user->name = $this->xssLabel;
  $this->user
    ->save();
  $this->drupalLogin($this->user);
  // Create a test term.
  $this->term = Term::create([
    'name' => $this->xssLabel,
    'vid' => 1,
  ]);
  $this->term
    ->save();
  $this->createContentType([
    'type' => 'article',
  ]);
  // Add a comment field.
  $this->addDefaultCommentField('node', 'article', 'comment', CommentItemInterface::OPEN);
  // Create a test node tagged with the test term.
  $this->node = $this->drupalCreateNode([
    'title' => $this->xssLabel,
    'type' => 'article',
    'promote' => NodeInterface::PROMOTED,
    'field_tags' => [
      [
        'target_id' => $this->term
          ->id(),
      ],
    ],
  ]);
  // Create a test comment on the test node.
  $this->comment = Comment::create([
    'entity_id' => $this->node
      ->id(),
    'entity_type' => 'node',
    'field_name' => 'comment',
    'status' => CommentInterface::PUBLISHED,
    'subject' => $this->xssLabel,
    'comment_body' => [
      $this->randomMachineName(),
    ],
  ]);
  $this->comment
    ->save();
}

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