*/
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() );
}
}
+
}