Add @covers tags for more tests
[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 * @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 /**
43 * Integration test for parent method
44 * @covers FauxRequest::getVal
45 */
46 public function testGetVal() {
47 $req = new FauxRequest( [ 'crlf' => "A\r\nb" ] );
48 $this->assertSame( "A\r\nb", $req->getVal( 'crlf' ), 'CRLF' );
49 }
50
51 /**
52 * Integration test for parent method
53 * @covers FauxRequest::getRawVal
54 */
55 public function testGetRawVal() {
56 $req = new FauxRequest( [
57 'x' => 'Value',
58 'y' => [ 'a' ],
59 'crlf' => "A\r\nb"
60 ] );
61 $this->assertSame( 'Value', $req->getRawVal( 'x' ) );
62 $this->assertSame( null, $req->getRawVal( 'z' ), 'Not found' );
63 $this->assertSame( null, $req->getRawVal( 'y' ), 'Array is ignored' );
64 $this->assertSame( "A\r\nb", $req->getRawVal( 'crlf' ), 'CRLF' );
65 }
66
67 /**
68 * @covers FauxRequest::getValues
69 */
70 public function testGetValues() {
71 $values = [ 'x' => 'Value', 'y' => '' ];
72 $req = new FauxRequest( $values );
73 $this->assertEquals( $values, $req->getValues() );
74 }
75
76 /**
77 * @covers FauxRequest::getQueryValues
78 */
79 public function testGetQueryValues() {
80 $values = [ 'x' => 'Value', 'y' => '' ];
81
82 $req = new FauxRequest( $values );
83 $this->assertEquals( $values, $req->getQueryValues() );
84 $req = new FauxRequest( $values, /*wasPosted*/ true );
85 $this->assertEquals( [], $req->getQueryValues() );
86 }
87
88 /**
89 * @covers FauxRequest::getMethod
90 */
91 public function testGetMethod() {
92 $req = new FauxRequest( [] );
93 $this->assertEquals( 'GET', $req->getMethod() );
94 $req = new FauxRequest( [], /*wasPosted*/ true );
95 $this->assertEquals( 'POST', $req->getMethod() );
96 }
97
98 /**
99 * @covers FauxRequest::wasPosted
100 */
101 public function testWasPosted() {
102 $req = new FauxRequest( [] );
103 $this->assertFalse( $req->wasPosted() );
104 $req = new FauxRequest( [], /*wasPosted*/ true );
105 $this->assertTrue( $req->wasPosted() );
106 }
107
108 /**
109 * @covers FauxRequest::getCookie
110 * @covers FauxRequest::setCookie
111 * @covers FauxRequest::setCookies
112 */
113 public function testCookies() {
114 $req = new FauxRequest();
115 $this->assertSame( null, $req->getCookie( 'z', '' ) );
116
117 $req->setCookie( 'x', 'Value', '' );
118 $this->assertEquals( 'Value', $req->getCookie( 'x', '' ) );
119
120 $req->setCookies( [ 'x' => 'One', 'y' => 'Two' ], '' );
121 $this->assertEquals( 'One', $req->getCookie( 'x', '' ) );
122 $this->assertEquals( 'Two', $req->getCookie( 'y', '' ) );
123 }
124
125 /**
126 * @covers FauxRequest::getCookie
127 * @covers FauxRequest::setCookie
128 * @covers FauxRequest::setCookies
129 */
130 public function testCookiesDefaultPrefix() {
131 global $wgCookiePrefix;
132 $oldPrefix = $wgCookiePrefix;
133 $wgCookiePrefix = '_';
134
135 $req = new FauxRequest();
136 $this->assertSame( null, $req->getCookie( 'z' ) );
137
138 $req->setCookie( 'x', 'Value' );
139 $this->assertEquals( 'Value', $req->getCookie( 'x' ) );
140
141 $wgCookiePrefix = $oldPrefix;
142 }
143
144 /**
145 * @covers FauxRequest::getRequestURL
146 */
147 public function testGetRequestURL() {
148 $req = new FauxRequest();
149 $this->setExpectedException( MWException::class );
150 $req->getRequestURL();
151 }
152
153 /**
154 * @covers FauxRequest::setRequestURL
155 * @covers FauxRequest::getRequestURL
156 */
157 public function testSetRequestURL() {
158 $req = new FauxRequest();
159 $req->setRequestURL( 'https://example.org' );
160 $this->assertEquals( 'https://example.org', $req->getRequestURL() );
161 }
162
163 /**
164 * @covers FauxRequest::__construct
165 * @covers FauxRequest::getProtocol
166 */
167 public function testProtocol() {
168 $req = new FauxRequest();
169 $this->assertEquals( 'http', $req->getProtocol() );
170 $req = new FauxRequest( [], false, null, 'http' );
171 $this->assertEquals( 'http', $req->getProtocol() );
172 $req = new FauxRequest( [], false, null, 'https' );
173 $this->assertEquals( 'https', $req->getProtocol() );
174 }
175
176 /**
177 * @covers FauxRequest::setHeader
178 * @covers FauxRequest::setHeaders
179 * @covers FauxRequest::getHeader
180 */
181 public function testGetSetHeader() {
182 $value = 'text/plain, text/html';
183
184 $request = new FauxRequest();
185 $request->setHeader( 'Accept', $value );
186
187 $this->assertEquals( $request->getHeader( 'Nonexistent' ), false );
188 $this->assertEquals( $request->getHeader( 'Accept' ), $value );
189 $this->assertEquals( $request->getHeader( 'ACCEPT' ), $value );
190 $this->assertEquals( $request->getHeader( 'accept' ), $value );
191 $this->assertEquals(
192 $request->getHeader( 'Accept', WebRequest::GETHEADER_LIST ),
193 [ 'text/plain', 'text/html' ]
194 );
195 }
196
197 /**
198 * @covers FauxRequest::initHeaders
199 */
200 public function testGetAllHeaders() {
201 $_SERVER['HTTP_TEST'] = 'Example';
202
203 $request = new FauxRequest();
204
205 $this->assertEquals(
206 [],
207 $request->getAllHeaders()
208 );
209
210 $this->assertEquals(
211 false,
212 $request->getHeader( 'test' )
213 );
214 }
215
216 /**
217 * @covers FauxRequest::__construct
218 * @covers FauxRequest::getSessionArray
219 */
220 public function testSessionData() {
221 $values = [ 'x' => 'Value', 'y' => '' ];
222
223 $req = new FauxRequest( [], false, /*session*/ $values );
224 $this->assertEquals( $values, $req->getSessionArray() );
225
226 $req = new FauxRequest();
227 $this->assertSame( null, $req->getSessionArray() );
228 }
229
230 /**
231 * @covers FauxRequest::getRawQueryString
232 * @covers FauxRequest::getRawPostString
233 * @covers FauxRequest::getRawInput
234 */
235 public function testDummies() {
236 $req = new FauxRequest();
237 $this->assertEquals( '', $req->getRawQueryString() );
238 $this->assertEquals( '', $req->getRawPostString() );
239 $this->assertEquals( '', $req->getRawInput() );
240 }
241 }