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