summaryrefslogtreecommitdiff
path: root/modules/simpletest/tests/bootstrap.test
blob: 8be13aaebdb26b052c84da6ac9ae6b730deb4529 (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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php
// $Id$

class BootstrapIPAddressTestCase extends DrupalWebTestCase {

  /**
   * Implementation of getInfo().
   */
  function getInfo() {
    return array(
      'name' => t('IP address test'),
      'description' => t('Get the IP address from the current visitor from the server variables.'),
      'group' => t('Bootstrap')
    );
  }

  /**
   * Implementation of setUp().
   */
  function setUp() {
    $this->oldserver = $_SERVER;

    $this->remote_ip = '127.0.0.1';
    $this->proxy_ip = '127.0.0.2';
    $this->forwarded_ip = '127.0.0.3';
    $this->cluster_ip = '127.0.0.4';
    $this->untrusted_ip = '0.0.0.0';

    $_SERVER['REMOTE_ADDR'] = $this->remote_ip;
    unset($_SERVER['HTTP_X_FORWARDED_FOR']);
    unset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']);

    parent::setUp();
  }

  /**
   * Implementation of tearDown().
   */
  function tearDown() {
    $_SERVER = $this->oldserver;
    parent::tearDown();
  }

  /**
   * testIPAddress
   */
  function testIPAddress() {
    // Test the normal IP address.
    $this->assertTrue(
      ip_address(true) == $this->remote_ip,
      t('Got remote IP address')
    );

    // Proxy forwarding on but no proxy addresses defined.
    variable_set('reverse_proxy', 1);
    $this->assertTrue(
      ip_address(true) == $this->remote_ip,
      t('Proxy forwarding without trusted proxies got remote IP address')
    );

    // Proxy forwarding on and proxy address not trusted.
    variable_set('reverse_proxy_addresses', array($this->proxy_ip));
    $_SERVER['REMOTE_ADDR'] = $this->untrusted_ip;
    $this->assertTrue(
      ip_address(true) == $this->untrusted_ip,
      t('Proxy forwarding with untrusted proxy got remote IP address')
    );

    // Proxy forwarding on and proxy address trusted.
    $_SERVER['REMOTE_ADDR'] = $this->proxy_ip;
    $_SERVER['HTTP_X_FORWARDED_FOR'] = $this->forwarded_ip;
    $this->assertTrue(
      ip_address(true) == $this->forwarded_ip,
      t('Proxy forwarding with trusted proxy got forwarded IP address')
    );

    // Cluster environment.
    $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'] = $this->cluster_ip;
    $this->assertTrue(
      ip_address(true) == $this->cluster_ip,
      t('Cluster environment got cluster client IP')
    );
  }
}

class BootstrapPageCacheTestCase extends DrupalWebTestCase {

  /**
   * Implementation of getInfo().
   */
  function getInfo() {
    return array(
      'name' => t('Page cache test'),
      'description' => t('Enable the page cache, submit a HEAD request and examine headers.'),
      'group' => t('Bootstrap')
    );
  }

  /**
   * Enable cache and examine HTTP headers.
   */
  function testPageCache() {
    global $base_url;
    variable_set('cache', 1);
    // Retrieve the front page, which has already been cached by $this->curlConnect();
    $this->drupalHead($base_url);
    $this->assertText('ETag: ', t('Verify presence of ETag header indicating that page caching is enabled.'));
  }

}

class BootstrapVariableTestCase extends DrupalWebTestCase {

  /**
   * Implementation of setUp().
   */
  function setUp() {
    parent::setUp('system_test');
  }

  /**
   * Implementation of getInfo().
   */
  function getInfo() {
    return array(
      'name' => t('Variable test'),
      'description' => t('Make sure the variable system functions correctly.'),
      'group' => t('Bootstrap')
    );
  }

  /**
   * testVariable
   */
  function testVariable() {
    // Setting and retrieving values.
    $variable = $this->randomName();
    variable_set('simpletest_bootstrap_variable_test', $variable);
    $this->assertIdentical($variable, variable_get('simpletest_bootstrap_variable_test', NULL), t('Setting and retrieving values'));

    // Make sure the variable persists across multiple requests.
    $this->drupalGet('system-test/variable-get');
    $this->assertText($variable, t('Variable persists across multiple requests'));

    // Deleting variables.
    $default_value = $this->randomName();
    variable_del('simpletest_bootstrap_variable_test');
    $variable = variable_get('simpletest_bootstrap_variable_test', $default_value);
    $this->assertIdentical($variable, $default_value, t('Deleting variables'));
  }

}