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