]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - tests/phpunit/includes/FauxResponseTest.php
MediaWiki 1.30.2
[autoinstalls/mediawiki.git] / tests / phpunit / includes / FauxResponseTest.php
1 <?php
2 /**
3  * Tests for the FauxResponse class
4  *
5  * Copyright @ 2011 Alexandre Emsenhuber
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20  * http://www.gnu.org/copyleft/gpl.html
21  *
22  * @file
23  */
24
25 class FauxResponseTest extends MediaWikiTestCase {
26         /** @var FauxResponse */
27         protected $response;
28
29         protected function setUp() {
30                 parent::setUp();
31                 $this->response = new FauxResponse;
32         }
33
34         /**
35          * @covers FauxResponse::setCookie
36          * @covers FauxResponse::getCookie
37          * @covers FauxResponse::getCookieData
38          * @covers FauxResponse::getCookies
39          */
40         public function testCookie() {
41                 $expire = time() + 100;
42                 $cookie = [
43                         'value' => 'val',
44                         'path' => '/path',
45                         'domain' => 'domain',
46                         'secure' => true,
47                         'httpOnly' => false,
48                         'raw' => false,
49                         'expire' => $expire,
50                 ];
51
52                 $this->assertEquals( null, $this->response->getCookie( 'xkey' ), 'Non-existing cookie' );
53                 $this->response->setCookie( 'key', 'val', $expire, [
54                         'prefix' => 'x',
55                         'path' => '/path',
56                         'domain' => 'domain',
57                         'secure' => 1,
58                         'httpOnly' => 0,
59                 ] );
60                 $this->assertEquals( 'val', $this->response->getCookie( 'xkey' ), 'Existing cookie' );
61                 $this->assertEquals( $cookie, $this->response->getCookieData( 'xkey' ),
62                         'Existing cookie (data)' );
63                 $this->assertEquals( [ 'xkey' => $cookie ], $this->response->getCookies(),
64                         'Existing cookies' );
65         }
66
67         /**
68          * @covers FauxResponse::getheader
69          * @covers FauxResponse::header
70          */
71         public function testHeader() {
72                 $this->assertEquals( null, $this->response->getHeader( 'Location' ), 'Non-existing header' );
73
74                 $this->response->header( 'Location: http://localhost/' );
75                 $this->assertEquals(
76                         'http://localhost/',
77                         $this->response->getHeader( 'Location' ),
78                         'Set header'
79                 );
80
81                 $this->response->header( 'Location: http://127.0.0.1/' );
82                 $this->assertEquals(
83                         'http://127.0.0.1/',
84                         $this->response->getHeader( 'Location' ),
85                         'Same header'
86                 );
87
88                 $this->response->header( 'Location: http://127.0.0.2/', false );
89                 $this->assertEquals(
90                         'http://127.0.0.1/',
91                         $this->response->getHeader( 'Location' ),
92                         'Same header with override disabled'
93                 );
94
95                 $this->response->header( 'Location: http://localhost/' );
96                 $this->assertEquals(
97                         'http://localhost/',
98                         $this->response->getHeader( 'LOCATION' ),
99                         'Get header case insensitive'
100                 );
101         }
102
103         /**
104          * @covers FauxResponse::getStatusCode
105          */
106         public function testResponseCode() {
107                 $this->response->header( 'HTTP/1.1 200' );
108                 $this->assertEquals( 200, $this->response->getStatusCode(), 'Header with no message' );
109
110                 $this->response->header( 'HTTP/1.x 201' );
111                 $this->assertEquals(
112                         201,
113                         $this->response->getStatusCode(),
114                         'Header with no message and protocol 1.x'
115                 );
116
117                 $this->response->header( 'HTTP/1.1 202 OK' );
118                 $this->assertEquals( 202, $this->response->getStatusCode(), 'Normal header' );
119
120                 $this->response->header( 'HTTP/1.x 203 OK' );
121                 $this->assertEquals(
122                         203,
123                         $this->response->getStatusCode(),
124                         'Normal header with no message and protocol 1.x'
125                 );
126
127                 $this->response->header( 'HTTP/1.x 204 OK', false, 205 );
128                 $this->assertEquals(
129                         205,
130                         $this->response->getStatusCode(),
131                         'Third parameter overrides the HTTP/... header'
132                 );
133
134                 $this->response->statusHeader( 210 );
135                 $this->assertEquals(
136                         210,
137                         $this->response->getStatusCode(),
138                         'Handle statusHeader method'
139                 );
140
141                 $this->response->header( 'Location: http://localhost/', false, 206 );
142                 $this->assertEquals(
143                         206,
144                         $this->response->getStatusCode(),
145                         'Third parameter with another header'
146                 );
147         }
148 }