return $handler->getAutoDeleteReason( $title, $hasHistory );
}
- /**
- * @return array
- *
- * @deprecated since 1.24, use WikiPage::selectFields() instead
- */
- public static function selectFields() {
- wfDeprecated( __METHOD__, '1.24' );
- return WikiPage::selectFields();
- }
-
- /**
- * @param Title $title
- *
- * @deprecated since 1.24, use WikiPage::onArticleCreate() instead
- */
- public static function onArticleCreate( $title ) {
- wfDeprecated( __METHOD__, '1.24' );
- WikiPage::onArticleCreate( $title );
- }
-
- /**
- * @param Title $title
- *
- * @deprecated since 1.24, use WikiPage::onArticleDelete() instead
- */
- public static function onArticleDelete( $title ) {
- wfDeprecated( __METHOD__, '1.24' );
- WikiPage::onArticleDelete( $title );
- }
-
- /**
- * @param Title $title
- *
- * @deprecated since 1.24, use WikiPage::onArticleEdit() instead
- */
- public static function onArticleEdit( $title ) {
- wfDeprecated( __METHOD__, '1.24' );
- WikiPage::onArticleEdit( $title );
- }
-
// ******
}
*/
class BlockTest extends MediaWikiLangTestCase {
- /** @var Block */
- private $block;
- private $madeAt;
-
- /* variable used to save up the blockID we insert in this test suite */
- private $blockId;
-
- function addDBData() {
- $user = User::newFromName( 'UTBlockee' );
- if ( $user->getId() == 0 ) {
- $user->addToDatabase();
- TestUser::setPasswordForUser( $user, 'UTBlockeePassword' );
-
- $user->saveSettings();
- }
+ /**
+ * @return User
+ */
+ private function getUserForBlocking() {
+ $testUser = $this->getMutableTestUser();
+ $user = $testUser->getUser();
+ $user->addToDatabase();
+ TestUser::setPasswordForUser( $user, 'UTBlockeePassword' );
+ $user->saveSettings();
+ return $user;
+ }
+ /**
+ * @param User $user
+ *
+ * @return Block
+ * @throws MWException
+ */
+ private function addBlockForUser( User $user ) {
// Delete the last round's block if it's still there
- $oldBlock = Block::newFromTarget( 'UTBlockee' );
+ $oldBlock = Block::newFromTarget( $user->getName() );
if ( $oldBlock ) {
// An old block will prevent our new one from saving.
$oldBlock->delete();
}
$blockOptions = [
- 'address' => 'UTBlockee',
+ 'address' => $user->getName(),
'user' => $user->getId(),
'reason' => 'Parce que',
'expiry' => time() + 100500,
];
- $this->block = new Block( $blockOptions );
- $this->madeAt = wfTimestamp( TS_MW );
+ $block = new Block( $blockOptions );
- $this->block->insert();
+ $block->insert();
// save up ID for use in assertion. Since ID is an autoincrement,
// its value might change depending on the order the tests are run.
// ApiBlockTest insert its own blocks!
- $newBlockId = $this->block->getId();
- if ( $newBlockId ) {
- $this->blockId = $newBlockId;
- } else {
+ if ( !$block->getId() ) {
throw new MWException( "Failed to insert block for BlockTest; old leftover block remaining?" );
}
$this->addXffBlocks();
- }
- /**
- * debug function : dump the ipblocks table
- */
- function dumpBlocks() {
- $v = $this->db->select( 'ipblocks', '*' );
- print "Got " . $v->numRows() . " rows. Full dump follow:\n";
- foreach ( $v as $row ) {
- print_r( $row );
- }
+ return $block;
}
/**
* @covers Block::newFromTarget
*/
public function testINewFromTargetReturnsCorrectBlock() {
+ $user = $this->getUserForBlocking();
+ $block = $this->addBlockForUser( $user );
+
$this->assertTrue(
- $this->block->equals( Block::newFromTarget( 'UTBlockee' ) ),
+ $block->equals( Block::newFromTarget( $user->getName() ) ),
"newFromTarget() returns the same block as the one that was made"
);
}
* @covers Block::newFromID
*/
public function testINewFromIDReturnsCorrectBlock() {
+ $user = $this->getUserForBlocking();
+ $block = $this->addBlockForUser( $user );
+
$this->assertTrue(
- $this->block->equals( Block::newFromID( $this->blockId ) ),
+ $block->equals( Block::newFromID( $block->getId() ) ),
"newFromID() returns the same block as the one that was made"
);
}
* per T28425
*/
public function testBug26425BlockTimestampDefaultsToTime() {
+ $user = $this->getUserForBlocking();
+ $block = $this->addBlockForUser( $user );
+ $madeAt = wfTimestamp( TS_MW );
+
// delta to stop one-off errors when things happen to go over a second mark.
- $delta = abs( $this->madeAt - $this->block->mTimestamp );
+ $delta = abs( $madeAt - $block->mTimestamp );
$this->assertLessThan(
2,
$delta,
* @covers Block::newFromTarget
*/
public function testBug29116NewFromTargetWithEmptyIp( $vagueTarget ) {
- $block = Block::newFromTarget( 'UTBlockee', $vagueTarget );
+ $user = $this->getUserForBlocking();
+ $initialBlock = $this->addBlockForUser( $user );
+ $block = Block::newFromTarget( $user->getName(), $vagueTarget );
+
$this->assertTrue(
- $this->block->equals( $block ),
+ $initialBlock->equals( $block ),
"newFromTarget() returns the same block as the one that was made when "
. "given empty vagueTarget param " . var_export( $vagueTarget, true )
);
* @covers Block::chooseBlock
*/
public function testBlocksOnXff( $xff, $exCount, $exResult ) {
+ $user = $this->getUserForBlocking();
+ $this->addBlockForUser( $user );
+
$list = array_map( 'trim', explode( ',', $xff ) );
$xffblocks = Block::getBlocksForIPList( $list, true );
$this->assertEquals( $exCount, count( $xffblocks ), 'Number of blocks for ' . $xff );
}
public function testSystemBlocks() {
+ $user = $this->getUserForBlocking();
+ $this->addBlockForUser( $user );
+
$blockOptions = [
- 'address' => 'UTBlockee',
+ 'address' => $user->getName(),
'reason' => 'test system block',
'timestamp' => wfTimestampNow(),
'expiry' => $this->db->getInfinity(),
$this->assertSame( 'Cannot autoblock from a system block', $ex->getMessage() );
}
}
+
}
$this->assertEquals( $orig->getSha1(), $rev->getSha1() );
}
+ /**
+ * @covers Revision::insertOn
+ */
+ public function testInsertOn_success() {
+ $parentId = $this->testPage->getLatest();
+
+ // If an ExternalStore is set don't use it.
+ $this->setMwGlobals( 'wgDefaultExternalStore', false );
+
+ $rev = new Revision( [
+ 'page' => $this->testPage->getId(),
+ 'title' => $this->testPage->getTitle(),
+ 'text' => 'Revision Text',
+ 'comment' => 'Revision comment',
+ ] );
+
+ $revId = $rev->insertOn( wfGetDB( DB_MASTER ) );
+
+ $this->assertInternalType( 'integer', $revId );
+ $this->assertInternalType( 'integer', $rev->getTextId() );
+ $this->assertSame( $revId, $rev->getId() );
+
+ $this->assertSelect(
+ 'text',
+ [ 'old_id', 'old_text' ],
+ "old_id = {$rev->getTextId()}",
+ [ [ strval( $rev->getTextId() ), 'Revision Text' ] ]
+ );
+ $this->assertSelect(
+ 'revision',
+ [
+ 'rev_id',
+ 'rev_page',
+ 'rev_text_id',
+ 'rev_user',
+ 'rev_minor_edit',
+ 'rev_deleted',
+ 'rev_len',
+ 'rev_parent_id',
+ 'rev_sha1',
+ ],
+ "rev_id = {$rev->getId()}",
+ [ [
+ strval( $rev->getId() ),
+ strval( $this->testPage->getId() ),
+ strval( $rev->getTextId() ),
+ '0',
+ '0',
+ '0',
+ '13',
+ strval( $parentId ),
+ 's0ngbdoxagreuf2vjtuxzwdz64n29xm',
+ ] ]
+ );
+ }
+
+ /**
+ * @covers Revision::insertOn
+ */
+ public function testInsertOn_exceptionOnNoPage() {
+ // If an ExternalStore is set don't use it.
+ $this->setMwGlobals( 'wgDefaultExternalStore', false );
+ $this->setExpectedException(
+ MWException::class,
+ "Cannot insert revision: page ID must be nonzero"
+ );
+
+ $rev = new Revision( [] );
+
+ $rev->insertOn( wfGetDB( DB_MASTER ) );
+ }
+
/**
* @covers Revision::newFromTitle
*/
$this->assertEquals( -8, $this->article->ext_someNewProperty,
"Article get/set magic on update to new field" );
}
-
- /**
- * Checks for the existence of the backwards compatibility static functions
- * (forwarders to WikiPage class)
- *
- * @covers Article::selectFields
- * @covers Article::onArticleCreate
- * @covers Article::onArticleDelete
- * @covers Article::onArticleEdit
- */
- public function testStaticFunctions() {
- $this->hideDeprecated( 'Article::selectFields' );
-
- $this->assertEquals( WikiPage::selectFields(), Article::selectFields(),
- "Article static functions" );
- $this->assertEquals( true, is_callable( "Article::onArticleCreate" ),
- "Article static functions" );
- $this->assertEquals( true, is_callable( "Article::onArticleDelete" ),
- "Article static functions" );
- $this->assertEquals( true, is_callable( "ImagePage::onArticleEdit" ),
- "Article static functions" );
- }
}