function ThemeTestCase::testThemeSuggestions in Drupal 7
Test function theme_get_suggestions() for SA-CORE-2009-003.
File
- modules/
simpletest/ tests/ theme.test, line 30 - Tests for the theme API.
Class
- ThemeTestCase
- Unit tests for the Theme API.
Code
function testThemeSuggestions() {
// Set the front page as something random otherwise the CLI
// test runner fails.
variable_set('site_frontpage', 'nobody-home');
$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.');
}