1+ <?php
2+ namespace Gt \Http \Test ;
3+
4+ use Gt \Http \ServerInfo ;
5+ use PHPUnit \Framework \TestCase ;
6+
7+ class ServerInfoTest extends TestCase {
8+ public function testGetHttpHeadersArrayEmpty () {
9+ $ sut = new ServerInfo (self ::getServerArray ());
10+ self ::assertEmpty ($ sut ->getHttpHeadersArray ());
11+ }
12+
13+ public function testGetHttpHeadersArray () {
14+ $ httpHeaders = [
15+ "HTTP_ACCEPT " => "test/php " ,
16+ "HTTP_HOST " => "localhost " ,
17+ "HTTP_USER_AGENT " => "PHPUnit " ,
18+ ];
19+ $ server = array_merge (
20+ self ::getServerArray (),
21+ $ httpHeaders
22+ );
23+ $ sut = new ServerInfo ($ server );
24+ $ httpHeadersArray = $ sut ->getHttpHeadersArray ();
25+ self ::assertCount (
26+ count ($ httpHeaders ),
27+ $ httpHeadersArray
28+ );
29+
30+ foreach ($ httpHeaders as $ key => $ value ) {
31+ $ httplessKey = substr ($ key , strlen ("HTTP_ " ));
32+ self ::assertArrayHasKey ($ httplessKey , $ httpHeadersArray );
33+ self ::assertEquals ($ value , $ httpHeadersArray [$ httplessKey ]);
34+ }
35+ }
36+
37+ public function testGetServerProtocol () {
38+ $ sut = new ServerInfo (self ::getServerArray ());
39+ self ::assertEquals ("TEST/123 " , $ sut ->getServerProtocol ());
40+ }
41+
42+ public function testGetServerProtocolVersion () {
43+ $ sut = new ServerInfo (self ::getServerArray ());
44+ self ::assertEquals (123 , $ sut ->getServerProtocolVersion ());
45+ }
46+
47+ public function testGetRequestMethod () {
48+ $ sut = new ServerInfo (self ::getServerArray ());
49+ self ::assertEquals ("TEST " , $ sut ->getRequestMethod ());
50+ }
51+
52+ public function testGetRequestTime () {
53+ $ sut = new ServerInfo (self ::getServerArray ());
54+ self ::assertEquals ((int )microtime (true ), (int )$ sut ->getRequestTime ());
55+ }
56+
57+ public function testGetQueryString () {
58+ $ sut = new ServerInfo (self ::getServerArray ());
59+ self ::assertEquals ("key1=value1&key2=value2 " , $ sut ->getQueryString ());
60+ }
61+
62+ public function testWithQueryString () {
63+ $ server = new ServerInfo (self ::getServerArray ());
64+ $ sut = $ server ->withQueryString ("key3=value3 " );
65+ self ::assertEquals ("key1=value1&key2=value2 " , $ server ->getQueryString ());
66+ self ::assertEquals ("key3=value3 " , $ sut ->getQueryString ());
67+ }
68+
69+ public function testGetQueryParams () {
70+ $ sut = new ServerInfo (self ::getServerArray ());
71+ $ expected = [
72+ "key1 " => "value1 " ,
73+ "key2 " => "value2 " ,
74+ ];
75+ self ::assertEquals ($ expected , $ sut ->getQueryParams ());
76+ }
77+
78+ public function testWithQueryParams () {
79+ $ server = new ServerInfo (self ::getServerArray ());
80+ $ origParams = $ server ->getQueryParams ();
81+ $ newParams = [
82+ "key3 " => "value3 " ,
83+ "key4 " => "value4 " ,
84+ ];
85+ $ sut = $ server ->withQueryParams ($ newParams );
86+ self ::assertEquals ($ origParams , $ server ->getQueryParams ());
87+ self ::assertEquals ($ newParams , $ sut ->getQueryParams ());
88+ }
89+
90+ public function testIsHttps () {
91+ $ sut = new ServerInfo (self ::getServerArray ());
92+ self ::assertFalse ($ sut ->isHttps ());
93+ $ sut = new ServerInfo (["HTTPS " => true ]);
94+ self ::assertTrue ($ sut ->isHttps ());
95+ }
96+
97+ public function testGetDocumentRoot () {
98+ $ sut = new ServerInfo (self ::getServerArray ());
99+ self ::assertEquals (__DIR__ , $ sut ->getDocumentRoot ());
100+ }
101+
102+ public function testGetRemoteAddress () {
103+ $ sut = new ServerInfo (self ::getServerArray ());
104+ self ::assertEquals ("127.0.0.1 " , $ sut ->getRemoteAddress ());
105+ }
106+
107+ public function testGetScriptFilename () {
108+ $ sut = new ServerInfo (self ::getServerArray ());
109+ self ::assertEquals (__FILE__ , $ sut ->getScriptFilename ());
110+ }
111+
112+ public function testGetScriptName () {
113+ $ sut = new ServerInfo (self ::getServerArray ());
114+ self ::assertEquals (__FILE__ , $ sut ->getScriptName ());
115+ }
116+
117+ public function testGetRequestUri () {
118+ $ sut = new ServerInfo (self ::getServerArray ());
119+ self ::assertEquals ("/example?key1=value1&key2=value2 " , $ sut ->getRequestUri ());
120+ }
121+
122+ public function testNullFields () {
123+ $ sut = new ServerInfo ([]);
124+ self ::assertNull ($ sut ->getPhpSelf ());
125+ self ::assertNull ($ sut ->getGatewayInterface ());
126+ self ::assertNull ($ sut ->getServerAddress ());
127+ self ::assertNull ($ sut ->getServerName ());
128+ self ::assertNull ($ sut ->getServerSoftware ());
129+ self ::assertNull ($ sut ->getRemoteHost ());
130+ self ::assertNull ($ sut ->getRemotePort ());
131+ self ::assertNull ($ sut ->getRemoteUser ());
132+ self ::assertNull ($ sut ->getRedirectRemoteUser ());
133+ self ::assertNull ($ sut ->getServerAdmin ());
134+ self ::assertNull ($ sut ->getServerPort ());
135+ self ::assertNull ($ sut ->getServerSignature ());
136+ self ::assertNull ($ sut ->getAuthDigest ());
137+ self ::assertNull ($ sut ->getAuthUser ());
138+ self ::assertNull ($ sut ->getAuthPassword ());
139+ self ::assertNull ($ sut ->getAuthType ());
140+ self ::assertNull ($ sut ->getRequestScheme ());
141+ self ::assertEmpty ($ sut ->getParams ());
142+ }
143+
144+ protected function getServerArray ():array {
145+ return [
146+ "PHP_SELF " => __FILE__ ,
147+ "SERVER_ADDR " => "127.0.0.1 " ,
148+ "REMOTE_ADDR " => "127.0.0.1 " ,
149+ "SERVER_SOFTWARE " => "PHP.Gt " ,
150+ "SERVER_PROTOCOL " => "TEST/123 " ,
151+ "REQUEST_METHOD " => "TEST " ,
152+ "REQUEST_TIME_FLOAT " => microtime (true ),
153+ "QUERY_STRING " => "key1=value1&key2=value2 " ,
154+ "DOCUMENT_ROOT " => __DIR__ ,
155+ "SCRIPT_FILENAME " => __FILE__ ,
156+ "SCRIPT_NAME " => __FILE__ ,
157+ "REQUEST_URI " => "/example?key1=value1&key2=value2 " ,
158+ ];
159+ }
160+ }
0 commit comments