From d18d030d57b88e190a87c50aeccf694986a800f7 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Thu, 8 Sep 2016 19:37:37 -0700 Subject: [PATCH] FauxRequest: Add unit tests to expand code coverage * Remove @covers for methods that don't exist (parent class). * Fix coverage for initHeaders() and setHeaders(). * Add tests and coverage for all other methods. Change-Id: Id9b6de31843d2e87c54f485beb4fbcbe6f4bf8f6 --- includes/FauxRequest.php | 2 + tests/phpunit/includes/FauxRequestTest.php | 172 +++++++++++++++++++-- 2 files changed, 164 insertions(+), 10 deletions(-) diff --git a/includes/FauxRequest.php b/includes/FauxRequest.php index 158c8521fe..3b2283b77a 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 4622a38400..a5d67de82f 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() ); + + $this->assertEquals( + false, + $request->getHeader( 'test' ) + ); } /** - * @covers FauxRequest::getHeader + * @covers FauxRequest::__construct + * @covers FauxRequest::getSessionArray */ - public function testGetHeader() { - $_SERVER['HTTP_TEST'] = 'Example'; + public function testSessionData() { + $values = [ 'x' => 'Value', 'y' => '' ]; - $request = new FauxRequest(); + $req = new FauxRequest( [], false, /*session*/ $values ); + $this->assertEquals( $values, $req->getSessionArray() ); - $this->assertEquals( - false, - $request->getHeader( 'test' ) - ); + $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() ); } } -- 2.20.1