@@ -58,6 +58,54 @@ public function testCreateRedirectResponseWithRequestsDomain()
5858 $ this ->assertTrue ($ response ->isRedirect ('http://localhost/blog ' ));
5959 }
6060
61+ /**
62+ * @dataProvider validRequestDomainUrls
63+ */
64+ public function testCreateRedirectResponse (?string $ domainRegexp , string $ path , string $ expectedRedirectUri )
65+ {
66+ $ utils = new HttpUtils ($ this ->getUrlGenerator (), null , $ domainRegexp );
67+ $ response = $ utils ->createRedirectResponse ($ this ->getRequest (), $ path );
68+
69+ $ this ->assertTrue ($ response ->isRedirect ($ expectedRedirectUri ));
70+ $ this ->assertEquals (302 , $ response ->getStatusCode ());
71+ }
72+
73+ public static function validRequestDomainUrls ()
74+ {
75+ return [
76+ '/foobar ' => [
77+ null ,
78+ '/foobar ' ,
79+ 'http://localhost/foobar ' ,
80+ ],
81+ 'http://symfony.com/ without domain regex ' => [
82+ null ,
83+ 'http://symfony.com/ ' ,
84+ 'http://symfony.com/ ' ,
85+ ],
86+ 'http://localhost/blog with #^https?://symfony\.com$#i ' => [
87+ '#^https?://symfony\.com$#i ' ,
88+ 'http://symfony.com/blog ' ,
89+ 'http://symfony.com/blog ' ,
90+ ],
91+ 'http://localhost/blog with #^https?://%s$#i ' => [
92+ '#^https?://%s$#i ' ,
93+ 'http://localhost/blog ' ,
94+ 'http://localhost/blog ' ,
95+ ],
96+ 'custom scheme ' => [
97+ null ,
98+ 'android-app://com.google.android.gm/ ' ,
99+ 'android-app://com.google.android.gm/ ' ,
100+ ],
101+ 'custom scheme with all URL components ' => [
102+ null ,
103+ 'android-app://foo:[email protected] :8080/software/index.html?lite=true#section1 ' ,
104+ 'android-app://foo:[email protected] :8080/software/index.html?lite=true#section1 ' ,
105+ ],
106+ ];
107+ }
108+
61109 /**
62110 * @dataProvider badRequestDomainUrls
63111 */
@@ -77,6 +125,7 @@ public static function badRequestDomainUrls()
77125 ['http:/ \\pirate.net/foo ' ],
78126 ['http: \\/pirate.net/foo ' ],
79127 ['http://////pirate.net/foo ' ],
128+ ['http:///foo ' ],
80129 ];
81130 }
82131
0 commit comments