diff --git a/includes/FauxRequest.php b/includes/FauxRequest.php index 158c8521fe7..3b2283b77a8 100644 --- a/includes/FauxRequest.php +++ b/includes/FauxRequest.php @@ -226,6 +226,7 @@ class FauxRequest extends WebRequest { } /** + * @codeCoverageIgnore * @param array $extWhitelist * @return bool */ @@ -234,6 +235,7 @@ class FauxRequest extends WebRequest { } /** + * @codeCoverageIgnore * @return string */ protected function getRawIP() { diff --git a/tests/phpunit/includes/FauxRequestTest.php b/tests/phpunit/includes/FauxRequestTest.php index 4622a384005..a5d67de82fc 100644 --- a/tests/phpunit/includes/FauxRequestTest.php +++ b/tests/phpunit/includes/FauxRequestTest.php @@ -1,8 +1,143 @@ setExpectedException( MWException::class, 'bogus data' ); + $req = new FauxRequest( 'x' ); + } + + /** + * @covers FauxRequest::__construct + */ + public function testConstructInvalidSession() { + $this->setExpectedException( MWException::class, 'bogus session' ); + $req = new FauxRequest( [], false, 'x' ); + } + + /** + * @covers FauxRequest::getText + */ + public function testGetText() { + $req = new FauxRequest( [ 'x' => 'Value' ] ); + $this->assertEquals( 'Value', $req->getText( 'x' ) ); + $this->assertEquals( '', $req->getText( 'z' ) ); + } + + /** + * @covers FauxRequest::getValues + */ + public function testGetValues() { + $values = [ 'x' => 'Value', 'y' => '' ]; + $req = new FauxRequest( $values ); + $this->assertEquals( $values, $req->getValues() ); + } + + /** + * @covers FauxRequest::getQueryValues + */ + public function testGetQueryValues() { + $values = [ 'x' => 'Value', 'y' => '' ]; + + $req = new FauxRequest( $values ); + $this->assertEquals( $values, $req->getQueryValues() ); + $req = new FauxRequest( $values, /*wasPosted*/ true ); + $this->assertEquals( [], $req->getQueryValues() ); + } + + /** + * @covers FauxRequest::getMethod + */ + public function testGetMethod() { + $req = new FauxRequest( [] ); + $this->assertEquals( 'GET', $req->getMethod() ); + $req = new FauxRequest( [], /*wasPosted*/ true ); + $this->assertEquals( 'POST', $req->getMethod() ); + } + + /** + * @covers FauxRequest::wasPosted + */ + public function testWasPosted() { + $req = new FauxRequest( [] ); + $this->assertFalse( $req->wasPosted() ); + $req = new FauxRequest( [], /*wasPosted*/ true ); + $this->assertTrue( $req->wasPosted() ); + } + + /** + * @covers FauxRequest::getCookie + * @covers FauxRequest::setCookie + * @covers FauxRequest::setCookies + */ + public function testCookies() { + $req = new FauxRequest(); + $this->assertSame( null, $req->getCookie( 'z', '' ) ); + + $req->setCookie( 'x', 'Value', '' ); + $this->assertEquals( 'Value', $req->getCookie( 'x', '' ) ); + + $req->setCookies( [ 'x' => 'One', 'y' => 'Two' ], '' ); + $this->assertEquals( 'One', $req->getCookie( 'x', '' ) ); + $this->assertEquals( 'Two', $req->getCookie( 'y', '' ) ); + } + + /** + * @covers FauxRequest::getCookie + * @covers FauxRequest::setCookie + * @covers FauxRequest::setCookies + */ + public function testCookiesDefaultPrefix() { + global $wgCookiePrefix; + $oldPrefix = $wgCookiePrefix; + $wgCookiePrefix = '_'; + + $req = new FauxRequest(); + $this->assertSame( null, $req->getCookie( 'z' ) ); + + $req->setCookie( 'x', 'Value' ); + $this->assertEquals( 'Value', $req->getCookie( 'x' ) ); + + $wgCookiePrefix = $oldPrefix; + } + + /** + * @covers FauxRequest::getRequestURL + */ + public function testGetRequestURL() { + $req = new FauxRequest(); + $this->setExpectedException( MWException::class ); + $req->getRequestURL(); + } + + /** + * @covers FauxRequest::setRequestURL + * @covers FauxRequest::getRequestURL + */ + public function testSetRequestURL() { + $req = new FauxRequest(); + $req->setRequestURL( 'https://example.org' ); + $this->assertEquals( 'https://example.org', $req->getRequestURL() ); + } + + /** + * @covers FauxRequest::__construct + * @covers FauxRequest::getProtocol + */ + public function testProtocol() { + $req = new FauxRequest(); + $this->assertEquals( 'http', $req->getProtocol() ); + $req = new FauxRequest( [], false, null, 'http' ); + $this->assertEquals( 'http', $req->getProtocol() ); + $req = new FauxRequest( [], false, null, 'https' ); + $this->assertEquals( 'https', $req->getProtocol() ); + } + /** * @covers FauxRequest::setHeader + * @covers FauxRequest::setHeaders * @covers FauxRequest::getHeader */ public function testGetSetHeader() { @@ -22,7 +157,7 @@ class FauxRequestTest extends MediaWikiTestCase { } /** - * @covers FauxRequest::getAllHeaders + * @covers FauxRequest::initHeaders */ public function testGetAllHeaders() { $_SERVER['HTTP_TEST'] = 'Example'; @@ -33,19 +168,36 @@ class FauxRequestTest extends MediaWikiTestCase { [], $request->getAllHeaders() ); - } - - /** - * @covers FauxRequest::getHeader - */ - public function testGetHeader() { - $_SERVER['HTTP_TEST'] = 'Example'; - - $request = new FauxRequest(); $this->assertEquals( false, $request->getHeader( 'test' ) ); } + + /** + * @covers FauxRequest::__construct + * @covers FauxRequest::getSessionArray + */ + public function testSessionData() { + $values = [ 'x' => 'Value', 'y' => '' ]; + + $req = new FauxRequest( [], false, /*session*/ $values ); + $this->assertEquals( $values, $req->getSessionArray() ); + + $req = new FauxRequest(); + $this->assertSame( null, $req->getSessionArray() ); + } + + /** + * @covers FauxRequest::getRawQueryString + * @covers FauxRequest::getRawPostString + * @covers FauxRequest::getRawInput + */ + public function testDummies() { + $req = new FauxRequest(); + $this->assertEquals( '', $req->getRawQueryString() ); + $this->assertEquals( '', $req->getRawPostString() ); + $this->assertEquals( '', $req->getRawInput() ); + } }