@@ -751,18 +751,11 @@ public function testGetPathInfo()
751
751
752
752
$ this ->assertEquals ('/path/info ' , $ request ->getPathInfo ());
753
753
754
- $ server = array ();
755
- $ server ['REQUEST_URI ' ] = '/path test/info ' ;
756
- $ request ->initialize (array (), array (), array (), array (), array (), $ server );
757
-
758
- $ this ->assertEquals ('/path test/info ' , $ request ->getPathInfo ());
759
-
760
754
$ server = array ();
761
755
$ server ['REQUEST_URI ' ] = '/path%20test/info ' ;
762
756
$ request ->initialize (array (), array (), array (), array (), array (), $ server );
763
757
764
- $ this ->assertEquals ('/path test/info ' , $ request ->getPathInfo ());
765
-
758
+ $ this ->assertEquals ('/path%20test/info ' , $ request ->getPathInfo ());
766
759
}
767
760
768
761
public function testGetPreferredLanguage ()
@@ -946,6 +939,100 @@ private function startTrustingProxyData()
946
939
Request::trustProxyData ();
947
940
}
948
941
942
+ /**
943
+ * @dataProvider getBaseUrlData
944
+ */
945
+ public function testGetBaseUrl ($ uri , $ server , $ expectedBaseUrl , $ expectedPathInfo )
946
+ {
947
+ $ request = Request::create ($ uri , 'GET ' , array (), array (), array (), $ server );
948
+
949
+ $ this ->assertSame ($ expectedBaseUrl , $ request ->getBaseUrl (), 'baseUrl ' );
950
+ $ this ->assertSame ($ expectedPathInfo , $ request ->getPathInfo (), 'pathInfo ' );
951
+ }
952
+
953
+ public function getBaseUrlData ()
954
+ {
955
+ return array (
956
+ array (
957
+ '/foo%20bar ' ,
958
+ array (
959
+ 'SCRIPT_FILENAME ' => '/home/John Doe/public_html/foo bar/app.php ' ,
960
+ 'SCRIPT_NAME ' => '/foo bar/app.php ' ,
961
+ 'PHP_SELF ' => '/foo bar/app.php ' ,
962
+ ),
963
+ '/foo%20bar ' ,
964
+ '/ ' ,
965
+ ),
966
+ array (
967
+ '/foo%20bar/home ' ,
968
+ array (
969
+ 'SCRIPT_FILENAME ' => '/home/John Doe/public_html/foo bar/app.php ' ,
970
+ 'SCRIPT_NAME ' => '/foo bar/app.php ' ,
971
+ 'PHP_SELF ' => '/foo bar/app.php ' ,
972
+ ),
973
+ '/foo%20bar ' ,
974
+ '/home ' ,
975
+ ),
976
+ array (
977
+ '/foo%20bar/app.php/home ' ,
978
+ array (
979
+ 'SCRIPT_FILENAME ' => '/home/John Doe/public_html/foo bar/app.php ' ,
980
+ 'SCRIPT_NAME ' => '/foo bar/app.php ' ,
981
+ 'PHP_SELF ' => '/foo bar/app.php ' ,
982
+ ),
983
+ '/foo%20bar/app.php ' ,
984
+ '/home ' ,
985
+ ),
986
+ array (
987
+ '/foo%20bar/app.php/home%2Fbaz ' ,
988
+ array (
989
+ 'SCRIPT_FILENAME ' => '/home/John Doe/public_html/foo bar/app.php ' ,
990
+ 'SCRIPT_NAME ' => '/foo bar/app.php ' ,
991
+ 'PHP_SELF ' => '/foo bar/app.php ' ,
992
+ ),
993
+ '/foo%20bar/app.php ' ,
994
+ '/home%2Fbaz ' ,
995
+ ),
996
+ array (
997
+ '/foo/bar+baz ' ,
998
+ array (
999
+ 'SCRIPT_FILENAME ' => '/home/John Doe/public_html/foo/app.php ' ,
1000
+ 'SCRIPT_NAME ' => '/foo/app.php ' ,
1001
+ 'PHP_SELF ' => '/foo/app.php ' ,
1002
+ ),
1003
+ '/foo ' ,
1004
+ '/bar+baz ' ,
1005
+ ),
1006
+ );
1007
+ }
1008
+
1009
+ /**
1010
+ * @dataProvider urlencodedStringPrefixData
1011
+ */
1012
+ public function testUrlencodedStringPrefix ($ string , $ prefix , $ expect )
1013
+ {
1014
+ $ request = new Request ;
1015
+
1016
+ $ me = new \ReflectionMethod ($ request , 'getUrlencodedPrefix ' );
1017
+ $ me ->setAccessible (true );
1018
+
1019
+ $ this ->assertSame ($ expect , $ me ->invoke ($ request , $ string , $ prefix ));
1020
+ }
1021
+
1022
+ public function urlencodedStringPrefixData ()
1023
+ {
1024
+ return array (
1025
+ array ('foo ' , 'foo ' , 'foo ' ),
1026
+ array ('fo%6f ' , 'foo ' , 'fo%6f ' ),
1027
+ array ('foo/bar ' , 'foo ' , 'foo ' ),
1028
+ array ('fo%6f/bar ' , 'foo ' , 'fo%6f ' ),
1029
+ array ('f%6f%6f/bar ' , 'foo ' , 'f%6f%6f ' ),
1030
+ array ('%66%6F%6F/bar ' , 'foo ' , '%66%6F%6F ' ),
1031
+ array ('fo+o/bar ' , 'fo+o ' , 'fo+o ' ),
1032
+ array ('fo%2Bo/bar ' , 'fo+o ' , 'fo%2Bo ' ),
1033
+ );
1034
+ }
1035
+
949
1036
private function stopTrustingProxyData ()
950
1037
{
951
1038
$ class = new \ReflectionClass ('Symfony \\Component \\HttpFoundation \\Request ' );
0 commit comments