103 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
<?php
 | 
						|
// $Id$
 | 
						|
 | 
						|
/**
 | 
						|
 * Base PHP test case class.
 | 
						|
 */
 | 
						|
class PHPTestCase extends DrupalWebTestCase {
 | 
						|
  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/filter/3');
 | 
						|
    $this->assertText('PHP code', t('On PHP code filter page.'));
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Create a test node with PHP code in the body.
 | 
						|
   *
 | 
						|
   * @return stdObject Node object.
 | 
						|
   */
 | 
						|
  function createNodeWithCode() {
 | 
						|
    return $this->drupalCreateNode(array('body' => '<?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' => 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 text 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();
 | 
						|
 | 
						|
    // Make sure that the PHP code shows up as text.
 | 
						|
    $this->drupalGet('node/'. $node->nid);
 | 
						|
    $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 {
 | 
						|
  public static 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();
 | 
						|
 | 
						|
    // Make sure that the PHP code shows up as text.
 | 
						|
    $this->drupalGet('node/'. $node->nid);
 | 
						|
    $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.'));
 | 
						|
  }
 | 
						|
}
 |