php.test
Tests for php.module.
File
- 
              modules/php/ php.test 
View source
<?php
/**
 * @file
 * Tests for php.module.
 */
/**
 * Defines a base PHP test case class.
 */
class PHPTestCase extends DrupalWebTestCase {
  protected $php_code_format;
  function setUp() {
    parent::setUp('php');
    // Create and login admin user.
    $admin_user = $this->drupalCreateUser(array(
      'administer filters',
    ));
    $this->drupalLogin($admin_user);
    // Verify that the PHP code text format was inserted.
    $php_format_id = 'php_code';
    $this->php_code_format = filter_format_load($php_format_id);
    $this->assertEqual($this->php_code_format->name, 'PHP code', 'PHP code text format was created.');
    // Verify that the format has the PHP code filter enabled.
    $filters = filter_list_format($php_format_id);
    $this->assertTrue($filters['php_code']->status, 'PHP code filter is enabled.');
    // Verify that the format exists on the administration page.
    $this->drupalGet('admin/config/content/formats');
    $this->assertText('PHP code', 'PHP code text format was created.');
    // Verify that anonymous and authenticated user roles do not have access.
    $this->drupalGet('admin/config/content/formats/' . $php_format_id);
    $this->assertFieldByName('roles[' . DRUPAL_ANONYMOUS_RID . ']', FALSE, 'Anonymous users do not have access to PHP code format.');
    $this->assertFieldByName('roles[' . DRUPAL_AUTHENTICATED_RID . ']', FALSE, 'Authenticated users do not have access to PHP code format.');
  }
  
  /**
   * Creates a test node with PHP code in the body.
   *
   * @return stdObject Node object.
   */
  function createNodeWithCode() {
    return $this->drupalCreateNode(array(
      'body' => array(
        LANGUAGE_NONE => array(
          array(
            'value' => '<?php print "SimpleTest PHP was executed!"; ?>',
          ),
        ),
      ),
    ));
  }
}
/**
 * Tests to make sure the PHP filter actually evaluates PHP code when used.
 */
class PHPFilterTestCase extends PHPTestCase {
  public static function getInfo() {
    return array(
      'name' => 'PHP filter functionality',
      'description' => 'Make sure that PHP filter properly evaluates PHP code when enabled.',
      'group' => 'PHP',
    );
  }
  
  /**
   * Makes sure that the PHP filter evaluates PHP code when used.
   */
  function testPHPFilter() {
    // Log in as a user with permission to use the PHP code text format.
    $php_code_permission = filter_permission_name(filter_format_load('php_code'));
    $web_user = $this->drupalCreateUser(array(
      'access content',
      'create page content',
      'edit own page content',
      $php_code_permission,
    ));
    $this->drupalLogin($web_user);
    // Create a node with PHP code in it.
    $node = $this->createNodeWithCode();
    // Make sure that the PHP code shows up as text.
    $this->drupalGet('node/' . $node->nid);
    $this->assertText('print "SimpleTest PHP was executed!"', 'PHP code is displayed.');
    // Change filter to PHP filter and see that PHP code is evaluated.
    $edit = array();
    $langcode = LANGUAGE_NONE;
    $edit["body[{$langcode}][0][format]"] = $this->php_code_format->format;
    $this->drupalPost('node/' . $node->nid . '/edit', $edit, t('Save'));
    $this->assertRaw(t('Basic page %title has been updated.', array(
      '%title' => $node->title,
    )), 'PHP code filter turned on.');
    // Make sure that the PHP code shows up as text.
    $this->assertNoText('print "SimpleTest PHP was executed!"', "PHP code isn't displayed.");
    $this->assertText('SimpleTest PHP was executed!', 'PHP code has been evaluated.');
  }
}
/**
 * Tests to make sure access to the PHP filter is properly restricted.
 */
class PHPAccessTestCase extends PHPTestCase {
  public static function getInfo() {
    return array(
      'name' => 'PHP filter access check',
      'description' => 'Make sure that users who don\'t have access to the PHP filter can\'t see it.',
      'group' => 'PHP',
    );
  }
  
  /**
   * Makes sure that the 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();
    // Make sure that the PHP code shows up as text.
    $this->drupalGet('node/' . $node->nid);
    $this->assertText('print', 'PHP code was not evaluated.');
    // Make sure that user doesn't have access to filter.
    $this->drupalGet('node/' . $node->nid . '/edit');
    $this->assertNoRaw('<option value="' . $this->php_code_format->format . '">', 'PHP code format not available.');
  }
}Classes
| Title | Deprecated | Summary | 
|---|---|---|
| PHPAccessTestCase | Tests to make sure access to the PHP filter is properly restricted. | |
| PHPFilterTestCase | Tests to make sure the PHP filter actually evaluates PHP code when used. | |
| PHPTestCase | Defines a base PHP test case class. | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
