3 use MediaWiki\Session\SessionManager
;
5 class FauxRequestTest
extends PHPUnit_Framework_TestCase
{
7 use MediaWikiCoversValidator
;
10 * @covers FauxRequest::__construct
12 public function testConstructInvalidData() {
13 $this->setExpectedException( MWException
::class, 'bogus data' );
14 $req = new FauxRequest( 'x' );
18 * @covers FauxRequest::__construct
20 public function testConstructInvalidSession() {
21 $this->setExpectedException( MWException
::class, 'bogus session' );
22 $req = new FauxRequest( [], false, 'x' );
26 * @covers FauxRequest::__construct
28 public function testConstructWithSession() {
29 $session = SessionManager
::singleton()->getEmptySession( new FauxRequest( [] ) );
30 $this->assertInstanceOf(
32 new FauxRequest( [], false, $session )
37 * @covers FauxRequest::getText
39 public function testGetText() {
40 $req = new FauxRequest( [ 'x' => 'Value' ] );
41 $this->assertEquals( 'Value', $req->getText( 'x' ) );
42 $this->assertEquals( '', $req->getText( 'z' ) );
46 * Integration test for parent method
47 * @covers FauxRequest::getVal
49 public function testGetVal() {
50 $req = new FauxRequest( [ 'crlf' => "A\r\nb" ] );
51 $this->assertSame( "A\r\nb", $req->getVal( 'crlf' ), 'CRLF' );
55 * Integration test for parent method
56 * @covers FauxRequest::getRawVal
58 public function testGetRawVal() {
59 $req = new FauxRequest( [
64 $this->assertSame( 'Value', $req->getRawVal( 'x' ) );
65 $this->assertSame( null, $req->getRawVal( 'z' ), 'Not found' );
66 $this->assertSame( null, $req->getRawVal( 'y' ), 'Array is ignored' );
67 $this->assertSame( "A\r\nb", $req->getRawVal( 'crlf' ), 'CRLF' );
71 * @covers FauxRequest::getValues
73 public function testGetValues() {
74 $values = [ 'x' => 'Value', 'y' => '' ];
75 $req = new FauxRequest( $values );
76 $this->assertEquals( $values, $req->getValues() );
80 * @covers FauxRequest::getQueryValues
82 public function testGetQueryValues() {
83 $values = [ 'x' => 'Value', 'y' => '' ];
85 $req = new FauxRequest( $values );
86 $this->assertEquals( $values, $req->getQueryValues() );
87 $req = new FauxRequest( $values, /*wasPosted*/ true );
88 $this->assertEquals( [], $req->getQueryValues() );
92 * @covers FauxRequest::getMethod
94 public function testGetMethod() {
95 $req = new FauxRequest( [] );
96 $this->assertEquals( 'GET', $req->getMethod() );
97 $req = new FauxRequest( [], /*wasPosted*/ true );
98 $this->assertEquals( 'POST', $req->getMethod() );
102 * @covers FauxRequest::wasPosted
104 public function testWasPosted() {
105 $req = new FauxRequest( [] );
106 $this->assertFalse( $req->wasPosted() );
107 $req = new FauxRequest( [], /*wasPosted*/ true );
108 $this->assertTrue( $req->wasPosted() );
112 * @covers FauxRequest::getCookie
113 * @covers FauxRequest::setCookie
114 * @covers FauxRequest::setCookies
116 public function testCookies() {
117 $req = new FauxRequest();
118 $this->assertSame( null, $req->getCookie( 'z', '' ) );
120 $req->setCookie( 'x', 'Value', '' );
121 $this->assertEquals( 'Value', $req->getCookie( 'x', '' ) );
123 $req->setCookies( [ 'x' => 'One', 'y' => 'Two' ], '' );
124 $this->assertEquals( 'One', $req->getCookie( 'x', '' ) );
125 $this->assertEquals( 'Two', $req->getCookie( 'y', '' ) );
129 * @covers FauxRequest::getCookie
130 * @covers FauxRequest::setCookie
131 * @covers FauxRequest::setCookies
133 public function testCookiesDefaultPrefix() {
134 global $wgCookiePrefix;
135 $oldPrefix = $wgCookiePrefix;
136 $wgCookiePrefix = '_';
138 $req = new FauxRequest();
139 $this->assertSame( null, $req->getCookie( 'z' ) );
141 $req->setCookie( 'x', 'Value' );
142 $this->assertEquals( 'Value', $req->getCookie( 'x' ) );
144 $wgCookiePrefix = $oldPrefix;
148 * @covers FauxRequest::getRequestURL
150 public function testGetRequestURL() {
151 $req = new FauxRequest();
152 $this->setExpectedException( MWException
::class );
153 $req->getRequestURL();
157 * @covers FauxRequest::setRequestURL
158 * @covers FauxRequest::getRequestURL
160 public function testSetRequestURL() {
161 $req = new FauxRequest();
162 $req->setRequestURL( 'https://example.org' );
163 $this->assertEquals( 'https://example.org', $req->getRequestURL() );
167 * @covers FauxRequest::__construct
168 * @covers FauxRequest::getProtocol
170 public function testProtocol() {
171 $req = new FauxRequest();
172 $this->assertEquals( 'http', $req->getProtocol() );
173 $req = new FauxRequest( [], false, null, 'http' );
174 $this->assertEquals( 'http', $req->getProtocol() );
175 $req = new FauxRequest( [], false, null, 'https' );
176 $this->assertEquals( 'https', $req->getProtocol() );
180 * @covers FauxRequest::setHeader
181 * @covers FauxRequest::setHeaders
182 * @covers FauxRequest::getHeader
184 public function testGetSetHeader() {
185 $value = 'text/plain, text/html';
187 $request = new FauxRequest();
188 $request->setHeader( 'Accept', $value );
190 $this->assertEquals( $request->getHeader( 'Nonexistent' ), false );
191 $this->assertEquals( $request->getHeader( 'Accept' ), $value );
192 $this->assertEquals( $request->getHeader( 'ACCEPT' ), $value );
193 $this->assertEquals( $request->getHeader( 'accept' ), $value );
195 $request->getHeader( 'Accept', WebRequest
::GETHEADER_LIST
),
196 [ 'text/plain', 'text/html' ]
201 * @covers FauxRequest::initHeaders
203 public function testGetAllHeaders() {
204 $_SERVER['HTTP_TEST'] = 'Example';
206 $request = new FauxRequest();
210 $request->getAllHeaders()
215 $request->getHeader( 'test' )
220 * @covers FauxRequest::__construct
221 * @covers FauxRequest::getSessionArray
223 public function testSessionData() {
224 $values = [ 'x' => 'Value', 'y' => '' ];
226 $req = new FauxRequest( [], false, /*session*/ $values );
227 $this->assertEquals( $values, $req->getSessionArray() );
229 $req = new FauxRequest();
230 $this->assertSame( null, $req->getSessionArray() );
234 * @covers FauxRequest::getRawQueryString
235 * @covers FauxRequest::getRawPostString
236 * @covers FauxRequest::getRawInput
238 public function testDummies() {
239 $req = new FauxRequest();
240 $this->assertEquals( '', $req->getRawQueryString() );
241 $this->assertEquals( '', $req->getRawPostString() );
242 $this->assertEquals( '', $req->getRawInput() );