@@ -40,6 +40,51 @@ public function testConstruct()
4040$ this ->assertEquals ('bar=foobar ' ,$ requestContext ->getQueryString ());
4141 }
4242
43+ public function testFromUriWithBaseUrl ()
44+ {
45+ $ requestContext = RequestContext::fromUri ('https://test.com:444/index.php ' );
46+
47+ $ this ->assertSame ('GET ' ,$ requestContext ->getMethod ());
48+ $ this ->assertSame ('https ' ,$ requestContext ->getScheme ());
49+ $ this ->assertSame ('test.com ' ,$ requestContext ->getHost ());
50+ $ this ->assertSame ('/index.php ' ,$ requestContext ->getBaseUrl ());
51+ $ this ->assertSame ('/ ' ,$ requestContext ->getPathInfo ());
52+ $ this ->assertSame (80 ,$ requestContext ->getHttpPort ());
53+ $ this ->assertSame (444 ,$ requestContext ->getHttpsPort ());
54+ }
55+
56+ public function testFromUriWithTrailingSlash ()
57+ {
58+ $ requestContext = RequestContext::fromUri ('http://test.com:8080/ ' );
59+
60+ $ this ->assertSame ('http ' ,$ requestContext ->getScheme ());
61+ $ this ->assertSame ('test.com ' ,$ requestContext ->getHost ());
62+ $ this ->assertSame (8080 ,$ requestContext ->getHttpPort ());
63+ $ this ->assertSame (443 ,$ requestContext ->getHttpsPort ());
64+ $ this ->assertSame ('' ,$ requestContext ->getBaseUrl ());
65+ $ this ->assertSame ('/ ' ,$ requestContext ->getPathInfo ());
66+ }
67+
68+ public function testFromUriWithoutTrailingSlash ()
69+ {
70+ $ requestContext = RequestContext::fromUri ('https://test.com ' );
71+
72+ $ this ->assertSame ('http ' ,$ requestContext ->getScheme ());
73+ $ this ->assertSame ('test.com ' ,$ requestContext ->getHost ());
74+ $ this ->assertSame ('' ,$ requestContext ->getBaseUrl ());
75+ $ this ->assertSame ('/ ' ,$ requestContext ->getPathInfo ());
76+ }
77+
78+ public function testFromUriBeingEmpty ()
79+ {
80+ $ requestContext = RequestContext::fromUri ('' );
81+
82+ $ this ->assertSame ('http ' ,$ requestContext ->getScheme ());
83+ $ this ->assertSame ('localhost ' ,$ requestContext ->getHost ());
84+ $ this ->assertSame ('' ,$ requestContext ->getBaseUrl ());
85+ $ this ->assertSame ('/ ' ,$ requestContext ->getPathInfo ());
86+ }
87+
4388public function testFromRequest ()
4489 {
4590$ request = Request::create ('https://test.com:444/foo?bar=baz ' );