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