tests: Namespace api tests

Bug: T357823
Change-Id: I0d7cc2c9b166d5e5b913c1305f7cee017fe377af
This commit is contained in:
Reedy 2024-02-16 19:35:21 +00:00
parent d431e802d5
commit 75640200fb
84 changed files with 460 additions and 34 deletions

View file

@ -87,15 +87,20 @@ $wgAutoloadClasses += [
'TestLogger' => "$testDir/phpunit/mocks/TestLogger.php",
# tests/phpunit/includes/api
'ApiFormatTestBase' => "$testDir/phpunit/includes/api/format/ApiFormatTestBase.php",
'ApiQueryTestBase' => "$testDir/phpunit/includes/api/query/ApiQueryTestBase.php",
'ApiQueryContinueTestBase' => "$testDir/phpunit/includes/api/query/ApiQueryContinueTestBase.php",
'ApiTestCase' => "$testDir/phpunit/includes/api/ApiTestCase.php",
'ApiTestContext' => "$testDir/phpunit/includes/api/ApiTestContext.php",
'ApiUploadTestCase' => "$testDir/phpunit/includes/api/ApiUploadTestCase.php",
'MockApi' => "$testDir/phpunit/includes/api/MockApi.php",
'MockApiQueryBase' => "$testDir/phpunit/includes/api/MockApiQueryBase.php",
'RandomImageGenerator' => "$testDir/phpunit/includes/api/RandomImageGenerator.php",
'MediaWiki\\Tests\\Api\\Format\\ApiFormatTestBase' => "$testDir/phpunit/includes/api/format/ApiFormatTestBase.php",
'MediaWiki\\Tests\\Api\\Query\\ApiQueryTestBase' => "$testDir/phpunit/includes/api/query/ApiQueryTestBase.php",
'MediaWiki\\Tests\\Api\\Query\\ApiQueryContinueTestBase' => "$testDir/phpunit/includes/api/query/ApiQueryContinueTestBase.php",
'MediaWiki\\Tests\\Api\\ApiTestCase' => "$testDir/phpunit/includes/api/ApiTestCase.php",
'MediaWiki\\Tests\\Api\\ApiTestContext' => "$testDir/phpunit/includes/api/ApiTestContext.php",
'MediaWiki\\Tests\\Api\\ApiUploadTestCase' => "$testDir/phpunit/includes/api/ApiUploadTestCase.php",
'MediaWiki\\Tests\\Api\\MockApi' => "$testDir/phpunit/includes/api/MockApi.php",
'MediaWiki\\Tests\\Api\\MockApiQueryBase' => "$testDir/phpunit/includes/api/MockApiQueryBase.php",
'MediaWiki\\Tests\\Api\\RandomImageGenerator' => "$testDir/phpunit/includes/api/RandomImageGenerator.php",
# tests/phpunit/includes/auth
'MediaWiki\\Auth\\AuthenticationRequestTestCase' =>

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\MainConfigNames;
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
use MediaWiki\User\TempUser\TempUserCreator;

View file

@ -1,20 +1,34 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiBase;
use ApiBlockInfoTrait;
use ApiMain;
use ApiMessage;
use ApiUsageException;
use DomainException;
use Exception;
use MediaWiki\Api\Validator\SubmoduleDef;
use MediaWiki\Block\DatabaseBlock;
use MediaWiki\Context\DerivativeContext;
use MediaWiki\Context\RequestContext;
use MediaWiki\MediaWikiServices;
use MediaWiki\Message\Message;
use MediaWiki\ParamValidator\TypeDef\NamespaceDef;
use MediaWiki\Permissions\PermissionStatus;
use MediaWiki\Request\FauxRequest;
use MediaWiki\Status\Status;
use MediaWiki\Title\Title;
use MessageSpecifier;
use MWException;
use StatusValue;
use Wikimedia\ParamValidator\ParamValidator;
use Wikimedia\ParamValidator\TypeDef\EnumDef;
use Wikimedia\ParamValidator\TypeDef\IntegerDef;
use Wikimedia\ParamValidator\TypeDef\StringDef;
use Wikimedia\TestingAccessWrapper;
use WikiPage;
/**
* @group API

View file

@ -1,9 +1,13 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiBlockInfoTrait;
use MediaWiki\Block\CompositeBlock;
use MediaWiki\Block\DatabaseBlock;
use MediaWiki\Block\SystemBlock;
use MediaWiki\Tests\Unit\DummyServicesTrait;
use MediaWikiIntegrationTestCase;
use Wikimedia\TestingAccessWrapper;
/**

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\Block\DatabaseBlock;
use MediaWiki\Block\Restriction\ActionRestriction;
use MediaWiki\Block\Restriction\NamespaceRestriction;

View file

@ -1,7 +1,13 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiCSPReport;
use ApiResult;
use MediaWiki\MainConfigNames;
use MediaWiki\Request\FauxRequest;
use MediaWikiIntegrationTestCase;
use Psr\Log\AbstractLogger;
/**
* @group API
@ -77,7 +83,7 @@ class ApiCSPReportTest extends MediaWikiIntegrationTestCase {
private function doExecute( array $params, array $cspReport ) {
$log = [];
$logger = $this->createMock( Psr\Log\AbstractLogger::class );
$logger = $this->createMock( AbstractLogger::class );
$logger->method( 'warning' )->willReturnCallback(
static function ( $msg, $ctx ) use ( &$log ) {
unset( $ctx['csp-report'] );

View file

@ -1,5 +1,9 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiUsageException;
use IDBAccessObject;
use MediaWiki\MainConfigNames;
use MediaWiki\Status\Status;
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\Session\Token;
/**

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\Permissions\UltimateAuthority;
use MediaWiki\User\UserIdentityValue;

View file

@ -1,10 +1,14 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiUsageException;
use MediaWiki\Context\RequestContext;
use MediaWiki\MainConfigNames;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Title\Title;
use MediaWiki\Title\TitleValue;
use RevisionDeleter;
/**
* @group API

View file

@ -1,8 +1,15 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiContinuationManager;
use ApiMain;
use ApiResult;
use ApiUsageException;
use MediaWiki\Context\DerivativeContext;
use MediaWiki\Context\RequestContext;
use MediaWiki\Request\FauxRequest;
use UnexpectedValueException;
/**
* @covers \ApiContinuationManager

View file

@ -1,8 +1,12 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiCreateTempUserTrait;
use MediaWiki\HookContainer\HookRunner;
use MediaWiki\Request\WebRequest;
use MediaWiki\User\User;
use MediaWikiIntegrationTestCase;
use Wikimedia\TestingAccessWrapper;
/**

View file

@ -1,5 +1,8 @@
<?php
namespace MediaWiki\Tests\Api;
use IDBAccessObject;
use MediaWiki\MainConfigNames;
use MediaWiki\Title\Title;
use MediaWiki\User\User;

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
/**
* @group API
* @group medium

View file

@ -1,5 +1,10 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiUsageException;
use IDBAccessObject;
use JavaScriptContent;
use MediaWiki\Block\DatabaseBlock;
use MediaWiki\CommentStore\CommentStoreComment;
use MediaWiki\Context\RequestContext;
@ -10,6 +15,9 @@ use MediaWiki\Title\Title;
use MediaWiki\Title\TitleValue;
use MediaWiki\User\User;
use MediaWiki\Utils\MWTimestamp;
use RevisionDeleter;
use WikiPage;
use WikitextContent;
/**
* Tests for MediaWiki api.php?action=edit.

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\Api\ApiEntryPoint;
use MediaWiki\Request\FauxRequest;
use MediaWiki\Tests\MockEnvironment;

View file

@ -1,7 +1,19 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiErrorFormatter;
use ApiErrorFormatter_BackCompat;
use ApiMessage;
use ApiResult;
use Exception;
use IApiMessage;
use LocalizedException;
use MediaWiki\Language\RawMessage;
use MediaWiki\Message\Message;
use MediaWiki\Status\Status;
use MediaWikiLangTestCase;
use RuntimeException;
use Wikimedia\TestingAccessWrapper;
/**

View file

@ -1,10 +1,18 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiErrorFormatter;
use MediaWiki\Auth\AbstractSecondaryAuthenticationProvider;
use MediaWiki\Auth\AuthenticationResponse;
use MediaWiki\Auth\UsernameAuthenticationRequest;
use MediaWiki\MainConfigNames;
use MediaWiki\Session\BotPasswordSessionProvider;
use MediaWiki\Session\SessionManager;
use MediaWiki\Session\Token;
use MediaWiki\User\BotPassword;
use MediaWiki\User\User;
use MWRestrictions;
use Wikimedia\TestingAccessWrapper;
/**
@ -53,7 +61,7 @@ class ApiLoginTest extends ApiTestCase {
'action' => 'login',
'lgname' => '',
'lgpassword' => $this->getTestSysop()->getPassword(),
'lgtoken' => (string)( new MediaWiki\Session\Token( 'foobar', '' ) ),
'lgtoken' => (string)( new Token( 'foobar', '' ) ),
], $session );
$this->assertSame( 'Failed', $ret[0]['login']['result'] );
}
@ -158,7 +166,7 @@ class ApiLoginTest extends ApiTestCase {
$this->assertArrayNotHasKey( 'warnings', $ret );
// Lose the session
MediaWiki\Session\SessionManager::getGlobalSession()->clear();
SessionManager::getGlobalSession()->clear();
$ret[2] = [];
$ret = $this->doApiRequest( [
@ -231,10 +239,10 @@ class ApiLoginTest extends ApiTestCase {
);
$mockProvider = $this->createMock(
MediaWiki\Auth\AbstractSecondaryAuthenticationProvider::class );
AbstractSecondaryAuthenticationProvider::class );
$mockProvider->method( 'beginSecondaryAuthentication' )->willReturn(
MediaWiki\Auth\AuthenticationResponse::newUI(
[ new MediaWiki\Auth\UsernameAuthenticationRequest ],
AuthenticationResponse::newUI(
[ new UsernameAuthenticationRequest ],
// Slightly silly message here
wfMessage( 'mainpage' )
)

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\User\User;
/**

View file

@ -1,5 +1,18 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiBase;
use ApiContinuationManager;
use ApiErrorFormatter;
use ApiErrorFormatter_BackCompat;
use ApiMain;
use ApiRawMessage;
use ApiUsageException;
use FormatJson;
use Generator;
use InvalidArgumentException;
use LogicException;
use MediaWiki\Config\Config;
use MediaWiki\Config\HashConfig;
use MediaWiki\Config\MultiConfig;
@ -10,9 +23,13 @@ use MediaWiki\Permissions\Authority;
use MediaWiki\Request\FauxRequest;
use MediaWiki\Request\FauxResponse;
use MediaWiki\Request\WebRequest;
use MediaWiki\ShellDisabledError;
use MediaWiki\StubObject\StubGlobalUser;
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
use MediaWiki\User\User;
use MWExceptionHandler;
use StatusValue;
use UnexpectedValueException;
use Wikimedia\Rdbms\DBConnRef;
use Wikimedia\Rdbms\DBQueryError;
use Wikimedia\Rdbms\IDatabase;
@ -1019,7 +1036,7 @@ class ApiMainTest extends ApiTestCase {
)->inLanguage( 'en' )->useDatabase( false )->text();
// The specific exception doesn't matter, as long as it's namespaced.
$nsex = new MediaWiki\ShellDisabledError();
$nsex = new ShellDisabledError();
$nstrace = wfMessage( 'api-exception-trace',
get_class( $nsex ),
$nsex->getFile(),
@ -1098,7 +1115,7 @@ class ApiMainTest extends ApiTestCase {
'code' => 'internal_api_error_MediaWiki\ShellDisabledError',
'text' => "[$reqId] Exception caught: " . $nsex->getMessage(),
'data' => [
'errorclass' => MediaWiki\ShellDisabledError::class,
'errorclass' => ShellDisabledError::class,
],
]
],
@ -1164,7 +1181,7 @@ class ApiMainTest extends ApiTestCase {
}
public function testMatchRequestedHeaders() {
$api = Wikimedia\TestingAccessWrapper::newFromClass( ApiMain::class );
$api = TestingAccessWrapper::newFromClass( ApiMain::class );
$allowedHeaders = [ 'Accept', 'Origin', 'User-Agent' ];
$this->assertTrue( $api->matchRequestedHeaders( 'Accept', $allowedHeaders ) );

View file

@ -1,7 +1,14 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiMessage;
use ApiRawMessage;
use InvalidArgumentException;
use MediaWiki\Language\RawMessage;
use MediaWiki\Message\Message;
use MediaWiki\Page\PageReferenceValue;
use MediaWikiIntegrationTestCase;
use Wikimedia\TestingAccessWrapper;
/**

View file

@ -1,5 +1,9 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiUsageException;
use IDBAccessObject;
use MediaWiki\Block\DatabaseBlock;
use MediaWiki\MainConfigNames;
use MediaWiki\Revision\SlotRecord;

View file

@ -1,6 +1,14 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiMain;
use ApiOpenSearch;
use MediaWiki\Context\RequestContext;
use MediaWikiIntegrationTestCase;
use SearchEngine;
use SearchEngineConfig;
use SearchEngineFactory;
use Wikimedia\ParamValidator\ParamValidator;
/**

View file

@ -1,5 +1,12 @@
<?php
namespace MediaWiki\Tests\Api;
namespace MediaWiki\Tests\Api;
use ApiMain;
use ApiOptions;
use ApiUsageException;
use MediaWiki\Context\DerivativeContext;
use MediaWiki\Context\IContextSource;
use MediaWiki\Context\RequestContext;

View file

@ -1,5 +1,10 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiMain;
use ApiPageSet;
use ApiResult;
use MediaWiki\Context\RequestContext;
use MediaWiki\Linker\LinkTarget;
use MediaWiki\MainConfigNames;
@ -9,6 +14,7 @@ use MediaWiki\Request\FauxRequest;
use MediaWiki\Tests\Unit\DummyServicesTrait;
use MediaWiki\Title\Title;
use MediaWiki\Title\TitleValue;
use RuntimeException;
use Wikimedia\TestingAccessWrapper;
/**
@ -106,7 +112,7 @@ class ApiPageSetTest extends ApiTestCase {
"#REDIRECT [[$redirectOneTitle]]"
);
$pageSet->setRedirectMergePolicy( static function ( $cur, $new ) {
throw new \RuntimeException( 'unreachable, no merge when target is redirect loop' );
throw new RuntimeException( 'unreachable, no merge when target is redirect loop' );
} );
// This could infinite loop in a bugged impl, but php doesn't offer
// a great way to time constrain this.

View file

@ -1,4 +1,5 @@
<?php
/**
* ApiParse check functions
*
@ -20,10 +21,16 @@
* @file
*/
namespace MediaWiki\Tests\Api;
use ApiUsageException;
use MediaWiki\MainConfigNames;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Tests\Unit\DummyServicesTrait;
use MediaWiki\Title\TitleValue;
use MockPoolCounterFailing;
use SkinFactory;
use SkinFallback;
/**
* @group API

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\MainConfigNames;
use MediaWiki\Title\Title;

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\Context\RequestContext;
use MediaWiki\Permissions\Authority;
use MediaWiki\Permissions\PermissionStatus;

View file

@ -1,6 +1,16 @@
<?php
namespace MediaWiki\Tests\Api;
use AllowDynamicProperties;
use ApiErrorFormatter;
use ApiResult;
use Exception;
use InvalidArgumentException;
use MediaWiki\Title\Title;
use MediaWikiIntegrationTestCase;
use RuntimeException;
use UnexpectedValueException;
/**
* @covers \ApiResult
@ -1351,8 +1361,8 @@ class ApiResultTest extends MediaWikiIntegrationTestCase {
$this->fail( 'Expected exception not thrown' );
} catch ( UnexpectedValueException $ex ) {
$this->assertSame(
'ApiResultTestSerializableObject::serializeForApiResult() ' .
'returned an object of class ApiResultTestStringifiableObject',
'MediaWiki\Tests\Api\ApiResultTestSerializableObject::serializeForApiResult() ' .
'returned an object of class MediaWiki\Tests\Api\ApiResultTestStringifiableObject',
$ex->getMessage(),
'Expected exception'
);
@ -1364,7 +1374,7 @@ class ApiResultTest extends MediaWikiIntegrationTestCase {
$this->fail( 'Expected exception not thrown' );
} catch ( UnexpectedValueException $ex ) {
$this->assertSame(
'ApiResultTestSerializableObject::serializeForApiResult() ' .
'MediaWiki\Tests\Api\ApiResultTestSerializableObject::serializeForApiResult() ' .
'returned an invalid value: Cannot add non-finite floats to ApiResult',
$ex->getMessage(),
'Expected exception'
@ -1397,7 +1407,7 @@ class ApiResultTestStringifiableObject {
}
}
#[\AllowDynamicProperties]
#[AllowDynamicProperties]
class ApiResultTestSerializableObject {
private $ret;

View file

@ -1,11 +1,14 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\Block\DatabaseBlock;
use MediaWiki\Block\Restriction\PageRestriction;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Revision\SlotRecord;
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
use MediaWiki\Title\Title;
use MWCryptRand;
/**
* Tests for action=revisiondelete

View file

@ -1,5 +1,8 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiUsageException;
use MediaWiki\MainConfigNames;
use MediaWiki\Title\Title;

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
/**
* @author Addshore
* @covers \ApiSetNotificationTimestamp

View file

@ -1,14 +1,21 @@
<?php
namespace MediaWiki\Tests\Api;
use CssContent;
use HashBagOStuff;
use MediaWiki\MainConfigNames;
use MediaWiki\Storage\PageEditStash;
use MediaWiki\Title\Title;
use MediaWiki\User\User;
use MediaWiki\User\UserIdentity;
use MediaWiki\User\UserRigorOptions;
use NullStatsdDataFactory;
use Psr\Log\NullLogger;
use stdClass;
use Wikimedia\TestingAccessWrapper;
use Wikimedia\Timestamp\ConvertibleTimestamp;
use WikitextContent;
/**
* @covers \ApiStashEdit
@ -19,6 +26,9 @@ use Wikimedia\Timestamp\ConvertibleTimestamp;
* @todo Expand tests for temporary users
*/
class ApiStashEditTest extends ApiTestCase {
private const CLASS_NAME = 'ApiStashEditTest';
protected function setUp(): void {
parent::setUp();
// Hack to make user edit tracker survive service reset.
@ -54,7 +64,7 @@ class ApiStashEditTest extends ApiTestCase {
) {
$params = array_merge( [
'action' => 'stashedit',
'title' => __CLASS__,
'title' => self::CLASS_NAME,
'contentmodel' => 'wikitext',
'contentformat' => 'text/x-wiki',
'baserevid' => 0,
@ -123,7 +133,7 @@ class ApiStashEditTest extends ApiTestCase {
* @param User|null $user User who made edit
* @return string
*/
protected function getStashKey( $title = __CLASS__, $text = 'Content', User $user = null ) {
protected function getStashKey( $title = self::CLASS_NAME, $text = 'Content', User $user = null ) {
$titleObj = Title::newFromText( $title );
$content = new WikitextContent( $text );
if ( !$user ) {
@ -418,7 +428,7 @@ class ApiStashEditTest extends ApiTestCase {
$editStash = TestingAccessWrapper::newFromObject(
$this->getServiceContainer()->getPageEditStash() );
$cache = $editStash->cache;
$key = $this->getStashKey( __CLASS__, $text );
$key = $this->getStashKey( self::CLASS_NAME, $text );
$wrapper = TestingAccessWrapper::newFromObject( $cache );

View file

@ -1,13 +1,28 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiBase;
use ApiErrorFormatter;
use ApiMain;
use ApiMessage;
use ApiQueryTokens;
use ApiResult;
use ApiUsageException;
use ArrayAccess;
use LogicException;
use MediaWiki\Context\RequestContext;
use MediaWiki\MediaWikiServices;
use MediaWiki\Message\Message;
use MediaWiki\Permissions\Authority;
use MediaWiki\Request\FauxRequest;
use MediaWiki\Session\Session;
use MediaWiki\Session\SessionManager;
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
use MediaWikiLangTestCase;
use PHPUnit\Framework\AssertionFailedError;
use PHPUnit\Framework\Constraint\Constraint;
use ReturnTypeWillChange;
abstract class ApiTestCase extends MediaWikiLangTestCase {
use MockAuthorityTrait;
@ -44,7 +59,7 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
return isset( $this->getters[$offset] ) || isset( $this->extraUsers[$offset] );
}
#[\ReturnTypeWillChange]
#[ReturnTypeWillChange]
public function offsetGet( $offset ) {
if ( isset( $this->getters[$offset] ) ) {
return ( $this->getters[$offset] )();
@ -74,7 +89,7 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
protected function tearDown(): void {
// Avoid leaking session over tests
MediaWiki\Session\SessionManager::getGlobalSession()->clear();
SessionManager::getGlobalSession()->clear();
ApiBase::clearCacheForTest();
@ -184,7 +199,7 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
/**
* @since 1.37
* @param array $params
* @param MediaWiki\Session\Session|array|null $session
* @param Session|array|null $session
* @return FauxRequest
*/
protected function buildFauxRequest( $params, $session ) {
@ -340,3 +355,5 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
);
}
}
class_alias( ApiTestCase::class, 'ApiTestCase' );

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\Context\DerivativeContext;
use MediaWiki\Context\RequestContext;
use MediaWiki\Permissions\Authority;
@ -24,3 +26,5 @@ class ApiTestContext extends RequestContext {
return $context;
}
}
class_alias( ApiTestContext::class, 'ApiTestContext' );

View file

@ -1,5 +1,8 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiUsageException;
use MediaWiki\Block\DatabaseBlock;
use MediaWiki\Title\Title;
use MediaWiki\User\User;

View file

@ -1,5 +1,8 @@
<?php
namespace MediaWiki\Tests\Api;
use IDBAccessObject;
use MediaWiki\MainConfigNames;
use MediaWiki\Title\Title;

View file

@ -1,9 +1,15 @@
<?php
namespace MediaWiki\Tests\Api;
use FSFileBackend;
use LocalRepo;
use MediaWiki\MainConfigNames;
use MediaWiki\Permissions\Authority;
use MediaWiki\Title\Title;
use MediaWiki\WikiMap\WikiMap;
use MimeAnalyzer;
use RepoGroup;
/**
* @group API

View file

@ -1,5 +1,10 @@
<?php
namespace MediaWiki\Tests\Api;
use Exception;
use FSFile;
use IDBAccessObject;
use MediaWiki\MainConfigNames;
use MediaWiki\Page\File\FileDeleteForm;
use MediaWiki\Title\Title;
@ -165,3 +170,5 @@ abstract class ApiUploadTestCase extends ApiTestCase {
$this->requestDataFiles = [];
}
}
class_alias( ApiUploadTestCase::class, 'ApiUploadTestCase' );

View file

@ -1,5 +1,13 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiMessage;
use ApiUsageException;
use MediaWiki\Message\Message;
use MediaWikiIntegrationTestCase;
use StatusValue;
/**
* @covers \ApiUsageException
*/

View file

@ -1,10 +1,13 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\Block\DatabaseBlock;
use MediaWiki\MainConfigNames;
use MediaWiki\MainConfigSchema;
use MediaWiki\Title\Title;
use MediaWiki\User\User;
use TestUserRegistry;
/**
* @group API

View file

@ -1,5 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
use MediaWiki\MainConfigNames;
use MediaWiki\Title\Title;
use Wikimedia\Timestamp\ConvertibleTimestamp;

View file

@ -1,5 +1,9 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiBase;
class MockApi extends ApiBase {
public $warnings = [];

View file

@ -1,5 +1,9 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiQueryBase;
class MockApiQueryBase extends ApiQueryBase {
private $name;

View file

@ -1,4 +1,7 @@
<?php
namespace MediaWiki\Tests\Api;
/**
* RandomImageGenerator -- does what it says on the tin.
* Requires Imagick, the ImageMagick library for PHP, or the command line
@ -23,7 +26,13 @@
* @author Neil Kandalgaonkar <neilk@wikimedia.org>
*/
use Exception;
use Imagick;
use ImagickDraw;
use ImagickPixel;
use MediaWiki\Shell\Shell;
use SimpleXMLElement;
use UnexpectedValueException;
/**
* RandomImageGenerator: does what it says on the tin.
@ -411,3 +420,5 @@ class RandomImageGenerator {
return 'rgb(' . implode( ', ', $components ) . ')';
}
}
class_alias( RandomImageGenerator::class, 'RandomImageGenerator' );

View file

@ -6,10 +6,12 @@ use ApiBase;
use ApiMain;
use ApiMessage;
use ApiQueryBase;
use ApiUploadTestCase;
use Generator;
use MediaWiki\Api\Validator\ApiParamValidatorCallbacks;
use MediaWiki\Request\FauxRequest;
use MediaWiki\Tests\Api\ApiUploadTestCase;
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
use Psr\Http\Message\UploadedFileInterface;
use Wikimedia\Message\DataMessageValue;
use Wikimedia\TestingAccessWrapper;
@ -150,16 +152,16 @@ class ApiParamValidatorCallbacksTest extends ApiUploadTestCase {
$this->assertNull( $callbacks->getUploadedFile( 'baz', [] ) );
$file = $callbacks->getUploadedFile( 'file', [] );
$this->assertInstanceOf( \Psr\Http\Message\UploadedFileInterface::class, $file );
$this->assertInstanceOf( UploadedFileInterface::class, $file );
$this->assertSame( UPLOAD_ERR_OK, $file->getError() );
$this->assertSame( 'TestUploadStash.jpg', $file->getClientFilename() );
$file = $callbacks->getUploadedFile( 'file2', [] );
$this->assertInstanceOf( \Psr\Http\Message\UploadedFileInterface::class, $file );
$this->assertInstanceOf( UploadedFileInterface::class, $file );
$this->assertSame( UPLOAD_ERR_NO_FILE, $file->getError() );
$file = $callbacks->getUploadedFile( 'file3', [] );
$this->assertInstanceOf( \Psr\Http\Message\UploadedFileInterface::class, $file );
$this->assertInstanceOf( UploadedFileInterface::class, $file );
$this->assertSame( UPLOAD_ERR_INI_SIZE, $file->getError() );
}
@ -212,7 +214,7 @@ class ApiParamValidatorCallbacksTest extends ApiUploadTestCase {
);
}
public static function provideRecordCondition(): \Generator {
public static function provideRecordCondition(): Generator {
yield 'Deprecated param' => [
DataMessageValue::new(
'paramvalidator-param-deprecated', [],

View file

@ -5,11 +5,11 @@ namespace MediaWiki\Tests\Api\Validator;
use ApiBase;
use ApiMain;
use ApiMessage;
use ApiTestCase;
use ApiUsageException;
use MediaWiki\Api\Validator\ApiParamValidator;
use MediaWiki\Message\Message;
use MediaWiki\Request\FauxRequest;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
use Wikimedia\Message\DataMessageValue;
use Wikimedia\Message\MessageValue;

View file

@ -5,7 +5,7 @@ namespace MediaWiki\Tests\Api\Validator;
use ApiMain;
use ApiModuleManager;
use MediaWiki\Api\Validator\SubmoduleDef;
use MockApi;
use MediaWiki\Tests\Api\MockApi;
use Wikimedia\Message\DataMessageValue;
use Wikimedia\ParamValidator\ParamValidator;
use Wikimedia\ParamValidator\SimpleCallbacks;

View file

@ -1,8 +1,14 @@
<?php
namespace MediaWiki\Tests\Api\Format;
use ApiBase;
use ApiFormatBase;
use ApiMain;
use MediaWiki\Context\RequestContext;
use MediaWiki\MainConfigNames;
use MediaWiki\Request\FauxRequest;
use PHPUnit\Framework\MockObject\MockObject;
use Wikimedia\ParamValidator\ParamValidator;
use Wikimedia\TestingAccessWrapper;
@ -24,7 +30,7 @@ class ApiFormatBaseTest extends ApiFormatTestBase {
* @param ApiMain|null $main
* @param string $format
* @param array $methods
* @return ApiFormatBase|\PHPUnit\Framework\MockObject\MockObject
* @return ApiFormatBase|MockObject
*/
public function getMockFormatter( ?ApiMain $main, $format, $methods = [] ) {
if ( $main === null ) {

View file

@ -1,5 +1,11 @@
<?php
namespace MediaWiki\Tests\Api\Format;
use ApiResult;
use InvalidArgumentException;
use MWException;
/**
* @group API
* @covers \ApiFormatJson

View file

@ -1,5 +1,9 @@
<?php
namespace MediaWiki\Tests\Api\Format;
use ApiResult;
/**
* @group API
* @covers \ApiFormatNone

View file

@ -1,5 +1,9 @@
<?php
namespace MediaWiki\Tests\Api\Format;
use ApiResult;
/**
* @group API
* @covers \ApiFormatPhp

View file

@ -1,5 +1,12 @@
<?php
namespace MediaWiki\Tests\Api\Format;
use ApiFormatJson;
use ApiFormatRaw;
use ApiMain;
use MWException;
/**
* @group API
* @covers \ApiFormatRaw

View file

@ -1,7 +1,13 @@
<?php
namespace MediaWiki\Tests\Api\Format;
use ApiMain;
use BadMethodCallException;
use Exception;
use MediaWiki\Context\RequestContext;
use MediaWiki\Request\FauxRequest;
use MediaWikiIntegrationTestCase;
abstract class ApiFormatTestBase extends MediaWikiIntegrationTestCase {

View file

@ -1,5 +1,8 @@
<?php
namespace MediaWiki\Tests\Api\Format;
use ApiResult;
use MediaWiki\Title\Title;
/**

View file

@ -1,4 +1,9 @@
<?php
namespace MediaWiki\Tests\Api;
use Maintenance;
/**
* Bootstrapping for test image file generation
*

View file

@ -1,5 +1,8 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Title\Title;
/**

View file

@ -1,5 +1,8 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Title\Title;
/**

View file

@ -1,6 +1,9 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Permissions\UltimateAuthority;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
/**

View file

@ -20,6 +20,9 @@
* @file
*/
namespace MediaWiki\Tests\Api\Query;
use Exception;
use MediaWiki\Title\Title;
/**

View file

@ -1,8 +1,13 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use ApiQueryBase;
use ApiQueryBlockInfoTrait;
use MediaWiki\MainConfigNames;
use MediaWiki\Tests\MockDatabase;
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
use MediaWikiIntegrationTestCase;
use Wikimedia\TestingAccessWrapper;
use Wikimedia\Timestamp\ConvertibleTimestamp;

View file

@ -1,11 +1,14 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Block\BlockActionInfo;
use MediaWiki\Block\DatabaseBlock;
use MediaWiki\Block\Restriction\ActionRestriction;
use MediaWiki\Block\Restriction\NamespaceRestriction;
use MediaWiki\Block\Restriction\PageRestriction;
use MediaWiki\MainConfigNames;
use MediaWiki\Tests\Api\ApiTestCase;
/**
* @group API

View file

@ -1,4 +1,5 @@
<?php
/**
* Copyright © 2013 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
*
@ -18,6 +19,10 @@
* http://www.gnu.org/copyleft/gpl.html
*/
namespace MediaWiki\Tests\Api\Query;
use Exception;
/**
* @group API
* @group Database

View file

@ -1,4 +1,5 @@
<?php
/**
* Copyright © 2013 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
*
@ -18,6 +19,10 @@
* http://www.gnu.org/copyleft/gpl.html
*/
namespace MediaWiki\Tests\Api\Query;
use Exception;
/**
* These tests validate the new continue functionality of the api query module by
* doing multiple requests with varying parameters, merging the results, and checking

View file

@ -1,4 +1,5 @@
<?php
/**
* Copyright © 2013 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
*
@ -19,6 +20,11 @@
*
* @file
*/
namespace MediaWiki\Tests\Api\Query;
use Exception;
abstract class ApiQueryContinueTestBase extends ApiQueryTestBase {
/**

View file

@ -1,5 +1,9 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Tests\Api\ApiTestCase;
/**
* @group API
* @group medium

View file

@ -1,6 +1,11 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use ApiQueryImageInfo;
use File;
use MediaWiki\MainConfigNames;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
use MediaWiki\User\UserIdentityValue;
use MediaWiki\Utils\MWTimestamp;

View file

@ -1,8 +1,11 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Block\DatabaseBlock;
use MediaWiki\Context\RequestContext;
use MediaWiki\MainConfigNames;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Title\Title;
use MediaWiki\User\User;
use Wikimedia\Timestamp\ConvertibleTimestamp;

View file

@ -1,5 +1,8 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Tests\Api\ApiTestCase;
use Wikimedia\Timestamp\ConvertibleTimestamp;
/**

View file

@ -1,6 +1,9 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Permissions\UltimateAuthority;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Tests\User\TempUser\TempUserTestTrait;
use MediaWiki\User\UserIdentityValue;

View file

@ -1,6 +1,10 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\MainConfigNames;
use MediaWiki\Tests\Api\ApiTestCase;
use MockCompletionSearchEngine;
/**
* @group API

View file

@ -1,11 +1,16 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Linker\LinkTarget;
use MediaWiki\MainConfigNames;
use MediaWiki\Permissions\Authority;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Title\TitleValue;
use MediaWiki\User\User;
use MediaWiki\User\UserIdentityValue;
use RecentChange;
use WatchedItemQueryService;
/**
* @group API
@ -412,7 +417,8 @@ class ApiQueryRecentChangesIntegrationTest extends ApiTestCase {
[
'type' => 'new',
'oldlen' => 0,
'newlen' => 38,
// strlen( __CLASS__ ) - 2 = 64
'newlen' => 64,
],
],
$this->getItemsFromRecentChangesResult( $result )

View file

@ -1,10 +1,14 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\CommentStore\CommentStoreComment;
use MediaWiki\Permissions\UltimateAuthority;
use MediaWiki\Revision\SlotRecord;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Tests\User\TempUser\TempUserTestTrait;
use MediaWiki\User\UserIdentityValue;
use WikitextContent;
/**
* @group API

View file

@ -1,8 +1,15 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use ISearchResultSet;
use MediaWiki\MainConfigNames;
use MediaWiki\Revision\RevisionLookup;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Title\Title;
use MockSearchEngine;
use MockSearchResult;
use MockSearchResultSet;
/**
* @group medium

View file

@ -1,9 +1,17 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use ExtensionRegistry;
use LanguageCode;
use LanguageConverter;
use MediaWiki\MainConfigNames;
use MediaWiki\MainConfigSchema;
use MediaWiki\Message\Message;
use MediaWiki\SiteStats\SiteStats;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Title\Title;
use Skin;
use Wikimedia\Composer\ComposerInstalled;
use Wikimedia\Rdbms\LoadBalancer;
use Wikimedia\TestingAccessWrapper;

View file

@ -1,7 +1,13 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use ApiMain;
use ApiUsageException;
use MediaWiki\MainConfigNames;
use MediaWiki\Request\FauxRequest;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Tests\Api\MockApiQueryBase;
use MediaWiki\Tests\Unit\DummyServicesTrait;
use MediaWiki\Title\Title;

View file

@ -1,4 +1,5 @@
<?php
/**
* Copyright © 2013 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
*
@ -20,11 +21,15 @@
* @file
*/
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\User\User;
use PHPUnit\Framework\ExpectationFailedException;
use SebastianBergmann\Comparator\ComparisonFailure;
/** This class has some common functionality for testing query module
/**
* This class has some common functionality for testing query module
*/
abstract class ApiQueryTestBase extends ApiTestCase {
@ -152,3 +157,5 @@ STR;
return array_merge( $result );
}
}
class_alias( ApiQueryTestBase::class, 'ApiQueryTestBase' );

View file

@ -1,6 +1,10 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\MainConfigNames;
use MediaWiki\Message\Message;
use MediaWiki\Tests\Api\ApiTestCase;
/**
* @group API

View file

@ -1,8 +1,12 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Title\TitleValue;
use MediaWiki\User\User;
use MediaWiki\User\UserRigorOptions;
use WikitextContent;
/**
* @group API

View file

@ -1,5 +1,8 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Utils\MWTimestamp;
/**

View file

@ -1,11 +1,16 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\CommentStore\CommentStoreComment;
use MediaWiki\Linker\LinkTarget;
use MediaWiki\Permissions\Authority;
use MediaWiki\Revision\SlotRecord;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Title\TitleValue;
use MediaWiki\User\User;
use RecentChange;
use WatchedItemQueryService;
/**
* @group medium

View file

@ -1,7 +1,11 @@
<?php
namespace MediaWiki\Tests\Api\Query;
use MediaWiki\Tests\Api\ApiTestCase;
use MediaWiki\Title\TitleValue;
use MediaWiki\User\User;
use WatchedItemQueryService;
/**
* @group API

View file

@ -1,8 +1,18 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiDisabled;
use ApiFeedContributions;
use ApiFeedRecentChanges;
use ApiLogout;
use ApiMain;
use ApiModuleManager;
use ApiRsd;
use MediaWiki\Context\RequestContext;
use MediaWiki\Tests\Unit\DummyServicesTrait;
use MediaWiki\User\UserFactory;
use MediaWikiUnitTestCase;
/**
* @covers \ApiModuleManager

View file

@ -1,9 +1,13 @@
<?php
namespace MediaWiki\Tests\Api;
use ApiWatchlistTrait;
use MediaWiki\Title\Title;
use MediaWiki\User\Options\UserOptionsLookup;
use MediaWiki\User\User;
use MediaWiki\Watchlist\WatchlistManager;
use MediaWikiUnitTestCase;
use Wikimedia\TestingAccessWrapper;
/**