mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Merge pull request #12165 from appwrite/fix/CLO-4280-getheader-string-coerce
fix: coerce non-string header values in Request::getHeader
This commit is contained in:
@@ -209,7 +209,11 @@ class Request extends UtopiaRequest
|
||||
public function getHeader(string $key, string $default = ''): string
|
||||
{
|
||||
$headers = $this->getHeaders();
|
||||
return $headers[$key] ?? $default;
|
||||
$value = $headers[$key] ?? $default;
|
||||
if (\is_array($value)) {
|
||||
$value = $value[0] ?? $default;
|
||||
}
|
||||
return \is_string($value) ? $value : $default;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -161,6 +161,37 @@ class RequestTest extends TestCase
|
||||
$this->assertSame($secondRoute, $secondRequest->getRoute());
|
||||
}
|
||||
|
||||
public function testGetHeaderReturnsStringValue(): void
|
||||
{
|
||||
$this->request->addHeader('referer', 'https://example.com');
|
||||
|
||||
$this->assertSame('https://example.com', $this->request->getHeader('referer'));
|
||||
}
|
||||
|
||||
public function testGetHeaderReturnsDefaultWhenMissing(): void
|
||||
{
|
||||
$this->assertSame('', $this->request->getHeader('referer'));
|
||||
$this->assertSame('fallback', $this->request->getHeader('referer', 'fallback'));
|
||||
}
|
||||
|
||||
public function testGetHeaderCoercesArrayToFirstElement(): void
|
||||
{
|
||||
$swoole = new SwooleRequest();
|
||||
$swoole->header = ['referer' => ['https://a.example', 'https://b.example']];
|
||||
$request = new Request($swoole);
|
||||
|
||||
$this->assertSame('https://a.example', $request->getHeader('referer'));
|
||||
}
|
||||
|
||||
public function testGetHeaderReturnsDefaultWhenValueNotString(): void
|
||||
{
|
||||
$swoole = new SwooleRequest();
|
||||
$swoole->header = ['referer' => 123];
|
||||
$request = new Request($swoole);
|
||||
|
||||
$this->assertSame('fallback', $request->getHeader('referer', 'fallback'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper to attach a route with multiple SDK methods to the request.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user