Move the block insertion to addDBData(), and use a provider to
itterate through the test strings.
This seems like the more correct way to run these tests, although it
still seems hacky, since the db isn't cleaned up after each test.
Change-Id: Ib22ce69797ec03a61b0cc330e8572865290ebd31
} else {
throw new MWException( "Failed to insert block for BlockTest; old leftover block remaining?" );
}
} else {
throw new MWException( "Failed to insert block for BlockTest; old leftover block remaining?" );
}
+
+ $this->addXffBlocks();
$this->assertEquals( 0, $block->getBy(), 'Correct blocker id' );
}
$this->assertEquals( 0, $block->getBy(), 'Correct blocker id' );
}
- function testBlocksOnXff() {
+ protected function addXffBlocks() {
+ static $inited = false;
+
+ if ( $inited ) {
+ return;
+ }
+
+ $inited = true;
$blockList = array(
array( 'target' => '70.2.0.0/16',
$blockList = array(
array( 'target' => '70.2.0.0/16',
$block->isAutoblocking( $insBlock['isAutoBlocking'] );
$block->insert();
}
$block->isAutoblocking( $insBlock['isAutoBlocking'] );
$block->insert();
}
+ public static function providerXff() {
+ return array(
array( 'xff' => '1.2.3.4, 70.2.1.1, 60.2.1.1, 2.3.4.5',
'count' => 2,
'result' => 'Range Hardblock'
array( 'xff' => '1.2.3.4, 70.2.1.1, 60.2.1.1, 2.3.4.5',
'count' => 2,
'result' => 'Range Hardblock'
'result' => 'Range6 Hardblock'
),
);
'result' => 'Range6 Hardblock'
),
);
- foreach ( $xffHeaders as $test ) {
- $list = array_map( 'trim', explode( ',', $test['xff'] ) );
- $xffblocks = Block::getBlocksForIPList( $list, true );
- $this->assertEquals( $test['count'], count( $xffblocks ), 'Number of blocks for ' . $test['xff'] );
- $block = Block::chooseBlock( $xffblocks, $list );
- $this->assertEquals( $test['result'], $block->mReason, 'Correct block type for XFF header ' . $test['xff'] );
- }
-
+ /**
+ * @dataProvider providerXff
+ */
+ function testBlocksOnXff( $xff, $exCount, $exResult ) {
+ $list = array_map( 'trim', explode( ',', $xff ) );
+ $xffblocks = Block::getBlocksForIPList( $list, true );
+ $this->assertEquals( $exCount, count( $xffblocks ), 'Number of blocks for ' . $xff );
+ $block = Block::chooseBlock( $xffblocks, $list );
+ $this->assertEquals( $exResult, $block->mReason, 'Correct block type for XFF header ' . $xff );