Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/Header/HeaderLine.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class HeaderLine {
protected $values;

public function __construct(string $name, string...$values) {
$name = str_replace("_", "-", $name);
$this->originalNameCase = $name;
$this->name = strtolower($name);
$this->values = $values;
Expand Down
6 changes: 3 additions & 3 deletions src/RequestFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public function createServerRequestFromGlobalState(
* @param array<string, string> $get
* @param array<string, string> $post
*/
private function buildRequest(
public function buildRequest(
string $method,
UriInterface $uri,
RequestHeaders $headers,
Expand Down Expand Up @@ -85,7 +85,7 @@ private function buildRequest(
/**
* @param array<string, string> $server
*/
protected function buildRequestHeaders(array $server):RequestHeaders {
public function buildRequestHeaders(array $server):RequestHeaders {
$headers = new RequestHeaders();
foreach($server as $key => $value) {
if(str_starts_with($key, "HTTP_")) {
Expand All @@ -99,7 +99,7 @@ protected function buildRequestHeaders(array $server):RequestHeaders {
/**
* @param array<string, string> $server
*/
protected function buildUri(array $server):UriInterface {
public function buildUri(array $server):UriInterface {
$uri = new Uri($server["REQUEST_URI"] ?? null);

if($server["HTTPS"] ?? null) {
Expand Down
7 changes: 4 additions & 3 deletions test/phpunit/Header/HeadersTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ public function testContains() {
$headers = new Headers(self::HEADER_ARRAY);
self::assertTrue($headers->contains("Etag"));
self::assertFalse($headers->contains("Ftag"));
self::assertTrue($headers->contains("content-type"));
}

public function testAdd() {
Expand Down Expand Up @@ -94,8 +95,8 @@ public function testGetNotExist() {

public function testGet() {
$headers = new Headers(self::HEADER_ARRAY);
$h = $headers->get("Date");
self::assertEquals(self::HEADER_ARRAY["Date"], $h);
self::assertEquals(self::HEADER_ARRAY["Date"], $headers->get("date"));
self::assertEquals(self::HEADER_ARRAY["Content-Type"], $headers->get("content-type"));
}

public function testGetMultiple() {
Expand Down Expand Up @@ -164,4 +165,4 @@ public function testCaseInsensitive() {

self::assertTrue($headers->contains("ConTent-Type"));
}
}
}
21 changes: 21 additions & 0 deletions test/phpunit/MessageTest.php
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?php
namespace Gt\Http\Test;

use Gt\Http\Header\HeaderLine;
use Gt\Http\Header\RequestHeaders;
use Gt\Http\Request;
use Gt\Http\RequestMethod;
Expand Down Expand Up @@ -46,6 +47,26 @@ public function testGetProtocolVersionRequest(
self::assertEquals($expected, $protocolVersion);
}

public function testGetHeaderLine() {
$headerName = "x-example";
$headerValue = uniqid();

$headerLine = self::createMock(HeaderLine::class);
$headerLine->expects(self::once())
->method("getValuesCommaSeparated")
->willReturn($headerValue);

$uri = self::createMock(Uri::class);
$headers = self::createMock(RequestHeaders::class);
$headers->expects(self::once())
->method("get")
->with($headerName)
->willReturn($headerLine);

$sut = new Request("GET", $uri, $headers);
self::assertSame($headerValue, $sut->getHeaderLine($headerName));
}

public static function data_request():array {
$data = [];

Expand Down
17 changes: 17 additions & 0 deletions test/phpunit/RequestFactoryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,21 @@ public function testCreateServerRequestFromGlobals_headers():void {
], [], [], []);
self::assertEquals("1.1", $request->getProtocolVersion());
}

public function testBuildRequestHeaders_hyphenated():void {
$server = [
"HTTP_ACCEPT" => "application/json",
"HTTP_ACCEPT_LANGUAGE" => "en-GB",
"HTTP_X_KEY" => "abc123",
];

$sut = new RequestFactory();
$requestHeaders = $sut->buildRequestHeaders($server);

foreach($server as $key => $value) {
$keyWithoutHttp = substr($key, strlen("HTTP_"));
$keyHyphenated = str_replace("_", "-", $keyWithoutHttp);
self::assertEquals($value, $requestHeaders->get($keyHyphenated));
}
}
}