X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/tests/phpunit/includes/FauxRequestTest.php diff --git a/tests/phpunit/includes/FauxRequestTest.php b/tests/phpunit/includes/FauxRequestTest.php new file mode 100644 index 00000000..9fe694da --- /dev/null +++ b/tests/phpunit/includes/FauxRequestTest.php @@ -0,0 +1,235 @@ +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::__construct + */ + public function testConstructWithSession() { + $session = SessionManager::singleton()->getEmptySession( new FauxRequest( [] ) ); + $this->assertInstanceOf( + FauxRequest::class, + new FauxRequest( [], false, $session ) + ); + } + + /** + * @covers FauxRequest::getText + */ + public function testGetText() { + $req = new FauxRequest( [ 'x' => 'Value' ] ); + $this->assertEquals( 'Value', $req->getText( 'x' ) ); + $this->assertEquals( '', $req->getText( 'z' ) ); + } + + // Integration test for parent method. + public function testGetVal() { + $req = new FauxRequest( [ 'crlf' => "A\r\nb" ] ); + $this->assertSame( "A\r\nb", $req->getVal( 'crlf' ), 'CRLF' ); + } + + // Integration test for parent method. + public function testGetRawVal() { + $req = new FauxRequest( [ + 'x' => 'Value', + 'y' => [ 'a' ], + 'crlf' => "A\r\nb" + ] ); + $this->assertSame( 'Value', $req->getRawVal( 'x' ) ); + $this->assertSame( null, $req->getRawVal( 'z' ), 'Not found' ); + $this->assertSame( null, $req->getRawVal( 'y' ), 'Array is ignored' ); + $this->assertSame( "A\r\nb", $req->getRawVal( 'crlf' ), 'CRLF' ); + } + + /** + * @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() { + $value = 'text/plain, text/html'; + + $request = new FauxRequest(); + $request->setHeader( 'Accept', $value ); + + $this->assertEquals( $request->getHeader( 'Nonexistent' ), false ); + $this->assertEquals( $request->getHeader( 'Accept' ), $value ); + $this->assertEquals( $request->getHeader( 'ACCEPT' ), $value ); + $this->assertEquals( $request->getHeader( 'accept' ), $value ); + $this->assertEquals( + $request->getHeader( 'Accept', WebRequest::GETHEADER_LIST ), + [ 'text/plain', 'text/html' ] + ); + } + + /** + * @covers FauxRequest::initHeaders + */ + public function testGetAllHeaders() { + $_SERVER['HTTP_TEST'] = 'Example'; + + $request = new FauxRequest(); + + $this->assertEquals( + [], + $request->getAllHeaders() + ); + + $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() ); + } +}