* Deprecate and stop using $wgBlockTargetMigrationStage. Remove block_target migration code. * Make the $schema parameters to DatabaseBlockStore methods default to SCHEMA_BLOCK. Avoid passing these parameters where possible. * Remove cleanupBlocks.php * Deprecate DatabaseBlock static methods which try to present the old schema for b/c. Bug: T362133 Change-Id: I845bad8cc09a4528fef46a6f9d490ebdec881d99
84 lines
2.5 KiB
PHP
84 lines
2.5 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Tests\Api\Query;
|
|
|
|
use ApiQueryBase;
|
|
use ApiQueryBlockInfoTrait;
|
|
use MediaWiki\Tests\MockDatabase;
|
|
use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
|
|
use MediaWikiIntegrationTestCase;
|
|
use Wikimedia\TestingAccessWrapper;
|
|
use Wikimedia\Timestamp\ConvertibleTimestamp;
|
|
|
|
/**
|
|
* @covers \ApiQueryBlockInfoTrait
|
|
*/
|
|
class ApiQueryBlockInfoTraitTest extends MediaWikiIntegrationTestCase {
|
|
use MockAuthorityTrait;
|
|
|
|
public function testUsesApiBlockInfoTrait() {
|
|
$this->assertTrue( method_exists( ApiQueryBlockInfoTrait::class, 'getBlockDetails' ),
|
|
'ApiQueryBlockInfoTrait::getBlockDetails exists' );
|
|
}
|
|
|
|
/**
|
|
* @dataProvider provideAddDeletedUserFilter
|
|
*/
|
|
public function testAddDeletedUserFilter( $isAllowed, $expect ) {
|
|
// Fake timestamp to show up in the queries
|
|
ConvertibleTimestamp::setFakeTime( '20190101000000' );
|
|
|
|
$authority = $this->mockRegisteredAuthorityWithPermissions(
|
|
$isAllowed ? [ 'hideuser' ] : [] );
|
|
$db = new MockDatabase;
|
|
$queryBuilder = $db->newSelectQueryBuilder()
|
|
->from( 'table' );
|
|
|
|
$mock = $this->getMockBuilder( ApiQueryBase::class )
|
|
->disableOriginalConstructor()
|
|
->onlyMethods( [
|
|
'getQueryBuilder',
|
|
'getDB',
|
|
'getAuthority'
|
|
] )
|
|
->getMockForAbstractClass();
|
|
|
|
$mock->method( 'getQueryBuilder' )->willReturn( $queryBuilder );
|
|
$mock->method( 'getDB' )->willReturn( new MockDatabase );
|
|
$mock->method( 'getAuthority' )->willReturn( $authority );
|
|
|
|
TestingAccessWrapper::newFromObject( $mock )->addDeletedUserFilter();
|
|
$data = $queryBuilder->getQueryInfo();
|
|
$this->assertSame( $expect, $data );
|
|
}
|
|
|
|
public static function provideAddDeletedUserFilter() {
|
|
return [
|
|
'unauthorized' => [
|
|
false,
|
|
[
|
|
'tables' => [ 'table' ],
|
|
'fields' => [ 'hu_deleted' => '1=0' ],
|
|
'conds' => [ '(SELECT 1 FROM "block_target" "hu_block_target" ' .
|
|
'JOIN "block" "hu_block" ON ((hu_block.bl_target=hu_block_target.bt_id)) ' .
|
|
'WHERE (hu_block_target.bt_user=user_id) AND hu_block.bl_deleted = 1 ) IS NULL' ],
|
|
'options' => [],
|
|
'join_conds' => [],
|
|
],
|
|
],
|
|
'authorized' => [
|
|
true,
|
|
[
|
|
'tables' => [ 'table' ],
|
|
'fields' => [ 'hu_deleted' => '(SELECT 1 FROM "block_target" "hu_block_target" ' .
|
|
'JOIN "block" "hu_block" ON ((hu_block.bl_target=hu_block_target.bt_id)) ' .
|
|
'WHERE (hu_block_target.bt_user=user_id) AND hu_block.bl_deleted = 1 ) IS NOT NULL' ],
|
|
'conds' => [],
|
|
'options' => [],
|
|
'join_conds' => []
|
|
],
|
|
],
|
|
];
|
|
}
|
|
|
|
}
|