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