118 lines
3.8 KiB
Plaintext
118 lines
3.8 KiB
Plaintext
<?php
|
|
// $Id$
|
|
|
|
/**
|
|
* Base PHP test case class.
|
|
*/
|
|
class PHPTestCase extends DrupalWebTestCase {
|
|
|
|
/**
|
|
* Implementation of getInfo().
|
|
*/
|
|
function setUp() {
|
|
parent::setUp('php');
|
|
|
|
// Create and login admin user.
|
|
$admin_user = $this->drupalCreateUser(array('administer filters'));
|
|
$this->drupalLogin($admin_user);
|
|
|
|
// Confirm that the PHP filter is #3.
|
|
$this->drupalGet('admin/settings/filters/3');
|
|
$this->assertText('PHP code', t('On PHP code filter page.'));
|
|
}
|
|
|
|
/**
|
|
* Create a test node with PHP code in the body.
|
|
*
|
|
* @param stdObject User object to create node for.
|
|
* @return stdObject Node object.
|
|
*/
|
|
function createNodeWithCode($user) {
|
|
$node = $this->drupalCreateNode(array('uid' => $user->uid));
|
|
$edit = array();
|
|
$edit['body'] = '<?php print "SimpleTest PHP was executed!"; ?>';
|
|
$this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
|
|
$this->assertRaw(t('Page %title has been updated.', array('%title' => $node->title)), t('PHP code inserted into node.'));
|
|
return $node;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Tests to make sure the PHP filter actually evaluates PHP code when used.
|
|
*/
|
|
class PHPFitlerTestCase extends PHPTestCase {
|
|
/**
|
|
* Implementation of getInfo().
|
|
*/
|
|
function getInfo() {
|
|
return array(
|
|
'name' => t('PHP filter functionality'),
|
|
'description' => t('Make sure that PHP filter properly evaluates PHP code when enabled.'),
|
|
'group' => t('PHP'),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Make sure that the PHP filter evaluates PHP code when used.
|
|
*/
|
|
function testPHPFilter() {
|
|
// Setup PHP filter.
|
|
$edit = array();
|
|
$edit['roles[2]'] = TRUE; // Set authenticated users to have permission to use filter.
|
|
$this->drupalPost(NULL, $edit, 'Save configuration');
|
|
$this->assertText(t('The input format settings have been updated.'), t('PHP format available to authenticated users.'));
|
|
|
|
// Create node with PHP filter enabled.
|
|
$web_user = $this->drupalCreateUser(array('access content', 'create page content', 'edit own page content'));
|
|
$this->drupalLogin($web_user);
|
|
|
|
$node = $this->createNodeWithCode($web_user);
|
|
|
|
// Make sure that the PHP code shows up as text.
|
|
$this->assertText('print', t('PHP code is displayed.'));
|
|
|
|
// Change filter to PHP filter and see that PHP code is evaluated.
|
|
$edit = array();
|
|
$edit['body_format'] = 3;
|
|
$this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
|
|
$this->assertRaw(t('Page %title has been updated.', array('%title' => $node->title)), t('PHP code filter turned on.'));
|
|
|
|
// Make sure that the PHP code shows up as text.
|
|
$this->assertNoText('print', t('PHP code isn\'t displayed.'));
|
|
$this->assertText('SimpleTest PHP was executed!', t('PHP code has been evaluated.'));
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Tests to make sure access to the PHP filter is properly restricted.
|
|
*/
|
|
class PHPAccessTestCase extends PHPTestCase {
|
|
/**
|
|
* Implementation of getInfo().
|
|
*/
|
|
function getInfo() {
|
|
return array(
|
|
'name' => t('PHP filter access check'),
|
|
'description' => t('Make sure that users who don\'t have access to the PHP filter can\'t see it.'),
|
|
'group' => t('PHP'),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Make sure that user can't use the PHP filter when not given access.
|
|
*/
|
|
function testNoPrivileges() {
|
|
// Create node with PHP filter enabled.
|
|
$web_user = $this->drupalCreateUser(array('access content', 'create page content', 'edit own page content'));
|
|
$this->drupalLogin($web_user);
|
|
|
|
$node = $this->createNodeWithCode($web_user);
|
|
|
|
// Make sure that the PHP code shows up as text.
|
|
$this->assertText('print', t('PHP code is displayed.'));
|
|
|
|
// Make sure that user doesn't have access to filter.
|
|
$this->drupalGet('node/' . $node->nid . '/edit');
|
|
$this->assertNoFieldByName('body_format', '3', t('Format not available.'));
|
|
}
|
|
} |