function ThemeTest::testThemeSuggestions

You are here

8 ThemeTest.php ThemeTest::testThemeSuggestions()

Test function theme_get_suggestions() for SA-CORE-2009-003.

File

core/modules/system/lib/Drupal/system/Tests/Theme/ThemeTest.php, line 81
Definition of Drupal\system\Tests\Theme\ThemeTest.

Namespace

Drupal\system\Tests\Theme

Class

ThemeTest
Tests low-level theme functions.

Code

function testThemeSuggestions() {
  // Set the front page as something random otherwise the CLI
  // test runner fails.
  \Drupal::config('system.site')->set('page.front', 'nobody-home')->save();
  $args = array('node', '1', 'edit');
  $suggestions = theme_get_suggestions($args, 'page');
  $this->assertEqual($suggestions, array('page__node', 'page__node__%', 'page__node__1', 'page__node__edit'), 'Found expected node edit page suggestions');
  // Check attack vectors.
  $args = array('node', '\\1');
  $suggestions = theme_get_suggestions($args, 'page');
  $this->assertEqual($suggestions, array('page__node', 'page__node__%', 'page__node__1'), 'Removed invalid \\ from suggestions');
  $args = array('node', '1/');
  $suggestions = theme_get_suggestions($args, 'page');
  $this->assertEqual($suggestions, array('page__node', 'page__node__%', 'page__node__1'), 'Removed invalid / from suggestions');
  $args = array('node', "1\0");
  $suggestions = theme_get_suggestions($args, 'page');
  $this->assertEqual($suggestions, array('page__node', 'page__node__%', 'page__node__1'), 'Removed invalid \\0 from suggestions');
  // Define path with hyphens to be used to generate suggestions.
  $args = array('node', '1', 'hyphen-path');
  $result = array('page__node', 'page__node__%', 'page__node__1', 'page__node__hyphen_path');
  $suggestions = theme_get_suggestions($args, 'page');
  $this->assertEqual($suggestions, $result, 'Found expected page suggestions for paths containing hyphens.');
}