@@ -167,6 +167,22 @@ public function testSiteURLSegments()
167167 $ this ->assertEquals ('http://example.com/index.php/news/local/123 ' , site_url (['news ' , 'local ' , '123 ' ], null , $ config ));
168168 }
169169
170+ public function testSiteURLInSubfolder ()
171+ {
172+ $ _SERVER ['HTTP_HOST ' ] = 'example.com ' ;
173+ $ _SERVER ['REQUEST_URI ' ] = '/foo/public/bar?baz=quip ' ;
174+
175+ // Since we're on a CLI, we must provide our own URI
176+ $ config = new App ();
177+ $ config ->baseURL = 'http://example.com/foo/public ' ;
178+ $ request = Services::request ($ config );
179+ $ request ->uri = new URI ('http://example.com/foo/public/bar ' );
180+
181+ Services::injectMock ('request ' , $ request );
182+
183+ $ this ->assertEquals ('http://example.com/foo/public/bar ' , current_url ());
184+ }
185+
170186 /**
171187 * @see https://github.com/codeigniter4/CodeIgniter4/issues/240
172188 */
@@ -281,7 +297,7 @@ public function testBaseURLWithSegments()
281297
282298 Services::injectMock ('request ' , $ request );
283299
284- $ this ->assertEquals ('http://example.com/ ' , base_url ());
300+ $ this ->assertEquals ('http://example.com ' , base_url ());
285301 }
286302
287303 /**
@@ -316,6 +332,23 @@ public function testBaseURLWithSegmentsAgain()
316332 $ this ->assertEquals ('http://example.com/profile ' , base_url ('profile ' ));
317333 }
318334
335+ public function testBaseURLHasSubfolder ()
336+ {
337+ $ _SERVER ['HTTP_HOST ' ] = 'example.com ' ;
338+ $ _SERVER ['REQUEST_URI ' ] = '/test ' ;
339+
340+ // Since we're on a CLI, we must provide our own URI
341+ $ config = new App ();
342+ $ config ->baseURL = 'http://example.com/subfolder ' ;
343+ $ request = Services::request ($ config , false );
344+ $ request ->uri = new URI ('http://example.com/subfolder/test ' );
345+
346+ Services::injectMock ('request ' , $ request );
347+
348+ $ this ->assertEquals ('http://example.com/subfolder/foo ' , base_url ('foo ' ));
349+ $ this ->assertEquals ('http://example.com/subfolder ' , base_url ());
350+ }
351+
319352 //--------------------------------------------------------------------
320353 // Test current_url
321354
@@ -370,6 +403,22 @@ public function testCurrentURLEquivalence()
370403 $ this ->assertEquals (base_url (uri_string ()), current_url ());
371404 }
372405
406+ public function testCurrentURLInSubfolder ()
407+ {
408+ $ _SERVER ['HTTP_HOST ' ] = 'example.com ' ;
409+ $ _SERVER ['REQUEST_URI ' ] = '/foo/public/bar?baz=quip ' ;
410+
411+ // Since we're on a CLI, we must provide our own URI
412+ $ config = new App ();
413+ $ config ->baseURL = 'http://example.com/foo/public ' ;
414+ $ request = Services::request ($ config );
415+ $ request ->uri = new URI ('http://example.com/foo/public/bar ' );
416+
417+ Services::injectMock ('request ' , $ request );
418+
419+ $ this ->assertEquals ('http://example.com/foo/public/bar ' , current_url ());
420+ }
421+
373422 //--------------------------------------------------------------------
374423 // Test previous_url
375424
0 commit comments