theme.test in SimpleTest 7
Tests for the theme API.
File
tests/theme.testView source
<?php
/**
* @file
* Tests for the theme API.
*/
/**
* Unit tests for the Theme API.
*/
class TemplateUnitTest extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Theme API',
'description' => 'Test low-level theme template functions.',
'group' => 'Theme',
);
}
/**
* Test function template_page_suggestions() for SA-CORE-2009-003.
*/
function testTemplateSuggestions() {
// 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 = template_page_suggestions($args, 'page');
$this
->assertEqual($suggestions, array(
'page-node',
'page-node-%',
'page-node-1',
'page-node-edit',
), t('Found expected node edit page template suggestions'));
// Check attack vectors.
$args = array(
'node',
'\\1',
);
$suggestions = template_page_suggestions($args, 'page');
$this
->assertEqual($suggestions, array(
'page-node',
'page-node-%',
'page-node-1',
), t('Removed invalid \\ from template suggestions'));
$args = array(
'node',
'1/',
);
$suggestions = template_page_suggestions($args, 'page');
$this
->assertEqual($suggestions, array(
'page-node',
'page-node-%',
'page-node-1',
), t('Removed invalid / from template suggestions'));
$args = array(
'node',
"1\0",
);
$suggestions = template_page_suggestions($args, 'page');
$this
->assertEqual($suggestions, array(
'page-node',
'page-node-%',
'page-node-1',
), t('Removed invalid \\0 from template suggestions'));
// Tests for drupal_discover_template()
$suggestions = array(
'page',
);
$this
->assertEqual(drupal_discover_template(array(
'themes/garland',
), $suggestions), 'themes/garland/page.tpl.php', t('Safe template discovered'));
$suggestions = array(
'page',
);
$this
->assertEqual(drupal_discover_template(array(
'themes/garland',
), $suggestions, '\\.tpl.php'), 'themes/garland/page.tpl.php', t('Unsafe extension fixed'));
$suggestions = array(
'page\\',
);
$this
->assertEqual(drupal_discover_template(array(
'themes/garland',
), $suggestions), 'themes/garland/page.tpl.php', t('Unsafe template suggestion fixed'));
$suggestions = array(
'page/',
);
$this
->assertEqual(drupal_discover_template(array(
'themes/garland',
), $suggestions), 'themes/garland/page.tpl.php', t('Unsafe template suggestion fixed'));
$suggestions = array(
"page\0",
);
$this
->assertEqual(drupal_discover_template(array(
'themes/garland',
), $suggestions), 'themes/garland/page.tpl.php', t('Unsafe template suggestion fixed'));
}
}
/**
* Unit tests for theme_table().
*/
class ThemeTableUnitTest extends DrupalWebTestCase {
public static function getInfo() {
return array(
'name' => 'Theme Table',
'description' => 'Tests built-in theme functions.',
'group' => 'Theme',
);
}
/**
* Tableheader.js provides 'sticky' table headers, and is included by default.
*/
function testThemeTableStickyHeaders() {
$header = array(
'one',
'two',
'three',
);
$rows = array(
array(
1,
2,
3,
),
array(
4,
5,
6,
),
array(
7,
8,
9,
),
);
$this->content = theme('table', array(
'header' => $header,
'rows' => $rows,
));
$js = drupal_add_js();
$this
->assertTrue(isset($js['misc/tableheader.js']), t('tableheader.js was included when $sticky = TRUE.'));
$this
->assertRaw('sticky-enabled', t('Table has a class of sticky-enabled when $sticky = TRUE.'));
drupal_static_reset('drupal_add_js');
}
/**
* If $sticky is FALSE, no tableheader.js should be included.
*/
function testThemeTableNoStickyHeaders() {
$header = array(
'one',
'two',
'three',
);
$rows = array(
array(
1,
2,
3,
),
array(
4,
5,
6,
),
array(
7,
8,
9,
),
);
$attributes = array();
$caption = NULL;
$colgroups = array();
$this->content = theme('table', array(
'header' => $header,
'rows' => $rows,
'attributes' => $attributes,
'caption' => $caption,
'colgroups' => $colgroups,
'sticky' => FALSE,
));
$js = drupal_add_js();
$this
->assertFalse(isset($js['misc/tableheader.js']), t('tableheader.js was not included because $sticky = FALSE.'));
$this
->assertNoRaw('sticky-enabled', t('Table does not have a class of sticky-enabled because $sticky = FALSE.'));
drupal_static_reset('drupal_add_js');
}
}
Classes
Name | Description |
---|---|
TemplateUnitTest | Unit tests for the Theme API. |
ThemeTableUnitTest | Unit tests for theme_table(). |