]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - tests/phpunit/includes/FauxRequestTest.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / tests / phpunit / includes / FauxRequestTest.php
1 <?php
2
3 use MediaWiki\Session\SessionManager;
4
5 class FauxRequestTest extends PHPUnit_Framework_TestCase {
6         /**
7          * @covers FauxRequest::__construct
8          */
9         public function testConstructInvalidData() {
10                 $this->setExpectedException( MWException::class, 'bogus data' );
11                 $req = new FauxRequest( 'x' );
12         }
13
14         /**
15          * @covers FauxRequest::__construct
16          */
17         public function testConstructInvalidSession() {
18                 $this->setExpectedException( MWException::class, 'bogus session' );
19                 $req = new FauxRequest( [], false, 'x' );
20         }
21
22         /**
23          * @covers FauxRequest::__construct
24          */
25         public function testConstructWithSession() {
26                 $session = SessionManager::singleton()->getEmptySession( new FauxRequest( [] ) );
27                 $this->assertInstanceOf(
28                         FauxRequest::class,
29                         new FauxRequest( [], false, $session )
30                 );
31         }
32
33         /**
34          * @covers FauxRequest::getText
35          */
36         public function testGetText() {
37                 $req = new FauxRequest( [ 'x' => 'Value' ] );
38                 $this->assertEquals( 'Value', $req->getText( 'x' ) );
39                 $this->assertEquals( '', $req->getText( 'z' ) );
40         }
41
42         // Integration test for parent method.
43         public function testGetVal() {
44                 $req = new FauxRequest( [ 'crlf' => "A\r\nb" ] );
45                 $this->assertSame( "A\r\nb", $req->getVal( 'crlf' ), 'CRLF' );
46         }
47
48         // Integration test for parent method.
49         public function testGetRawVal() {
50                 $req = new FauxRequest( [
51                         'x' => 'Value',
52                         'y' => [ 'a' ],
53                         'crlf' => "A\r\nb"
54                 ] );
55                 $this->assertSame( 'Value', $req->getRawVal( 'x' ) );
56                 $this->assertSame( null, $req->getRawVal( 'z' ), 'Not found' );
57                 $this->assertSame( null, $req->getRawVal( 'y' ), 'Array is ignored' );
58                 $this->assertSame( "A\r\nb", $req->getRawVal( 'crlf' ), 'CRLF' );
59         }
60
61         /**
62          * @covers FauxRequest::getValues
63          */
64         public function testGetValues() {
65                 $values = [ 'x' => 'Value', 'y' => '' ];
66                 $req = new FauxRequest( $values );
67                 $this->assertEquals( $values, $req->getValues() );
68         }
69
70         /**
71          * @covers FauxRequest::getQueryValues
72          */
73         public function testGetQueryValues() {
74                 $values = [ 'x' => 'Value', 'y' => '' ];
75
76                 $req = new FauxRequest( $values );
77                 $this->assertEquals( $values, $req->getQueryValues() );
78                 $req = new FauxRequest( $values, /*wasPosted*/ true );
79                 $this->assertEquals( [], $req->getQueryValues() );
80         }
81
82         /**
83          * @covers FauxRequest::getMethod
84          */
85         public function testGetMethod() {
86                 $req = new FauxRequest( [] );
87                 $this->assertEquals( 'GET', $req->getMethod() );
88                 $req = new FauxRequest( [], /*wasPosted*/ true );
89                 $this->assertEquals( 'POST', $req->getMethod() );
90         }
91
92         /**
93          * @covers FauxRequest::wasPosted
94          */
95         public function testWasPosted() {
96                 $req = new FauxRequest( [] );
97                 $this->assertFalse( $req->wasPosted() );
98                 $req = new FauxRequest( [], /*wasPosted*/ true );
99                 $this->assertTrue( $req->wasPosted() );
100         }
101
102         /**
103          * @covers FauxRequest::getCookie
104          * @covers FauxRequest::setCookie
105          * @covers FauxRequest::setCookies
106          */
107         public function testCookies() {
108                 $req = new FauxRequest();
109                 $this->assertSame( null, $req->getCookie( 'z', '' ) );
110
111                 $req->setCookie( 'x', 'Value', '' );
112                 $this->assertEquals( 'Value', $req->getCookie( 'x', '' ) );
113
114                 $req->setCookies( [ 'x' => 'One', 'y' => 'Two' ], '' );
115                 $this->assertEquals( 'One', $req->getCookie( 'x', '' ) );
116                 $this->assertEquals( 'Two', $req->getCookie( 'y', '' ) );
117         }
118
119         /**
120          * @covers FauxRequest::getCookie
121          * @covers FauxRequest::setCookie
122          * @covers FauxRequest::setCookies
123          */
124         public function testCookiesDefaultPrefix() {
125                 global $wgCookiePrefix;
126                 $oldPrefix = $wgCookiePrefix;
127                 $wgCookiePrefix = '_';
128
129                 $req = new FauxRequest();
130                 $this->assertSame( null, $req->getCookie( 'z' ) );
131
132                 $req->setCookie( 'x', 'Value' );
133                 $this->assertEquals( 'Value', $req->getCookie( 'x' ) );
134
135                 $wgCookiePrefix = $oldPrefix;
136         }
137
138         /**
139          * @covers FauxRequest::getRequestURL
140          */
141         public function testGetRequestURL() {
142                 $req = new FauxRequest();
143                 $this->setExpectedException( MWException::class );
144                 $req->getRequestURL();
145         }
146
147         /**
148          * @covers FauxRequest::setRequestURL
149          * @covers FauxRequest::getRequestURL
150          */
151         public function testSetRequestURL() {
152                 $req = new FauxRequest();
153                 $req->setRequestURL( 'https://example.org' );
154                 $this->assertEquals( 'https://example.org', $req->getRequestURL() );
155         }
156
157         /**
158          * @covers FauxRequest::__construct
159          * @covers FauxRequest::getProtocol
160          */
161         public function testProtocol() {
162                 $req = new FauxRequest();
163                 $this->assertEquals( 'http', $req->getProtocol() );
164                 $req = new FauxRequest( [], false, null, 'http' );
165                 $this->assertEquals( 'http', $req->getProtocol() );
166                 $req = new FauxRequest( [], false, null, 'https' );
167                 $this->assertEquals( 'https', $req->getProtocol() );
168         }
169
170         /**
171          * @covers FauxRequest::setHeader
172          * @covers FauxRequest::setHeaders
173          * @covers FauxRequest::getHeader
174          */
175         public function testGetSetHeader() {
176                 $value = 'text/plain, text/html';
177
178                 $request = new FauxRequest();
179                 $request->setHeader( 'Accept', $value );
180
181                 $this->assertEquals( $request->getHeader( 'Nonexistent' ), false );
182                 $this->assertEquals( $request->getHeader( 'Accept' ), $value );
183                 $this->assertEquals( $request->getHeader( 'ACCEPT' ), $value );
184                 $this->assertEquals( $request->getHeader( 'accept' ), $value );
185                 $this->assertEquals(
186                         $request->getHeader( 'Accept', WebRequest::GETHEADER_LIST ),
187                         [ 'text/plain', 'text/html' ]
188                 );
189         }
190
191         /**
192          * @covers FauxRequest::initHeaders
193          */
194         public function testGetAllHeaders() {
195                 $_SERVER['HTTP_TEST'] = 'Example';
196
197                 $request = new FauxRequest();
198
199                 $this->assertEquals(
200                         [],
201                         $request->getAllHeaders()
202                 );
203
204                 $this->assertEquals(
205                         false,
206                         $request->getHeader( 'test' )
207                 );
208         }
209
210         /**
211          * @covers FauxRequest::__construct
212          * @covers FauxRequest::getSessionArray
213          */
214         public function testSessionData() {
215                 $values = [ 'x' => 'Value', 'y' => '' ];
216
217                 $req = new FauxRequest( [], false, /*session*/ $values );
218                 $this->assertEquals( $values, $req->getSessionArray() );
219
220                 $req = new FauxRequest();
221                 $this->assertSame( null, $req->getSessionArray() );
222         }
223
224         /**
225          * @covers FauxRequest::getRawQueryString
226          * @covers FauxRequest::getRawPostString
227          * @covers FauxRequest::getRawInput
228          */
229         public function testDummies() {
230                 $req = new FauxRequest();
231                 $this->assertEquals( '', $req->getRawQueryString() );
232                 $this->assertEquals( '', $req->getRawPostString() );
233                 $this->assertEquals( '', $req->getRawInput() );
234         }
235 }