<?php /** * Base class for External Link tests. * * Provides common setup stuff and various helper functions */ class ExtlinkBaseWebTestCase extends DrupalWebTestCase { /** * User with various administrative permissions. * @var Drupal user */ protected $admin_user; /** * Normal visitor with limited permissions * @var Drupal user; */ protected $normal_user; /** * Drupal path of the (general) External Links admin page */ const EXTLINK_ADMIN_PATH = 'admin/config/user-interface/extlink'; function setUp() { // Enable any module that you will need in your tests. parent::setUp('extlink'); // Create a normal user. $permissions = array( 'access comments', 'post comments', 'skip comment approval', 'access content', 'create page content', 'edit own page content', ); $this->normal_user = $this->drupalCreateUser($permissions); // Create an admin user. $permissions[] = 'administer site configuration'; $permissions[] = 'administer permissions'; $permissions[] = 'administer content types'; $this->admin_user = $this->drupalCreateUser($permissions); } protected function getNodeFormValues() { $edit = array( 'title' => 'node_title ' . $this->randomName(32), 'body[' . LANGUAGE_NONE . '][0][value]' => 'node_body ' . $this->randomName(256) . ' <a href="http://google.com">Google!</a>', ); return $edit; } /** * Test if External Link is present */ protected function assertExternalLinkPresence() { $elements = $this->xpath('//span[@class="ext"]'); if (count($elements) > 0) $this->pass('There should be an External Link on the form.', 'External Links'); else $this->fail('There should be an External Link on the form.', 'External Links'); } } class ExtlinkTestCase extends ExtlinkBaseWebTestCase { public static function getInfo() { return array( 'name' => t('General External Links functionality'), 'description' => t('Testing the basic functionality of External Links'), 'group' => t('External Links'), ); } } class ExtlinkAdminTestCase extends ExtlinkBaseWebTestCase { public static function getInfo() { return array( 'name' => t('External Links administration functionality'), 'description' => t('Testing of the External Links administration interface and functionality.'), 'group' => t('External Links'), ); } /** * Test access to the admin pages. */ function testAdminAccess() { $this->drupalLogin($this->normal_user); $this->drupalGet(self::EXTLINK_ADMIN_PATH); file_put_contents('tmp.simpletest.html', $this->drupalGetContent()); $this->assertText(t('Access denied'), 'Normal users should not be able to access the External Links admin pages', 'External Links'); $this->drupalLogin($this->admin_user); $this->drupalGet(self::EXTLINK_ADMIN_PATH); file_put_contents('tmp.simpletest.html', $this->drupalGetContent()); $this->assertNoText(t('Access denied'), 'Admin users should be able to access the External Links admin pages', 'External Links'); } } ?>