Cleanup Api phpunit Tests

- Splits multiple classes into individual files
- Adds @covers tags
- Fixes scope

Change-Id: I7d2816d3574fa53a2aaa8e2a84b7a7ecdd245252
This commit is contained in:
addshore 2013-10-23 17:01:33 +01:00
parent 96a9a3e101
commit dc18b813e8
13 changed files with 127 additions and 87 deletions

View file

@ -55,10 +55,10 @@ $wgAutoloadClasses += array(
# tests/phpunit/includes/api
'ApiFormatTestBase' => "$testDir/phpunit/includes/api/format/ApiFormatTestBase.php",
'ApiTestCase' => "$testDir/phpunit/includes/api/ApiTestCase.php",
'ApiTestContext' => "$testDir/phpunit/includes/api/ApiTestCase.php",
'MockApi' => "$testDir/phpunit/includes/api/ApiTestCase.php",
'ApiTestContext' => "$testDir/phpunit/includes/api/ApiTestContext.php",
'MockApi' => "$testDir/phpunit/includes/api/MockApi.php",
'UserWrapper' => "$testDir/phpunit/includes/api/UserWrapper.php",
'RandomImageGenerator' => "$testDir/phpunit/includes/api/RandomImageGenerator.php",
'UserWrapper' => "$testDir/phpunit/includes/api/ApiTestCase.php",
# tests/phpunit/includes/content
'DummyContentHandlerForTesting' => "$testDir/phpunit/includes/content/ContentHandlerTest.php",

View file

@ -4,6 +4,8 @@
* @group API
* @group Database
* @group medium
*
* @covers ApiBlock
*/
class ApiBlockTest extends ApiTestCase {
protected function setUp() {
@ -11,7 +13,7 @@ class ApiBlockTest extends ApiTestCase {
$this->doLogin();
}
function getTokens() {
protected function getTokens() {
return $this->getTokenList( self::$users['sysop'] );
}
@ -63,17 +65,13 @@ class ApiBlockTest extends ApiTestCase {
}
/**
* Attempting to block without a token should give a UsageException with
* error message:
* "The token parameter must be set"
*
* @dataProvider provideBlockUnblockAction
* @expectedException UsageException
* @expectedExceptionMessage The token parameter must be set
*/
public function testBlockingActionWithNoToken( $action ) {
public function testBlockingActionWithNoToken( ) {
$this->doApiRequest(
array(
'action' => $action,
'action' => 'block',
'user' => 'UTApiBlockee',
'reason' => 'Some reason',
),
@ -82,14 +80,4 @@ class ApiBlockTest extends ApiTestCase {
self::$users['sysop']->user
);
}
/**
* Just provide the 'block' and 'unblock' action to test both API calls
*/
public static function provideBlockUnblockAction() {
return array(
array( 'block' ),
array( 'unblock' ),
);
}
}

View file

@ -4,9 +4,11 @@
* @group Database
* @group API
* @group medium
*
* @covers ApiCreateAccount
*/
class ApiCreateAccountTest extends ApiTestCase {
function setUp() {
protected function setUp() {
parent::setUp();
LoginForm::setCreateaccountToken();
$this->setMwGlobals( array( 'wgEnableEmail' => true ) );

View file

@ -8,6 +8,8 @@
* @group API
* @group Database
* @group medium
*
* @covers ApiEditPage
*/
class ApiEditPageTest extends ApiTestCase {

View file

@ -4,10 +4,18 @@
* @group API
* @group Database
* @group medium
*
* @covers ApiOptions
*/
class ApiOptionsTest extends MediaWikiLangTestCase {
private $mTested, $mUserMock, $mContext, $mSession;
/** @var PHPUnit_Framework_MockObject_MockObject */
private $mUserMock ;
/** @var ApiOptions */
private $mTested;
private $mSession;
/** @var DerivativeContext */
private $mContext;
private $mOldGetPreferencesHooks = false;

View file

@ -4,6 +4,8 @@
* @group API
* @group Database
* @group medium
*
* @covers ApiParse
*/
class ApiParseTest extends ApiTestCase {

View file

@ -4,6 +4,8 @@
* @group API
* @group Database
* @group medium
*
* @covers ApiPurge
*/
class ApiPurgeTest extends ApiTestCase {

View file

@ -117,7 +117,7 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
* @param $params Array: key-value API params
* @param $session Array|null: session array
* @param $user User|null A User object for the context
* @return result of the API call
* @return mixed result of the API call
* @throws Exception in case wsToken is not set in the session
*/
protected function doApiRequestWithToken( array $params, array $session = null, User $user = null ) {
@ -188,66 +188,3 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
);
}
}
class UserWrapper {
public $userName;
public $password;
public $user;
public function __construct( $userName, $password, $group = '' ) {
$this->userName = $userName;
$this->password = $password;
$this->user = User::newFromName( $this->userName );
if ( !$this->user->getID() ) {
$this->user = User::createNew( $this->userName, array(
"email" => "test@example.com",
"real_name" => "Test User" ) );
}
$this->user->setPassword( $this->password );
if ( $group !== '' ) {
$this->user->addGroup( $group );
}
$this->user->saveSettings();
}
}
class MockApi extends ApiBase {
public function execute() {
}
public function getVersion() {
}
public function __construct() {
}
public function getAllowedParams() {
return array(
'filename' => null,
'enablechunks' => false,
'sessionkey' => null,
);
}
}
class ApiTestContext extends RequestContext {
/**
* Returns a DerivativeContext with the request variables in place
*
* @param $request WebRequest request object including parameters and session
* @param $user User or null
* @return DerivativeContext
*/
public function newTestContext( WebRequest $request, User $user = null ) {
$context = new DerivativeContext( $this );
$context->setRequest( $request );
if ( $user !== null ) {
$context->setUser( $user );
}
return $context;
}
}

View file

@ -0,0 +1,21 @@
<?php
class ApiTestContext extends RequestContext {
/**
* Returns a DerivativeContext with the request variables in place
*
* @param $request WebRequest request object including parameters and session
* @param $user User or null
* @return DerivativeContext
*/
public function newTestContext( WebRequest $request, User $user = null ) {
$context = new DerivativeContext( $this );
$context->setRequest( $request );
if ( $user !== null ) {
$context->setUser( $user );
}
return $context;
}
}

View file

@ -0,0 +1,31 @@
<?php
/**
* @group API
* @group Database
* @group medium
*
* @covers ApiUnblock
*/
class ApiUnblockTest extends ApiTestCase {
protected function setUp() {
parent::setUp();
$this->doLogin();
}
/**
* @expectedException UsageException
*/
public function testWithNoToken( ) {
$this->doApiRequest(
array(
'action' => 'unblock',
'user' => 'UTApiBlockee',
'reason' => 'Some reason',
),
null,
false,
self::$users['sysop']->user
);
}
}

View file

@ -0,0 +1,20 @@
<?php
class MockApi extends ApiBase {
public function execute() {
}
public function getVersion() {
}
public function __construct() {
}
public function getAllowedParams() {
return array(
'filename' => null,
'enablechunks' => false,
'sessionkey' => null,
);
}
}

View file

@ -6,6 +6,7 @@
* @group API
*/
class PrefixUniquenessTest extends MediaWikiTestCase {
public function testPrefixes() {
$main = new ApiMain( new FauxRequest() );
$query = new ApiQuery( $main, 'foo', 'bar' );
@ -13,6 +14,7 @@ class PrefixUniquenessTest extends MediaWikiTestCase {
$prefixes = array();
foreach ( $modules as $name => $class ) {
/** @var ApiMain $module */
$module = new $class( $main, $name );
$prefix = $module->getModulePrefix();
if ( isset( $prefixes[$prefix] ) ) {

View file

@ -0,0 +1,25 @@
<?php
class UserWrapper {
public $userName;
public $password;
public $user;
public function __construct( $userName, $password, $group = '' ) {
$this->userName = $userName;
$this->password = $password;
$this->user = User::newFromName( $this->userName );
if ( !$this->user->getID() ) {
$this->user = User::createNew( $this->userName, array(
"email" => "test@example.com",
"real_name" => "Test User" ) );
}
$this->user->setPassword( $this->password );
if ( $group !== '' ) {
$this->user->addGroup( $group );
}
$this->user->saveSettings();
}
}