wiki.techinc.nl/tests/phpunit/unit/includes/Rest/HeaderContainerTest.php
Tim Starling 0077c5da15 Use short array destructuring instead of list()
Introduced in PHP 7.1. Because it's shorter and looks nice.

I used regex replacement.

Change-Id: I0555e199d126cd44501f859cb4589f8bd49694da
2022-10-21 15:33:37 +11:00

171 lines
3.7 KiB
PHP

<?php
namespace MediaWiki\Tests\Rest;
use MediaWiki\Rest\HeaderContainer;
/**
* @covers \MediaWiki\Rest\HeaderContainer
*/
class HeaderContainerTest extends \MediaWikiUnitTestCase {
public static function provideSetHeader() {
return [
'simple' => [
[
[ 'Test', 'foo' ]
],
[ 'Test' => [ 'foo' ] ],
[ 'Test' => 'foo' ]
],
'replace' => [
[
[ 'Test', 'foo' ],
[ 'Test', 'bar' ],
],
[ 'Test' => [ 'bar' ] ],
[ 'Test' => 'bar' ],
],
'array value' => [
[
[ 'Test', [ '1', '2' ] ],
[ 'Test', [ '3', '4' ] ],
],
[ 'Test' => [ '3', '4' ] ],
[ 'Test' => '3, 4' ]
],
'preserve most recent case' => [
[
[ 'test', 'foo' ],
[ 'tesT', 'bar' ],
],
[ 'tesT' => [ 'bar' ] ],
[ 'tesT' => 'bar' ]
],
'empty' => [ [], [], [] ],
];
}
/** @dataProvider provideSetHeader */
public function testSetHeader( $setOps, $headers, $lines ) {
$hc = new HeaderContainer;
foreach ( $setOps as [ $name, $value ] ) {
$hc->setHeader( $name, $value );
}
$this->assertSame( $headers, $hc->getHeaders() );
$this->assertSame( $lines, $hc->getHeaderLines() );
}
public static function provideAddHeader() {
return [
'simple' => [
[
[ 'Test', 'foo' ]
],
[ 'Test' => [ 'foo' ] ],
[ 'Test' => 'foo' ]
],
'add' => [
[
[ 'Test', 'foo' ],
[ 'Test', 'bar' ],
],
[ 'Test' => [ 'foo', 'bar' ] ],
[ 'Test' => 'foo, bar' ],
],
'array value' => [
[
[ 'Test', [ '1', '2' ] ],
[ 'Test', [ '3', '4' ] ],
],
[ 'Test' => [ '1', '2', '3', '4' ] ],
[ 'Test' => '1, 2, 3, 4' ]
],
'preserve original case' => [
[
[ 'Test', 'foo' ],
[ 'tesT', 'bar' ],
],
[ 'Test' => [ 'foo', 'bar' ] ],
[ 'Test' => 'foo, bar' ]
],
];
}
/** @dataProvider provideAddHeader */
public function testAddHeader( $addOps, $headers, $lines ) {
$hc = new HeaderContainer;
foreach ( $addOps as [ $name, $value ] ) {
$hc->addHeader( $name, $value );
}
$this->assertSame( $headers, $hc->getHeaders() );
$this->assertSame( $lines, $hc->getHeaderLines() );
}
public static function provideRemoveHeader() {
return [
'simple' => [
[ [ 'Test', 'foo' ] ],
[ 'Test' ],
[],
[]
],
'case mismatch' => [
[ [ 'Test', 'foo' ] ],
[ 'tesT' ],
[],
[]
],
'remove nonexistent' => [
[ [ 'A', '1' ] ],
[ 'B' ],
[ 'A' => [ '1' ] ],
[ 'A' => '1' ]
],
];
}
/** @dataProvider provideRemoveHeader */
public function testRemoveHeader( $addOps, $removeOps, $headers, $lines ) {
$hc = new HeaderContainer;
foreach ( $addOps as [ $name, $value ] ) {
$hc->addHeader( $name, $value );
}
foreach ( $removeOps as $name ) {
$hc->removeHeader( $name );
}
$this->assertSame( $headers, $hc->getHeaders() );
$this->assertSame( $lines, $hc->getHeaderLines() );
}
public function testHasHeader() {
$hc = new HeaderContainer;
$hc->addHeader( 'A', '1' );
$hc->addHeader( 'B', '2' );
$hc->addHeader( 'C', '3' );
$hc->removeHeader( 'B' );
$hc->removeHeader( 'c' );
$this->assertTrue( $hc->hasHeader( 'A' ) );
$this->assertTrue( $hc->hasHeader( 'a' ) );
$this->assertFalse( $hc->hasHeader( 'B' ) );
$this->assertFalse( $hc->hasHeader( 'c' ) );
$this->assertFalse( $hc->hasHeader( 'C' ) );
}
public function testGetRawHeaderLines() {
$hc = new HeaderContainer;
$hc->addHeader( 'A', '1' );
$hc->addHeader( 'a', '2' );
$hc->addHeader( 'b', '3' );
$hc->addHeader( 'Set-Cookie', 'x' );
$hc->addHeader( 'SET-cookie', 'y' );
$this->assertSame(
[
'A: 1, 2',
'b: 3',
'Set-Cookie: x',
'Set-Cookie: y',
],
$hc->getRawHeaderLines()
);
}
}