3 namespace MediaWiki\Tests\Rest
;
6 use MediaWiki\Rest\HeaderContainer
;
9 * @covers \MediaWiki\Rest\HeaderContainer
11 class HeaderContainerTest
extends MediaWikiTestCase
{
12 public static function provideSetHeader() {
18 [ 'Test' => [ 'foo' ] ],
26 [ 'Test' => [ 'bar' ] ],
31 [ 'Test', [ '1', '2' ] ],
32 [ 'Test', [ '3', '4' ] ],
34 [ 'Test' => [ '3', '4' ] ],
37 'preserve most recent case' => [
42 [ 'tesT' => [ 'bar' ] ],
45 'empty' => [ [], [], [] ],
49 /** @dataProvider provideSetHeader */
50 public function testSetHeader( $setOps, $headers, $lines ) {
51 $hc = new HeaderContainer
;
52 foreach ( $setOps as list( $name, $value ) ) {
53 $hc->setHeader( $name, $value );
55 $this->assertSame( $headers, $hc->getHeaders() );
56 $this->assertSame( $lines, $hc->getHeaderLines() );
59 public static function provideAddHeader() {
65 [ 'Test' => [ 'foo' ] ],
73 [ 'Test' => [ 'foo', 'bar' ] ],
74 [ 'Test' => 'foo, bar' ],
78 [ 'Test', [ '1', '2' ] ],
79 [ 'Test', [ '3', '4' ] ],
81 [ 'Test' => [ '1', '2', '3', '4' ] ],
82 [ 'Test' => '1, 2, 3, 4' ]
84 'preserve original case' => [
89 [ 'Test' => [ 'foo', 'bar' ] ],
90 [ 'Test' => 'foo, bar' ]
95 /** @dataProvider provideAddHeader */
96 public function testAddHeader( $addOps, $headers, $lines ) {
97 $hc = new HeaderContainer
;
98 foreach ( $addOps as list( $name, $value ) ) {
99 $hc->addHeader( $name, $value );
101 $this->assertSame( $headers, $hc->getHeaders() );
102 $this->assertSame( $lines, $hc->getHeaderLines() );
105 public static function provideRemoveHeader() {
108 [ [ 'Test', 'foo' ] ],
114 [ [ 'Test', 'foo' ] ],
119 'remove nonexistent' => [
128 /** @dataProvider provideRemoveHeader */
129 public function testRemoveHeader( $addOps, $removeOps, $headers, $lines ) {
130 $hc = new HeaderContainer
;
131 foreach ( $addOps as list( $name, $value ) ) {
132 $hc->addHeader( $name, $value );
134 foreach ( $removeOps as $name ) {
135 $hc->removeHeader( $name );
137 $this->assertSame( $headers, $hc->getHeaders() );
138 $this->assertSame( $lines, $hc->getHeaderLines() );
141 public function testHasHeader() {
142 $hc = new HeaderContainer
;
143 $hc->addHeader( 'A', '1' );
144 $hc->addHeader( 'B', '2' );
145 $hc->addHeader( 'C', '3' );
146 $hc->removeHeader( 'B' );
147 $hc->removeHeader( 'c' );
148 $this->assertTrue( $hc->hasHeader( 'A' ) );
149 $this->assertTrue( $hc->hasHeader( 'a' ) );
150 $this->assertFalse( $hc->hasHeader( 'B' ) );
151 $this->assertFalse( $hc->hasHeader( 'c' ) );
152 $this->assertFalse( $hc->hasHeader( 'C' ) );
155 public function testGetRawHeaderLines() {
156 $hc = new HeaderContainer
;
157 $hc->addHeader( 'A', '1' );
158 $hc->addHeader( 'a', '2' );
159 $hc->addHeader( 'b', '3' );
160 $hc->addHeader( 'Set-Cookie', 'x' );
161 $hc->addHeader( 'SET-cookie', 'y' );
169 $hc->getRawHeaderLines()