xref: /dokuwiki/_test/tests/inc/init_getbaseurl.test.php (revision 5a0eec47d375f076d810160503bdd303f8cf62a0)
1<?php
2
3require_once DOKU_INC.'inc/init.php';
4
5class init_getBaseURL_test extends DokuWikiTest {
6
7    /**
8     * Apache, mod_php, subdirectory
9     *
10     * data provided by Andreas Gohr <andi@splitbrain.org>
11     */
12    function test1(){
13        global $conf;
14        $conf['basedir'] = '';
15        $conf['baseurl'] = '';
16        $conf['canonical'] = 0;
17
18        $_SERVER['DOCUMENT_ROOT']   = '/var/www/';
19        $_SERVER['HTTP_HOST']       = 'xerxes.my.home';
20        $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php';
21        $_SERVER['REQUEST_URI']     = '/dokuwiki/doku.php?do=debug';
22        $_SERVER['SCRIPT_NAME']     = '/dokuwiki/doku.php';
23        $_SERVER['PATH_INFO']       = null;
24        $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php';
25        $_SERVER['PHP_SELF']        = '/dokuwiki/doku.php';
26
27        $this->assertEquals(getBaseURL(),'/dokuwiki/');
28    }
29
30    /**
31     * Apache, CGI, mod_userdir, subdirectory
32     *
33     * data provided by Hilko Bengen <bengen@hilluzination.de>
34     */
35    function test2(){
36        global $conf;
37        $conf['basedir'] = '';
38        $conf['baseurl'] = '';
39        $conf['canonical'] = 0;
40
41        $_SERVER['DOCUMENT_ROOT']   = '/var/www/localhost';
42        $_SERVER['HTTP_HOST']       = 'localhost';
43        $_SERVER['SCRIPT_FILENAME'] = '/usr/lib/cgi-bin/php4';
44        $_SERVER['REQUEST_URI']     = '/~bengen/dokuwiki/doku.php?do=debug';
45        $_SERVER['SCRIPT_NAME']     = '/cgi-bin/php4';
46        $_SERVER['PATH_INFO']       = '/~bengen/dokuwiki/doku.php';
47        $_SERVER['PATH_TRANSLATED'] = '/home/bengen/public_html/dokuwiki/doku.php';
48        $_SERVER['PHP_SELF']        = '/~bengen/dokuwiki/doku.php';
49
50        $this->assertEquals(getBaseURL(),'/~bengen/dokuwiki/');
51    }
52
53    /**
54     * Apache, FastCGI, mod_userdir, subdirectory
55     *
56     * data provided by Hilko Bengen <bengen@hilluzination.de>
57     */
58    function test3(){
59        global $conf;
60        $conf['basedir'] = '';
61        $conf['baseurl'] = '';
62        $conf['canonical'] = 0;
63
64        $_SERVER['DOCUMENT_ROOT']   = '/var/www/localhost';
65        $_SERVER['HTTP_HOST']       = 'localhost';
66        $_SERVER['SCRIPT_FILENAME'] = '/var/run/php-fastcgi/fcgi-bin/bengen/php4';
67        $_SERVER['REQUEST_URI']     = '/~bengen/dokuwiki/doku.php?do=debug';
68        $_SERVER['SCRIPT_NAME']     = '/fcgi-bin/php4-bengen';
69        $_SERVER['PATH_INFO']       = '/~bengen/dokuwiki/doku.php';
70        $_SERVER['PATH_TRANSLATED'] = '/home/bengen/public_html/dokuwiki/doku.php';
71        $_SERVER['PHP_SELF']        = '/~bengen/dokuwiki/doku.php';
72
73        $this->assertEquals(getBaseURL(),'/~bengen/dokuwiki/');
74    }
75
76    /**
77     * Apache, mod_php, mod_userdir, subdirectory
78     *
79     * data provided by Hilko Bengen <bengen@hilluzination.de>
80     */
81    function test4(){
82        global $conf;
83        $conf['basedir'] = '';
84        $conf['baseurl'] = '';
85        $conf['canonical'] = 0;
86
87        $_SERVER['DOCUMENT_ROOT']   = '/var/www/localhost';
88        $_SERVER['HTTP_HOST']       = 'localhost';
89        $_SERVER['SCRIPT_FILENAME'] = '/home/bengen/public_html/dokuwiki/doku.php';
90        $_SERVER['REQUEST_URI']     = '/~bengen/dokuwiki/doku.php?do=debug';
91        $_SERVER['SCRIPT_NAME']     = '/~bengen/dokuwiki/doku.php';
92        $_SERVER['PATH_INFO']       = null;
93        $_SERVER['PATH_TRANSLATED'] = '/home/bengen/public_html/dokuwiki/doku.php';
94        $_SERVER['PHP_SELF']        = '/~bengen/dokuwiki/doku.php';
95
96        $this->assertEquals(getBaseURL(),'/~bengen/dokuwiki/');
97    }
98
99    /**
100     * IIS
101     *
102     * data provided by David Mach <david.mach@centrum.cz>
103     */
104    function test5(){
105        global $conf;
106        $conf['basedir'] = '';
107        $conf['baseurl'] = '';
108        $conf['canonical'] = 0;
109
110        $_SERVER['DOCUMENT_ROOT']   = null;
111        $_SERVER['HTTP_HOST']       = 'intranet';
112        $_SERVER['SCRIPT_FILENAME'] = null;
113        $_SERVER['REQUEST_URI']     = null;
114        $_SERVER['SCRIPT_NAME']     = '/wiki/doku.php';
115        $_SERVER['PATH_INFO']       = '/wiki/doku.php';
116        $_SERVER['PATH_TRANSLATED'] = 'C:\\Inetpub\\wwwroot\\wiki\\doku.php';
117        $_SERVER['PHP_SELF']        = '/wiki/doku.php';
118
119        $this->assertEquals(getBaseURL(),'/wiki/');
120    }
121
122    /**
123     * Apache 2, mod_php, real URL rewriting, useslash (bug #292)
124     *
125     * data provided by Ted <bugsX2904@elcsplace.com>
126     */
127    function test6(){
128        global $conf;
129        $conf['basedir'] = '';
130        $conf['baseurl'] = '';
131        $conf['canonical'] = 0;
132
133        $_SERVER['DOCUMENT_ROOT']   = '/home/websites/wiki/htdocs';
134        $_SERVER['HTTP_HOST']       = 'wiki.linuxwan.net';
135        $_SERVER['SCRIPT_FILENAME'] = '/home/websites/wiki/htdocs/doku.php';
136        $_SERVER['REQUEST_URI']     = '/wiki/syntax?do=debug';
137        $_SERVER['SCRIPT_NAME']     = '/wiki/syntax';
138        $_SERVER['PATH_INFO']       = null;
139        $_SERVER['PATH_TRANSLATED'] = null;
140        $_SERVER['PHP_SELF']        = '/wiki/syntax';
141
142        $this->assertEquals(getBaseURL(),'/');
143    }
144
145    /**
146     * lighttpd, fastcgi
147     *
148     * data provided by Andreas Gohr <andi@splitbrain.org>
149     */
150    function test7(){
151        global $conf;
152        $conf['basedir'] = '';
153        $conf['baseurl'] = '';
154        $conf['canonical'] = 0;
155
156        $_SERVER['DOCUMENT_ROOT']   = '/var/www/';
157        $_SERVER['HTTP_HOST']       = 'localhost';
158        $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php';
159        $_SERVER['REQUEST_URI']     = '/dokuwiki/doku.php?do=debug';
160        $_SERVER['SCRIPT_NAME']     = '/dokuwiki/doku.php';
161        $_SERVER['PATH_INFO']       = '';
162        $_SERVER['PATH_TRANSLATED'] = null;
163        $_SERVER['PHP_SELF']        = '';
164
165        $this->assertEquals(getBaseURL(),'/dokuwiki/');
166    }
167
168    /**
169     * Apache, mod_php, Pseudo URL rewrite, useslash
170     *
171     * data provided by Andreas Gohr <andi@splitbrain.org>
172     */
173    function test8(){
174        global $conf;
175        $conf['basedir'] = '';
176        $conf['baseurl'] = '';
177        $conf['canonical'] = 0;
178
179        $_SERVER['DOCUMENT_ROOT']   = '/var/www/';
180        $_SERVER['HTTP_HOST']       = 'xerxes.my.home';
181        $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php';
182        $_SERVER['REQUEST_URI']     = '/dokuwiki/doku.php/wiki/syntax?do=debug';
183        $_SERVER['SCRIPT_NAME']     = '/dokuwiki/doku.php';
184        $_SERVER['PATH_INFO']       = '/wiki/syntax';
185        $_SERVER['PATH_TRANSLATED'] = '/var/www/wiki/syntax';
186        $_SERVER['PHP_SELF']        = '/dokuwiki/doku.php/wiki/syntax';
187
188        $this->assertEquals(getBaseURL(),'/dokuwiki/');
189    }
190
191    /**
192     * Apache, mod_php, real URL rewrite, useslash
193     *
194     * data provided by Andreas Gohr <andi@splitbrain.org>
195     */
196    function test9(){
197        global $conf;
198        $conf['basedir'] = '';
199        $conf['baseurl'] = '';
200        $conf['canonical'] = 0;
201
202        $_SERVER['DOCUMENT_ROOT']   = '/var/www/';
203        $_SERVER['HTTP_HOST']       = 'xerxes.my.home';
204        $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php';
205        $_SERVER['REQUEST_URI']     = '/dokuwiki/wiki/syntax?do=debug';
206        $_SERVER['SCRIPT_NAME']     = '/dokuwiki/doku.php';
207        $_SERVER['PATH_INFO']       = null;
208        $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php';
209        $_SERVER['PHP_SELF']        = '/dokuwiki/doku.php';
210
211        $this->assertEquals(getBaseURL(),'/dokuwiki/');
212    }
213
214    /**
215     * Possible user settings of $conf['baseurl'] & absolute baseURL required
216     *
217     * data provided by Andreas Gohr <andi@splitbrain.org>
218     */
219    function test10(){
220        // values for $conf['baseurl'] and expected results
221        $tests = array(
222          'http://www.mysite.com' => 'http://www.mysite.com/dokuwiki/',
223          'http://www.mysite.com/' => 'http://www.mysite.com/dokuwiki/',
224          'http://www.mysite.com/path/to/wiki' => 'http://www.mysite.com/path/to/wiki/dokuwiki/',
225          'http://www.mysite.com/path/to/wiki/' => 'http://www.mysite.com/path/to/wiki/dokuwiki/',
226         );
227
228        global $conf;
229        $conf['basedir'] = '';
230        $conf['baseurl'] = '';
231
232        $_SERVER['DOCUMENT_ROOT']   = '/var/www/';
233        $_SERVER['HTTP_HOST']       = 'xerxes.my.home';
234        $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php';
235        $_SERVER['REQUEST_URI']     = '/dokuwiki/wiki/syntax?do=debug';
236        $_SERVER['SCRIPT_NAME']     = '/dokuwiki/doku.php';
237        $_SERVER['PATH_INFO']       = null;
238        $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php';
239        $_SERVER['PHP_SELF']        = '/dokuwiki/doku.php';
240
241        foreach ($tests as $test => $correct_result) {
242          $conf['baseurl'] = $test;
243          $this->assertEquals(getBaseURL(true),$correct_result);
244        }
245    }
246    /**
247     * Possible user settings of $conf['baseurl'] & absolute baseURL required
248     *
249     * data provided by Andreas Gohr <andi@splitbrain.org>
250     */
251    function test11(){
252        // values for $conf['baseurl'] and expected results
253        $tests = array(
254          'http://www.mysite.com' => 'http://www.mysite.com/dokuwiki/',
255          'http://www.mysite.com/' => 'http://www.mysite.com/dokuwiki/',
256          'http://www.mysite.com/path/to/wiki' => 'http://www.mysite.com/path/to/wiki/dokuwiki/',
257          'http://www.mysite.com/path/to/wiki/' => 'http://www.mysite.com/path/to/wiki/dokuwiki/',
258         );
259
260        global $conf;
261        $conf['basedir'] = '/dokuwiki';
262        $conf['baseurl'] = '';
263
264        $_SERVER['DOCUMENT_ROOT']   = '/var/www/';
265        $_SERVER['HTTP_HOST']       = 'xerxes.my.home';
266        $_SERVER['SCRIPT_FILENAME'] = '/var/www/dokuwiki/doku.php';
267        $_SERVER['REQUEST_URI']     = '/dokuwiki/wiki/syntax?do=debug';
268        $_SERVER['SCRIPT_NAME']     = '/dokuwiki/doku.php';
269        $_SERVER['PATH_INFO']       = null;
270        $_SERVER['PATH_TRANSLATED'] = '/var/www/dokuwiki/doku.php';
271        $_SERVER['PHP_SELF']        = '/dokuwiki/doku.php';
272
273        foreach ($tests as $test => $correct_result) {
274          $conf['baseurl'] = $test;
275          $this->assertEquals(getBaseURL(true),$correct_result);
276        }
277    }
278
279    /**
280     * Absolute URL with IPv6 domain name.
281     * lighttpd, fastcgi
282     *
283     * data provided by Michael Hamann <michael@content-space.de>
284     */
285    function test12() {
286        global $conf;
287        $conf['basedir'] = '';
288        $conf['baseurl'] = '';
289        $conf['canonical'] = 0;
290
291        $_SERVER['DOCUMENT_ROOT'] = '/srv/http/';
292        $_SERVER['HTTP_HOST'] = '[fd00::6592:39ed:a2ed:2c78]';
293        $_SERVER['SCRIPT_FILENAME'] = '/srv/http/~michitux/dokuwiki/doku.php';
294        $_SERVER['REQUEST_URI'] = '/~michitux/dokuwiki/doku.php?do=debug';
295        $_SERVER['SCRIPT_NAME'] = '/~michitux/dokuwiki/doku.php';
296        $_SERVER['PATH_INFO'] = null;
297        $_SERVER['PATH_TRANSLATED'] = null;
298        $_SERVER['PHP_SELF'] = '/~michitux/dokuwiki/doku.php';
299        $_SERVER['SERVER_PORT'] = '80';
300        $_SERVER['SERVER_NAME'] = '[fd00';
301        $this->assertEquals(getBaseURL(true), 'http://[fd00::6592:39ed:a2ed:2c78]/~michitux/dokuwiki/');
302    }
303}
304
305//Setup VIM: ex: et ts=2 :
306