xref: /dokuwiki/_test/tests/inc/common_clientip.test.php (revision 5a0eec47d375f076d810160503bdd303f8cf62a0)
1<?php
2
3require_once DOKU_INC.'inc/init.php';
4require_once DOKU_INC.'inc/common.php';
5
6class common_clientIP_test extends DokuWikiTest {
7
8    function test_simple_all(){
9        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
10        $_SERVER['HTTP_X_REAL_IP']       = '';
11        $_SERVER['HTTP_X_FORWARDED_FOR'] = '';
12        $out = '123.123.123.123';
13        $this->assertEquals(clientIP(),$out);
14    }
15
16    function test_proxy1_all(){
17        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
18        $_SERVER['HTTP_X_REAL_IP']       = '77.77.77.77';
19        $_SERVER['HTTP_X_FORWARDED_FOR'] = '';
20        $out = '123.123.123.123,77.77.77.77';
21        $this->assertEquals(clientIP(),$out);
22    }
23
24    function test_proxy2_all(){
25        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
26        $_SERVER['HTTP_X_REAL_IP']       = '';
27        $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77';
28        $out = '123.123.123.123,77.77.77.77';
29        $this->assertEquals(clientIP(),$out);
30    }
31
32    function test_proxyhops_all(){
33        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
34        $_SERVER['HTTP_X_REAL_IP']       = '';
35        $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77,66.66.66.66';
36        $out = '123.123.123.123,77.77.77.77,66.66.66.66';
37        $this->assertEquals(clientIP(),$out);
38    }
39
40    function test_simple_single(){
41        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
42        $_SERVER['HTTP_X_REAL_IP']       = '';
43        $_SERVER['HTTP_X_FORWARDED_FOR'] = '';
44        $out = '123.123.123.123';
45        $this->assertEquals(clientIP(true),$out);
46    }
47
48    function test_proxy1_single(){
49        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
50        $_SERVER['HTTP_X_REAL_IP']       = '77.77.77.77';
51        $_SERVER['HTTP_X_FORWARDED_FOR'] = '';
52        $out = '77.77.77.77';
53        $this->assertEquals(clientIP(true),$out);
54    }
55
56    function test_proxy2_single(){
57        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
58        $_SERVER['HTTP_X_REAL_IP']       = '';
59        $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77';
60        $out = '77.77.77.77';
61        $this->assertEquals(clientIP(true),$out);
62    }
63
64    function test_proxyhops_single(){
65        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
66        $_SERVER['HTTP_X_REAL_IP']       = '';
67        $_SERVER['HTTP_X_FORWARDED_FOR'] = '77.77.77.77,66.66.66.66';
68        $out = '66.66.66.66';
69        $this->assertEquals(clientIP(true),$out);
70    }
71
72    function test_local_all(){
73        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
74        $_SERVER['HTTP_X_REAL_IP']       = '';
75        $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1';
76        $out = '123.123.123.123,127.0.0.1';
77        $this->assertEquals(clientIP(),$out);
78    }
79
80    function test_local1_single(){
81        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
82        $_SERVER['HTTP_X_REAL_IP']       = '';
83        $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1';
84        $out = '123.123.123.123';
85        $this->assertEquals(clientIP(true),$out);
86    }
87
88    function test_local2_single(){
89        $_SERVER['REMOTE_ADDR']          = '127.0.0.1';
90        $_SERVER['HTTP_X_REAL_IP']       = '';
91        $_SERVER['HTTP_X_FORWARDED_FOR'] = '123.123.123.123';
92        $out = '123.123.123.123';
93        $this->assertEquals(clientIP(true),$out);
94    }
95
96    function test_local3_single(){
97        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
98        $_SERVER['HTTP_X_REAL_IP']       = '';
99        $_SERVER['HTTP_X_FORWARDED_FOR'] = '127.0.0.1,10.0.0.1,192.168.0.2,172.17.1.1,172.21.1.1,172.31.1.1';
100        $out = '123.123.123.123';
101        $this->assertEquals(clientIP(true),$out);
102    }
103
104    function test_local4_single(){
105        $_SERVER['REMOTE_ADDR']          = '127.0.0.1';
106        $_SERVER['HTTP_X_REAL_IP']       = '';
107        $_SERVER['HTTP_X_FORWARDED_FOR'] = '192.168.0.5';
108        $out = '192.168.0.5';
109        $this->assertEquals(clientIP(true),$out);
110    }
111
112    function test_garbage_all(){
113        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
114        $_SERVER['HTTP_X_REAL_IP']       = '';
115        $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222';
116        $out = '123.123.123.123';
117        $this->assertEquals(clientIP(),$out);
118    }
119
120    function test_garbage_single(){
121        $_SERVER['REMOTE_ADDR']          = '123.123.123.123';
122        $_SERVER['HTTP_X_REAL_IP']       = '';
123        $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222';
124        $out = '123.123.123.123';
125        $this->assertEquals(clientIP(true),$out);
126    }
127
128    function test_garbageonly_all(){
129        $_SERVER['REMOTE_ADDR']          = 'argh';
130        $_SERVER['HTTP_X_REAL_IP']       = '';
131        $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222';
132        $out = '0.0.0.0';
133        $this->assertEquals(clientIP(),$out);
134    }
135
136    function test_garbageonly_single(){
137        $_SERVER['REMOTE_ADDR']          = 'argh';
138        $_SERVER['HTTP_X_REAL_IP']       = '';
139        $_SERVER['HTTP_X_FORWARDED_FOR'] = 'some garbage, or something, 222';
140        $out = '0.0.0.0';
141        $this->assertEquals(clientIP(true),$out);
142    }
143
144    function test_malicious(){
145        $_SERVER['REMOTE_ADDR']          = '';
146        $_SERVER['HTTP_X_REAL_IP']       = '';
147        $_SERVER['HTTP_X_FORWARDED_FOR'] = '<?php set_time_limit(0);echo \'my_delim\';passthru(123.123.123.123);die;?>';
148        $out = '0.0.0.0';
149        $this->assertEquals(clientIP(),$out);
150    }
151
152}
153
154//Setup VIM: ex: et ts=4 :
155