zx/vendor/qiniu/php-sdk/tests/Qiniu/Tests/HeaderTest.php

185 lines
4.9 KiB
PHP

<?php
namespace Qiniu\Tests;
use PHPUnit\Framework\TestCase;
use Qiniu\Http\Header;
class HeaderTest extends TestCase
{
protected $heads = array(
':status' => array('200'),
':x-test-1' => array('hello1'),
':x-Test-2' => array('hello2'),
'content-type' => array('application/json'),
'CONTENT-LENGTH' => array(1234),
'oRiGin' => array('https://www.qiniu.com'),
'ReFer' => array('www.qiniu.com'),
'Last-Modified' => array('Mon, 06 Sep 2021 06:44:52 GMT'),
'acCePt-ChArsEt' => array('utf-8'),
'x-test-3' => array('hello3'),
'cache-control' => array('no-cache', 'no-store'),
);
public function testNormalizeKey()
{
$except = array(
':status',
':x-test-1',
':x-Test-2',
'Content-Type',
'Content-Length',
'Origin',
'Refer',
'Last-Modified',
'Accept-Charset',
'X-Test-3',
'Cache-Control'
);
$actual = array_map(function ($str) {
return Header::normalizeKey($str);
}, array_keys($this->heads));
$this->assertEquals($actual, $except);
}
public function testInvalidKeyName()
{
$except = array(
'a:x-test-1',
);
$actual = array_map(function ($str) {
return Header::normalizeKey($str);
}, $except);
$this->assertEquals($except, $actual);
}
public function testGetRawData()
{
$header = new Header($this->heads);
foreach ($this->heads as $k => $v) {
$rawHeader = $header->getRawData();
$this->assertEquals($v, $rawHeader[Header::normalizeKey($k)]);
}
}
public function testOffsetExists()
{
$header = new Header($this->heads);
foreach (array_keys($this->heads) as $k) {
$this->assertNotNull($header[$k]);
}
$except = array(
':status',
':x-test-1',
':x-Test-2',
'Content-Type',
'Content-Length',
'Origin',
'Refer',
'Last-Modified',
'Accept-Charset',
'X-Test-3',
'Cache-Control'
);
foreach ($except as $k) {
$this->assertNotNull($header[$k], $k." is null");
}
}
public function testOffsetGet()
{
$header = new Header($this->heads);
foreach ($this->heads as $k => $v) {
$this->assertEquals($v[0], $header[$k]);
}
$this->assertNull($header['no-exist']);
}
public function testOffsetSet()
{
$header = new Header($this->heads);
$header["X-Test-3"] = "hello";
$this->assertEquals("hello", $header["X-Test-3"]);
$header["x-test-3"] = "hello test3";
$this->assertEquals("hello test3", $header["x-test-3"]);
$header[":x-Test-2"] = "hello";
$this->assertEquals("hello", $header[":x-Test-2"]);
$header[":x-test-2"] = "hello test2";
$this->assertEquals("hello", $header[":x-Test-2"]);
}
public function testOffsetUnset()
{
$header = new Header($this->heads);
unset($header["X-Test-3"]);
$this->assertFalse(isset($header["X-Test-3"]));
$header = new Header($this->heads);
unset($header["x-test-3"]);
$this->assertFalse(isset($header["x-test-3"]));
$header = new Header($this->heads);
unset($header[":x-test-2"]);
$this->assertTrue(isset($header[":x-Test-2"]));
$header = new Header($this->heads);
unset($header[":x-Test-2"]);
$this->assertFalse(isset($header[":x-Test-2"]));
}
public function testGetIterator()
{
$header = new Header($this->heads);
$hasException = false;
try {
foreach ($header as $k => $v) {
$hasException = !isset($header[$k]);
}
} catch (\Exception $e) {
$hasException = true;
}
$this->assertFalse($hasException);
}
public function testEmptyHeaderIterator()
{
$emptyHeader = new Header();
$hasException = false;
try {
foreach ($emptyHeader as $k => $v) {
$hasException = !isset($header[$k]);
}
} catch (\Exception $e) {
$hasException = true;
}
$this->assertFalse($hasException);
}
public function testCount()
{
$header = new Header($this->heads);
$this->assertEquals(count($this->heads), count($header));
}
public function testFromRaw()
{
$lines = array();
foreach ($this->heads as $k => $vs) {
foreach ($vs as $v) {
array_push($lines, $k . ": " . $v);
}
}
$raw = implode("\r\n", $lines);
$headerFromRaw = Header::fromRawText($raw);
$this->assertEquals(new Header($this->heads), $headerFromRaw);
}
}