3 namespace MediaWiki\Tests\Rest
;
5 use MediaWiki\Rest\HeaderContainer
;
8 * @covers \MediaWiki\Rest\HeaderContainer
10 class HeaderContainerTest
extends \MediaWikiUnitTestCase
{
11 public static function provideSetHeader() {
17 [ 'Test' => [ 'foo' ] ],
25 [ 'Test' => [ 'bar' ] ],
30 [ 'Test', [ '1', '2' ] ],
31 [ 'Test', [ '3', '4' ] ],
33 [ 'Test' => [ '3', '4' ] ],
36 'preserve most recent case' => [
41 [ 'tesT' => [ 'bar' ] ],
44 'empty' => [ [], [], [] ],
48 /** @dataProvider provideSetHeader */
49 public function testSetHeader( $setOps, $headers, $lines ) {
50 $hc = new HeaderContainer
;
51 foreach ( $setOps as list( $name, $value ) ) {
52 $hc->setHeader( $name, $value );
54 $this->assertSame( $headers, $hc->getHeaders() );
55 $this->assertSame( $lines, $hc->getHeaderLines() );
58 public static function provideAddHeader() {
64 [ 'Test' => [ 'foo' ] ],
72 [ 'Test' => [ 'foo', 'bar' ] ],
73 [ 'Test' => 'foo, bar' ],
77 [ 'Test', [ '1', '2' ] ],
78 [ 'Test', [ '3', '4' ] ],
80 [ 'Test' => [ '1', '2', '3', '4' ] ],
81 [ 'Test' => '1, 2, 3, 4' ]
83 'preserve original case' => [
88 [ 'Test' => [ 'foo', 'bar' ] ],
89 [ 'Test' => 'foo, bar' ]
94 /** @dataProvider provideAddHeader */
95 public function testAddHeader( $addOps, $headers, $lines ) {
96 $hc = new HeaderContainer
;
97 foreach ( $addOps as list( $name, $value ) ) {
98 $hc->addHeader( $name, $value );
100 $this->assertSame( $headers, $hc->getHeaders() );
101 $this->assertSame( $lines, $hc->getHeaderLines() );
104 public static function provideRemoveHeader() {
107 [ [ 'Test', 'foo' ] ],
113 [ [ 'Test', 'foo' ] ],
118 'remove nonexistent' => [
127 /** @dataProvider provideRemoveHeader */
128 public function testRemoveHeader( $addOps, $removeOps, $headers, $lines ) {
129 $hc = new HeaderContainer
;
130 foreach ( $addOps as list( $name, $value ) ) {
131 $hc->addHeader( $name, $value );
133 foreach ( $removeOps as $name ) {
134 $hc->removeHeader( $name );
136 $this->assertSame( $headers, $hc->getHeaders() );
137 $this->assertSame( $lines, $hc->getHeaderLines() );
140 public function testHasHeader() {
141 $hc = new HeaderContainer
;
142 $hc->addHeader( 'A', '1' );
143 $hc->addHeader( 'B', '2' );
144 $hc->addHeader( 'C', '3' );
145 $hc->removeHeader( 'B' );
146 $hc->removeHeader( 'c' );
147 $this->assertTrue( $hc->hasHeader( 'A' ) );
148 $this->assertTrue( $hc->hasHeader( 'a' ) );
149 $this->assertFalse( $hc->hasHeader( 'B' ) );
150 $this->assertFalse( $hc->hasHeader( 'c' ) );
151 $this->assertFalse( $hc->hasHeader( 'C' ) );
154 public function testGetRawHeaderLines() {
155 $hc = new HeaderContainer
;
156 $hc->addHeader( 'A', '1' );
157 $hc->addHeader( 'a', '2' );
158 $hc->addHeader( 'b', '3' );
159 $hc->addHeader( 'Set-Cookie', 'x' );
160 $hc->addHeader( 'SET-cookie', 'y' );
168 $hc->getRawHeaderLines()