diff options
Diffstat (limited to 'modules/php/php.test')
-rw-r--r-- | modules/php/php.test | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/modules/php/php.test b/modules/php/php.test new file mode 100644 index 000000000..d0293d1f3 --- /dev/null +++ b/modules/php/php.test @@ -0,0 +1,93 @@ +<?php +// $Id$ + +class PHPTestCase extends DrupalWebTestCase { + /** + * Implementation of getInfo(). + */ + function getInfo() { + return array( + 'name' => t('PHP filter functionality'), + 'description' => t('Make sure that PHP filter evaluates PHP code when enabled and that users who don\'t have access to filter can\'t see it'), + 'group' => t('PHP'), + ); + } + + /** + * 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.')); + } + + /** + * 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['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.')); + } + + /** + * 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('format', '3', t('Format not available.')); + } + + /** + * 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; + } +} |