You are here

browser.test in SimpleTest 7

Tests for the internal web browser.

File

tests/browser.test
View source
<?php

/**
 * @file
 * Tests for the internal web browser.
 */

/**
 * Test general browser functionality.
 */
class BrowserTestCase extends DrupalWebTestCase {
  public static function getInfo() {
    return array(
      'name' => 'Browser',
      'description' => 'Test general browser functionality.',
      'group' => 'Browser',
    );
  }
  public function setUp() {
    parent::setUp('browser_test');
  }

  /**
   * Test general browser functionality.
   */
  public function testBrowserBackend() {
    global $db_prefix;
    $browser = new Browser();
    $browser
      ->setUserAgent(drupal_generate_test_ua($db_prefix));

    // Check browser refresh, both meta tag and HTTP header.
    $request = $browser
      ->get(url('browser_test/refresh/meta', array(
      'absolute' => TRUE,
    )));
    $this
      ->assertEqual($request['content'], 'Refresh successful', 'Meta refresh successful ($request)');
    $this
      ->assertEqual($browser
      ->getContent(), 'Refresh successful', 'Meta refresh successful ($browser)');
    $request = $browser
      ->get(url('browser_test/refresh/header', array(
      'absolute' => TRUE,
    )));
    $this
      ->assertEqual($request['content'], 'Refresh successful', 'Meta refresh successful ($request)');
    $this
      ->assertEqual($browser
      ->getContent(), 'Refresh successful', 'Meta refresh successful ($browser)');
  }

}

/**
 * Test browser backend wrappers.
 */
class BrowserBackendTestCase extends DrupalWebTestCase {
  public static function getInfo() {
    return array(
      'name' => 'Browser - wrapper backends',
      'description' => 'Test stream and curl backends execution of GET and POST requests.',
      'group' => 'Browser',
    );
  }
  public function setUp() {
    parent::setUp('browser_test');
  }

  /**
   * Test stream and curl backends execution of GET and POST requests.
   */
  public function testBrowserBackend() {
    global $db_prefix;
    foreach (array(
      'stream',
      'curl',
    ) as $wrapper) {
      $browser = new Browser($wrapper == 'stream');
      $browser
        ->setUserAgent(drupal_generate_test_ua($db_prefix));
      $string = $this
        ->randomName();
      $edit = array(
        'foo' => $string,
      );

      // Test GET method.
      $request = $browser
        ->get(url('browser_test/print/get', array(
        'absolute' => TRUE,
        'query' => $edit,
      )));
      $this
        ->assertEqual($string, $request['content'], t('String found during GET request ($request)'), $wrapper);
      $this
        ->assertEqual($string, $browser
        ->getContent(), t('String found during GET request ($browser)'), $wrapper);

      // Test POST method.
      $request = $browser
        ->post(url('browser_test/print/post', array(
        'absolute' => TRUE,
      )), $edit, t('Submit'));
      $this
        ->assertEqual($string, $request['content'], t('String found during POST request ($request)'), $wrapper);
      $this
        ->assertEqual($string, $browser
        ->getContent(), t('String found during POST request ($browser)'), $wrapper);
    }
  }

}

/**
 * Test browser page manipulation functionality.
 */
class BrowserPageTestCase extends DrupalWebTestCase {
  public static function getInfo() {
    return array(
      'name' => 'Browser - page',
      'description' => 'Check "BrowserPage" class functionality.',
      'group' => 'Browser',
    );
  }
  public function setUp() {
    parent::setUp('browser_test');
  }

  /**
   * Check "BrowserPage" class functionality.
   */
  public function testBrowserPage() {
    global $db_prefix;
    $browser = new Browser();
    $browser
      ->setUserAgent(drupal_generate_test_ua($db_prefix));
    $browser
      ->get(url('browser_test/print/post', array(
      'absolute' => TRUE,
    )));
    $page = $browser
      ->getPage();
    $input = $page
      ->xpath('//input[@name="foo"]');
    $input = $input[0];
    $this
      ->assertEqual('foo', $input['name'], t('Field "foo" found'));
  }

}

Classes

Namesort descending Description
BrowserBackendTestCase Test browser backend wrappers.
BrowserPageTestCase Test browser page manipulation functionality.
BrowserTestCase Test general browser functionality.