./phpunit.php --filter Api currently gives me: Tests: 24, Assertions: 107, Incomplete: 1, Skipped: 2.
'BlockTest' => "$testFolder/phpunit/includes/BlockTest.php",
//API
- 'ApiTestSetup' => "$testFolder/phpunit/includes/api/ApiSetup.php",
+ 'ApiFormatTestBase' => "$testFolder/phpunit/includes/api/format/ApiFormatTestBase.php",
'ApiTestCase' => "$testFolder/phpunit/includes/api/ApiTestCase.php",
'ApiTestUser' => "$testFolder/phpunit/includes/api/ApiTestUser.php",
+ 'MockApi' => "$testFolder/phpunit/includes/api/ApiTestCase.php",
'RandomImageGenerator' => "$testFolder/phpunit/includes/api/RandomImageGenerator.php",
+ 'UserWrapper' => "$testFolder/phpunit/includes/api/ApiTestCase.php",
//Parser
'ParserTestFileIterator' => "$testFolder/phpunit/includes/parser/NewParserHelpers.php",
<?php
-require_once dirname( __FILE__ ) . '/ApiSetup.php';
-
/**
* @group Database
* @group Destructive
*/
-class ApiBlockTest extends ApiTestSetup {
+class ApiBlockTest extends ApiTestCase {
function setUp() {
parent::setUp();
}
function getTokens() {
- return $this->getTokenList( $this->sysopUser );
+ return $this->getTokenList( self::$users['sysop'] );
}
function addDBData() {
<?php
-require_once dirname( __FILE__ ) . '/ApiSetup.php';
-
/**
* @group Database
*/
-class ApiPurgeTest extends ApiTestSetup {
+class ApiPurgeTest extends ApiTestCase {
function setUp() {
parent::setUp();
<?php
-require_once dirname( __FILE__ ) . '/ApiSetup.php';
-
/**
* @group Database
*/
-class ApiQueryTest extends ApiTestSetup {
+class ApiQueryTest extends ApiTestCase {
function setUp() {
parent::setUp();
+++ /dev/null
-<?php
-
-abstract class ApiTestSetup extends MediaWikiLangTestCase {
- protected $user;
- protected $sysopUser;
- protected static $apiUrl;
-
- function setUp() {
- global $wgServer, $wgContLang, $wgAuth, $wgMemc, $wgRequest;
-
- parent::setUp();
- self::$apiUrl = $wgServer . wfScript( 'api' );
-
- $wgMemc = new EmptyBagOStuff;
- $wgContLang = Language::factory( 'en' );
- $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
- $wgRequest = new FauxRequest( array() );
- $this->setupUser();
- }
-
- protected function doApiRequest( $params, $data = null, $appendModule = false ) {
- $_SESSION = isset( $data[2] ) ? $data[2] : array();
-
- $req = new FauxRequest( $params, true, $_SESSION );
- $module = new ApiMain( $req, true );
- $module->execute();
-
- $data[0] = $module->getResultData();
- $data[1] = $req;
- $data[2] = $_SESSION;
-
- if( $appendModule ) $data[3] = $module;
-
- return $data;
- }
-
- function setupUser() {
- if ( $this->user == null || $this->sysopUser == null ) {
- $this->user = new UserWrapper( 'User for MediaWiki automated tests', User::randomPassword() );
- $this->sysopUser = new UserWrapper( 'Sysop for MediaWiki automated tests', User::randomPassword(), 'sysop' );
- }
-
- $GLOBALS['wgUser'] = $this->sysopUser->user;
- }
-
- function doLogin() {
- $data = $this->doApiRequest( array(
- 'action' => 'login',
- 'lgname' => $this->sysopUser->userName,
- 'lgpassword' => $this->sysopUser->password ) );
-
- $token = $data[0]['login']['token'];
-
- $data = $this->doApiRequest( array(
- 'action' => 'login',
- "lgtoken" => $token,
- "lgname" => $this->sysopUser->userName,
- "lgpassword" => $this->sysopUser->password ), $data );
-
- return $data;
- }
-
- function getTokenList( $user ) {
- $GLOBALS['wgUser'] = $user->user;
- $data = $this->doApiRequest( array(
- 'action' => 'query',
- 'titles' => 'Main Page',
- 'intoken' => 'edit|delete|protect|move|block|unblock',
- 'prop' => 'info' ) );
- return $data;
- }
-
-}
-
-class UserWrapper {
- public $userName, $password, $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();
- }
-}
-
<?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,
- );
- }
-}
-
/**
* @group Database
* @group Destructive
*/
-class ApiTest extends ApiTestSetup {
+class ApiTest extends ApiTestCase {
function testRequireOnlyOneParameterDefault() {
$mock = new MockApi();
*/
function testApiLoginNoName() {
$data = $this->doApiRequest( array( 'action' => 'login',
- 'lgname' => '', 'lgpassword' => $this->user->password,
+ 'lgname' => '', 'lgpassword' => self::$users['sysop']->password,
) );
$this->assertEquals( 'NoName', $data[0]['login']['result'] );
}
function testApiLoginBadPass() {
global $wgServer;
- $user = $this->user;
+ $user = self::$users['sysop'];
+ $user->user->logOut();
if ( !isset( $wgServer ) ) {
$this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
}
$ret = $this->doApiRequest( array(
"action" => "login",
- "lgname" => $user->userName,
+ "lgname" => $user->username,
"lgpassword" => "bad",
)
);
$ret = $this->doApiRequest( array(
"action" => "login",
"lgtoken" => $token,
- "lgname" => $user->userName,
- "lgpassword" => "bad",
+ "lgname" => $user->username,
+ "lgpassword" => "badnowayinhell",
)
);
$this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
}
- $user = $this->user;
+ $user = self::$users['sysop'];
+ $user->user->logOut();
$ret = $this->doApiRequest( array(
"action" => "login",
- "lgname" => $user->userName,
+ "lgname" => $user->username,
"lgpassword" => $user->password,
)
);
$ret = $this->doApiRequest( array(
"action" => "login",
"lgtoken" => $token,
- "lgname" => $user->userName,
+ "lgname" => $user->username,
"lgpassword" => $user->password,
)
);
if ( !isset( $wgServer ) ) {
$this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
}
+ $user = self::$users['sysop'];
+
$req = MWHttpRequest::factory( self::$apiUrl . "?action=login&format=xml",
array( "method" => "POST",
"postData" => array(
- "lgname" => $this->user->userName,
- "lgpassword" => $this->user->password ) ) );
+ "lgname" => $user->username,
+ "lgpassword" => $user->password ) ) );
$req->execute();
libxml_use_internal_errors( true );
$req->setData( array(
"lgtoken" => $token,
- "lgname" => $this->user->userName,
- "lgpassword" => $this->user->password ) );
+ "lgname" => $user->username,
+ "lgpassword" => $user->password ) );
$req->execute();
$cj = $req->getCookieJar();
$this->assertNotEquals( false, $serverName );
$serializedCookie = $cj->serializeToHttpRequest( $wgScriptPath, $serverName );
$this->assertNotEquals( '', $serializedCookie );
- $this->assertRegexp( '/_session=[^;]*; .*UserID=[0-9]*; .*UserName=' . $this->user->userName . '; .*Token=/', $serializedCookie );
+ $this->assertRegexp( '/_session=[^;]*; .*UserID=[0-9]*; .*UserName=' . $user->userName . '; .*Token=/', $serializedCookie );
return $cj;
}
}
function testRunLogin() {
+ $sysopUser = self::$users['sysop'];
$data = $this->doApiRequest( array(
'action' => 'login',
- 'lgname' => $this->sysopUser->userName,
- 'lgpassword' => $this->sysopUser->password ) );
+ 'lgname' => $sysopUser->username,
+ 'lgpassword' => $sysopUser->password ) );
$this->assertArrayHasKey( "login", $data[0] );
$this->assertArrayHasKey( "result", $data[0]['login'] );
$data = $this->doApiRequest( array(
'action' => 'login',
"lgtoken" => $token,
- "lgname" => $this->sysopUser->userName,
- "lgpassword" => $this->sysopUser->password ), $data );
+ "lgname" => $sysopUser->username,
+ "lgpassword" => $sysopUser->password ), $data );
$this->assertArrayHasKey( "login", $data[0] );
$this->assertArrayHasKey( "result", $data[0]['login'] );
}
function testGettingToken() {
- foreach ( array( $this->user, $this->sysopUser ) as $user ) {
+ foreach ( self::$users as $user ) {
$this->runTokenTest( $user );
}
}
<?php
abstract class ApiTestCase extends MediaWikiLangTestCase {
+ /**
+ * @var Array of ApiTestUser
+ */
public static $users;
+ protected static $apiUrl;
function setUp() {
- global $wgContLang, $wgAuth, $wgMemc, $wgRequest, $wgUser;
+ global $wgContLang, $wgAuth, $wgMemc, $wgRequest, $wgUser, $wgServer;
parent::setUp();
+ self::$apiUrl = $wgServer . wfScript( 'api' );
$wgMemc = new EmptyBagOStuff();
$wgContLang = Language::factory( 'en' );
$wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
if ( is_null( $session ) ) {
$session = array();
}
+ $_SESSION = $session; // paranoia
$request = new FauxRequest( $params, true, $session );
$module = new ApiMain( $request, true );
$module->execute();
- return array( $module->getResultData(), $request, $request->getSessionArray() );
+ $results = array( $module->getResultData(), $request, $request->getSessionArray() );
+ if( $appendModule ) {
+ $results[] = $module;
+ }
+
+ return $results;
}
/**
}
}
+ protected function doLogin() {
+ $data = $this->doApiRequest( array(
+ 'action' => 'login',
+ 'lgname' => self::$users['sysop']->username,
+ 'lgpassword' => self::$users['sysop']->password ) );
+
+ $token = $data[0]['login']['token'];
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'login',
+ 'lgtoken' => $token,
+ 'lgname' => self::$users['sysop']->username,
+ 'lgpassword' => self::$users['sysop']->password
+ ), $data );
+
+ return $data;
+ }
+
+ protected function getTokenList( $user ) {
+ $GLOBALS['wgUser'] = $user->user;
+ $data = $this->doApiRequest( array(
+ 'action' => 'query',
+ 'titles' => 'Main Page',
+ 'intoken' => 'edit|delete|protect|move|block|unblock',
+ 'prop' => 'info' ) );
+ return $data;
+ }
+}
+
+class UserWrapper {
+ public $userName, $password, $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,
+ );
+ }
}
<?php
-require_once dirname( __FILE__ ) . '/ApiSetup.php';
-
/**
* @group Database
* @group Destructive
* @todo This test suite is severly broken and need a full review
*/
-class ApiWatchTest extends ApiTestSetup {
+class ApiWatchTest extends ApiTestCase {
function setUp() {
parent::setUp();
}
function getTokens() {
- return $this->getTokenList( $this->sysopUser );
+ return $this->getTokenList( self::$users['sysop'] );
}
/**
<?php
-require_once dirname( __FILE__ ) . '/ApiFormatTestBase.php';
-
/**
* @group API
* @group Database
*/
class ApiFormatPhpTest extends ApiFormatTestBase {
-
- /*function setUp() {
- parent::setUp();
- $this->doLogin();
- }*/
-
-
function testValidPHPSyntax() {
$data = $this->apiRequest( 'php', array( 'action' => 'query', 'meta' => 'siteinfo' ) );
<?php
-require_once dirname( dirname( __FILE__ ) ) . '/ApiSetup.php';
-
-abstract class ApiFormatTestBase extends ApiTestSetup {
-
+abstract class ApiFormatTestBase extends ApiTestCase {
protected function apiRequest( $format, $params, $data = null ) {
-
$data = parent::doApiRequest( $params, $data, true );
-
+
$module = $data[3];
$printer = $module->createPrinterByName( $format );
return $out;
}
-
- function setupUser() {
- /* Do not setup a user here */
- }
}
-
<?php
-require_once dirname( dirname( __FILE__ ) ) . '/api/ApiSetup.php';
-
/**
* @group Broken
* @group Upload
*/
-class UploadFromUrlTest extends ApiTestSetup {
+class UploadFromUrlTest extends ApiTestCase {
public function setUp() {
global $wgEnableUploads, $wgAllowCopyUploads, $wgAllowAsyncCopyUploads;