summaryrefslogtreecommitdiff
path: root/modules/php/php.test
diff options
context:
space:
mode:
Diffstat (limited to 'modules/php/php.test')
-rw-r--r--modules/php/php.test93
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;
+ }
+}