Skip to content

Commit

Permalink
Merge pull request #77 from l0gicgate/SetHeadersPreserveCase
Browse files Browse the repository at this point in the history
Ensure Headers::setHeader preserves original case
  • Loading branch information
l0gicgate committed May 3, 2019
2 parents 61594b0 + d15f864 commit c51f3a1
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/Headers.php
Expand Up @@ -97,6 +97,12 @@ public function setHeader(string $name, $values): HeadersInterface
$originalName = $this->normalizeHeaderName($name, true);
$normalizedName = $this->normalizeHeaderName($name);

// Ensure we preserve original case if the header already exists in the stack
if (isset($this->headers[$normalizedName])) {
$existingHeader = $this->headers[$normalizedName];
$originalName = $existingHeader->getOriginalName();
}

$this->headers[$normalizedName] = new Header($originalName, $normalizedName, $values);

return $this;
Expand Down
12 changes: 12 additions & 0 deletions tests/HeadersTest.php
Expand Up @@ -88,6 +88,18 @@ public function testSetHeader()
$this->assertEquals(['Content-Length' => ['100']], $headers->getHeaders(true));
}

public function testSetHeaderPreservesOriginalCaseIfHeaderAlreadyExists()
{
$headers = new Headers([
'CONTENT-LENGTH' => 0,
]);

$headers->setHeader('Content-Length', 100);

$this->assertEquals(['content-length' => ['100']], $headers->getHeaders());
$this->assertEquals(['CONTENT-LENGTH' => ['100']], $headers->getHeaders(true));
}

public function testSetHeaders()
{
$headers = new Headers([
Expand Down

0 comments on commit c51f3a1

Please sign in to comment.