9fe694da039f5de2ef7b6bd01520652ba900a99c
[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 // 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 }