File tree Expand file tree Collapse file tree 5 files changed +46
-6
lines changed
Expand file tree Collapse file tree 5 files changed +46
-6
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ class HeaderLine {
1010 protected $ values ;
1111
1212 public function __construct (string $ name , string ...$ values ) {
13+ $ name = str_replace ("_ " , "- " , $ name );
1314 $ this ->originalNameCase = $ name ;
1415 $ this ->name = strtolower ($ name );
1516 $ this ->values = $ values ;
Original file line number Diff line number Diff line change @@ -49,7 +49,7 @@ public function createServerRequestFromGlobalState(
4949 * @param array<string, string> $get
5050 * @param array<string, string> $post
5151 */
52- private function buildRequest (
52+ public function buildRequest (
5353 string $ method ,
5454 UriInterface $ uri ,
5555 RequestHeaders $ headers ,
@@ -85,7 +85,7 @@ private function buildRequest(
8585 /**
8686 * @param array<string, string> $server
8787 */
88- protected function buildRequestHeaders (array $ server ):RequestHeaders {
88+ public function buildRequestHeaders (array $ server ):RequestHeaders {
8989 $ headers = new RequestHeaders ();
9090 foreach ($ server as $ key => $ value ) {
9191 if (str_starts_with ($ key , "HTTP_ " )) {
@@ -99,7 +99,7 @@ protected function buildRequestHeaders(array $server):RequestHeaders {
9999 /**
100100 * @param array<string, string> $server
101101 */
102- protected function buildUri (array $ server ):UriInterface {
102+ public function buildUri (array $ server ):UriInterface {
103103 $ uri = new Uri ($ server ["REQUEST_URI " ] ?? null );
104104
105105 if ($ server ["HTTPS " ] ?? null ) {
Original file line number Diff line number Diff line change @@ -37,6 +37,7 @@ public function testContains() {
3737 $ headers = new Headers (self ::HEADER_ARRAY );
3838 self ::assertTrue ($ headers ->contains ("Etag " ));
3939 self ::assertFalse ($ headers ->contains ("Ftag " ));
40+ self ::assertTrue ($ headers ->contains ("content-type " ));
4041 }
4142
4243 public function testAdd () {
@@ -94,8 +95,8 @@ public function testGetNotExist() {
9495
9596 public function testGet () {
9697 $ headers = new Headers (self ::HEADER_ARRAY );
97- $ h = $ headers ->get ("Date " );
98- self ::assertEquals (self ::HEADER_ARRAY ["Date " ], $ h );
98+ self :: assertEquals ( self :: HEADER_ARRAY [ " Date " ], $ headers ->get ("date " ) );
99+ self ::assertEquals (self ::HEADER_ARRAY ["Content-Type " ], $ headers -> get ( " content-type " ) );
99100 }
100101
101102 public function testGetMultiple () {
@@ -164,4 +165,4 @@ public function testCaseInsensitive() {
164165
165166 self ::assertTrue ($ headers ->contains ("ConTent-Type " ));
166167 }
167- }
168+ }
Original file line number Diff line number Diff line change 11<?php
22namespace Gt \Http \Test ;
33
4+ use Gt \Http \Header \HeaderLine ;
45use Gt \Http \Header \RequestHeaders ;
56use Gt \Http \Request ;
67use Gt \Http \RequestMethod ;
@@ -46,6 +47,26 @@ public function testGetProtocolVersionRequest(
4647 self ::assertEquals ($ expected , $ protocolVersion );
4748 }
4849
50+ public function testGetHeaderLine () {
51+ $ headerName = "x-example " ;
52+ $ headerValue = uniqid ();
53+
54+ $ headerLine = self ::createMock (HeaderLine::class);
55+ $ headerLine ->expects (self ::once ())
56+ ->method ("getValuesCommaSeparated " )
57+ ->willReturn ($ headerValue );
58+
59+ $ uri = self ::createMock (Uri::class);
60+ $ headers = self ::createMock (RequestHeaders::class);
61+ $ headers ->expects (self ::once ())
62+ ->method ("get " )
63+ ->with ($ headerName )
64+ ->willReturn ($ headerLine );
65+
66+ $ sut = new Request ("GET " , $ uri , $ headers );
67+ self ::assertSame ($ headerValue , $ sut ->getHeaderLine ($ headerName ));
68+ }
69+
4970 public static function data_request ():array {
5071 $ data = [];
5172
Original file line number Diff line number Diff line change @@ -100,4 +100,21 @@ public function testCreateServerRequestFromGlobals_headers():void {
100100 ], [], [], []);
101101 self ::assertEquals ("1.1 " , $ request ->getProtocolVersion ());
102102 }
103+
104+ public function testBuildRequestHeaders_hyphenated ():void {
105+ $ server = [
106+ "HTTP_ACCEPT " => "application/json " ,
107+ "HTTP_ACCEPT_LANGUAGE " => "en-GB " ,
108+ "HTTP_X_KEY " => "abc123 " ,
109+ ];
110+
111+ $ sut = new RequestFactory ();
112+ $ requestHeaders = $ sut ->buildRequestHeaders ($ server );
113+
114+ foreach ($ server as $ key => $ value ) {
115+ $ keyWithoutHttp = substr ($ key , strlen ("HTTP_ " ));
116+ $ keyHyphenated = str_replace ("_ " , "- " , $ keyWithoutHttp );
117+ self ::assertEquals ($ value , $ requestHeaders ->get ($ keyHyphenated ));
118+ }
119+ }
103120}
You can’t perform that action at this time.
0 commit comments