summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/browser.test
blob: 1f58576ee9caaf7f030a9a045ad972be0fdd173d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php
// $Id$

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

/**
 * Test general browser functionality.
 */
class BrowserTestCase extends DrupalWebTestCase {

  public static function getInfo() {
    return array(
      'name' => t('Browser'),
      'description' => t('Test general browser functionality.'),
      'group' => t('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' => t('Browser - wrapper backends'),
      'description' => t('Test stream and curl backends execution of GET and POST requests.'),
      'group' => t('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' => t('Browser - page'),
      'description' => t('Check "BrowserPage" class functionality.'),
      'group' => t('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'));
  }
}