@@ -238,49 +238,53 @@ public function testCreate()
238
238
$ this ->assertEquals ('http://test.com/foo ' , $ request ->getUri ());
239
239
}
240
240
241
- public function testCreateWithRequestUri ()
241
+ /**
242
+ * @dataProvider getRequestUriData
243
+ */
244
+ public function testGetRequestUri ($ serverRequestUri , $ expected , $ message )
242
245
{
243
- $ request = Request::create ('http://test.com:80/foo ' );
244
- $ request ->server ->set ('REQUEST_URI ' , 'http://test.com:80/foo ' );
245
- $ this ->assertEquals ('http://test.com/foo ' , $ request ->getUri ());
246
- $ this ->assertEquals ('/foo ' , $ request ->getPathInfo ());
247
- $ this ->assertEquals ('test.com ' , $ request ->getHost ());
248
- $ this ->assertEquals ('test.com ' , $ request ->getHttpHost ());
249
- $ this ->assertEquals (80 , $ request ->getPort ());
250
- $ this ->assertFalse ($ request ->isSecure ());
246
+ $ request = new Request ();
247
+ $ request ->server ->add (array (
248
+ 'REQUEST_URI ' => $ serverRequestUri ,
251
249
252
- $ request = Request::create ('http://test.com:8080/foo ' );
253
- $ request ->server ->set ('REQUEST_URI ' , 'http://test.com:8080/foo ' );
254
- $ this ->assertEquals ('http://test.com:8080/foo ' , $ request ->getUri ());
255
- $ this ->assertEquals ('/foo ' , $ request ->getPathInfo ());
256
- $ this ->assertEquals ('test.com ' , $ request ->getHost ());
257
- $ this ->assertEquals ('test.com:8080 ' , $ request ->getHttpHost ());
258
- $ this ->assertEquals (8080 , $ request ->getPort ());
259
- $ this ->assertFalse ($ request ->isSecure ());
250
+ // For having http://test.com
251
+ 'SERVER_NAME ' => 'test.com ' ,
252
+ 'SERVER_PORT ' => 80 ,
253
+ ));
260
254
261
- $ request = Request::create ('http://test.com/foo?bar=foo ' , 'GET ' , array ('bar ' => 'baz ' ));
262
- $ request ->server ->set ('REQUEST_URI ' , 'http://test.com/foo?bar=foo ' );
263
- $ this ->assertEquals ('http://test.com/foo?bar=baz ' , $ request ->getUri ());
264
- $ this ->assertEquals ('/foo ' , $ request ->getPathInfo ());
265
- $ this ->assertEquals ('bar=baz ' , $ request ->getQueryString ());
266
- $ this ->assertEquals ('test.com ' , $ request ->getHost ());
267
- $ this ->assertEquals ('test.com ' , $ request ->getHttpHost ());
268
- $ this ->assertEquals (80 , $ request ->getPort ());
269
- $ this ->assertFalse ($ request ->isSecure ());
255
+ $ this ->assertSame ($ expected , $ request ->getRequestUri (), $ message );
256
+ $ this ->assertSame ($ expected , $ request ->server ->get ('REQUEST_URI ' ), 'Normalize the request URI. ' );
257
+ }
270
258
271
- $ request = Request::create ('https://test.com:443/foo ' );
272
- $ request ->server ->set ('REQUEST_URI ' , 'https://test.com:443/foo ' );
273
- $ this ->assertEquals ('https://test.com/foo ' , $ request ->getUri ());
274
- $ this ->assertEquals ('/foo ' , $ request ->getPathInfo ());
275
- $ this ->assertEquals ('test.com ' , $ request ->getHost ());
276
- $ this ->assertEquals ('test.com ' , $ request ->getHttpHost ());
277
- $ this ->assertEquals (443 , $ request ->getPort ());
278
- $ this ->assertTrue ($ request ->isSecure ());
259
+ public function getRequestUriData ()
260
+ {
261
+ $ message = 'Do not modify the path. ' ;
262
+ yield array ('/foo ' , '/foo ' , $ message );
263
+ yield array ('//bar/foo ' , '//bar/foo ' , $ message );
264
+ yield array ('///bar/foo ' , '///bar/foo ' , $ message );
279
265
280
- // Fragment should not be included in the URI
281
- $ request = Request::create ('http://test.com/foo#bar ' );
282
- $ request ->server ->set ('REQUEST_URI ' , 'http://test.com/foo#bar ' );
283
- $ this ->assertEquals ('http://test.com/foo ' , $ request ->getUri ());
266
+ $ message = 'Handle when the scheme, host are on REQUEST_URI. ' ;
267
+ yield array ('http://test.com/foo?bar=baz ' , '/foo?bar=baz ' , $ message );
268
+
269
+ $ message = 'Handle when the scheme, host and port are on REQUEST_URI. ' ;
270
+ yield array ('http://test.com:80/foo ' , '/foo ' , $ message );
271
+ yield array ('https://test.com:8080/foo ' , '/foo ' , $ message );
272
+ yield array ('https://test.com:443/foo ' , '/foo ' , $ message );
273
+
274
+ $ message = 'Fragment should not be included in the URI ' ;
275
+ yield array ('http://test.com/foo#bar ' , '/foo ' , $ message );
276
+ yield array ('/foo#bar ' , '/foo ' , $ message );
277
+ }
278
+
279
+ public function testGetRequestUriWithoutRequiredHeader ()
280
+ {
281
+ $ expected = '' ;
282
+
283
+ $ request = new Request ();
284
+
285
+ $ message = 'Fallback to empty URI when headers are missing. ' ;
286
+ $ this ->assertSame ($ expected , $ request ->getRequestUri (), $ message );
287
+ $ this ->assertSame ($ expected , $ request ->server ->get ('REQUEST_URI ' ), 'Normalize the request URI. ' );
284
288
}
285
289
286
290
public function testCreateCheckPrecedence ()
0 commit comments