function ThemeTest::testThemeSuggestions in Zircon Profile 8
Same name and namespace in other branches
- 8.0 core/modules/system/src/Tests/Theme/ThemeTest.php \Drupal\system\Tests\Theme\ThemeTest::testThemeSuggestions()
Test function theme_get_suggestions() for SA-CORE-2009-003.
File
- core/
modules/ system/ src/ Tests/ Theme/ ThemeTest.php, line 87 - Contains \Drupal\system\Tests\Theme\ThemeTest.
Class
- ThemeTest
- Tests low-level theme functions.
Namespace
Drupal\system\Tests\ThemeCode
function testThemeSuggestions() {
// Set the front page as something random otherwise the CLI
// test runner fails.
$this
->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.');
}