diff options
author | DannyS712 <DannyS712.enwiki@gmail.com> | 2021-01-21 02:46:03 +0000 |
---|---|---|
committer | DannyS712 <dannys712.wiki@gmail.com> | 2021-08-05 05:43:54 +0000 |
commit | b93f81b07113dbabaf2092c84e6b708b9250fe69 (patch) | |
tree | afba04b405d3edd4a8aa963ad514f2577a73273a /tests/phpunit/includes/ReadOnlyModeTest.php | |
parent | de91a0db45eaf31b57873b9d22aceaaa3d1be09a (diff) | |
download | mediawikicore-b93f81b07113dbabaf2092c84e6b708b9250fe69.tar.gz mediawikicore-b93f81b07113dbabaf2092c84e6b708b9250fe69.zip |
Make ReadOnlyModeTest a pure unit test
Only needed MediaWikiIntegrationTestCase for the handling
of temporary files, but its acceptable to create and manipulate
files in unit tests too.
Change-Id: I3b2bac837c943f1210cc1b804f1afbbb3ecab0f3
Diffstat (limited to 'tests/phpunit/includes/ReadOnlyModeTest.php')
-rw-r--r-- | tests/phpunit/includes/ReadOnlyModeTest.php | 165 |
1 files changed, 0 insertions, 165 deletions
diff --git a/tests/phpunit/includes/ReadOnlyModeTest.php b/tests/phpunit/includes/ReadOnlyModeTest.php deleted file mode 100644 index 4188e7a14d03..000000000000 --- a/tests/phpunit/includes/ReadOnlyModeTest.php +++ /dev/null @@ -1,165 +0,0 @@ -<?php - -/** - * @group Database - * - * @covers ReadOnlyMode - * @covers ConfiguredReadOnlyMode - */ -class ReadOnlyModeTest extends MediaWikiIntegrationTestCase { - public function provider() { - $rawTests = [ - 'None of anything' => [ - 'confMessage' => null, - 'hasFileName' => false, - 'fileContents' => false, - 'lbMessage' => false, - 'expectedState' => false, - 'expectedMessage' => false, - 'expectedConfState' => false, - 'expectedConfMessage' => false - ], - 'File missing' => [ - 'confMessage' => null, - 'hasFileName' => true, - 'fileContents' => false, - 'lbMessage' => false, - 'expectedState' => false, - 'expectedMessage' => false, - 'expectedConfState' => false, - 'expectedConfMessage' => false - ], - 'File empty' => [ - 'confMessage' => null, - 'hasFileName' => true, - 'fileContents' => '', - 'lbMessage' => false, - 'expectedState' => false, - 'expectedMessage' => false, - 'expectedConfState' => false, - 'expectedConfMessage' => false - ], - 'File has message' => [ - 'confMessage' => null, - 'hasFileName' => true, - 'fileContents' => 'Message', - 'lbMessage' => false, - 'expectedState' => true, - 'expectedMessage' => 'Message', - 'expectedConfState' => true, - 'expectedConfMessage' => 'Message', - ], - 'Conf has message' => [ - 'confMessage' => 'Message', - 'hasFileName' => false, - 'fileContents' => false, - 'lbMessage' => false, - 'expectedState' => true, - 'expectedMessage' => 'Message', - 'expectedConfState' => true, - 'expectedConfMessage' => 'Message' - ], - "Conf=false means don't check the file" => [ - 'confMessage' => false, - 'hasFileName' => true, - 'fileContents' => 'Message', - 'lbMessage' => false, - 'expectedState' => false, - 'expectedMessage' => false, - 'expectedConfState' => false, - 'expectedConfMessage' => false, - ], - 'LB has message' => [ - 'confMessage' => null, - 'hasFileName' => false, - 'fileContents' => false, - 'lbMessage' => 'Message', - 'expectedState' => true, - 'expectedMessage' => 'Message', - 'expectedConfState' => false, - 'expectedConfMessage' => false - ], - 'All three have a message: conf wins' => [ - 'confMessage' => 'conf', - 'hasFileName' => true, - 'fileContents' => 'file', - 'lbMessage' => 'lb', - 'expectedState' => true, - 'expectedMessage' => 'conf', - 'expectedConfState' => true, - 'expectedConfMessage' => 'conf' - ] - ]; - $cookedTests = []; - foreach ( $rawTests as $desc => $test ) { - $cookedTests[$desc] = [ $test ]; - } - return $cookedTests; - } - - private function createMode( $params, $makeLB ) { - $rom = new ConfiguredReadOnlyMode( $params['confMessage'], $this->createFile( $params ) ); - - if ( $makeLB ) { - $lb = $this->createLB( $params ); - $rom = new ReadOnlyMode( $rom, $lb ); - } - - return $rom; - } - - private function createLB( $params ) { - $lb = $this->getMockBuilder( \Wikimedia\Rdbms\LoadBalancer::class ) - ->disableOriginalConstructor() - ->getMock(); - $lb->method( 'getReadOnlyReason' ) - ->willReturn( $params['lbMessage'] ); - return $lb; - } - - private function createFile( $params ) { - if ( $params['hasFileName'] ) { - $fileName = $this->getNewTempFile(); - - if ( $params['fileContents'] === false ) { - unlink( $fileName ); - } else { - file_put_contents( $fileName, $params['fileContents'] ); - } - } else { - $fileName = null; - } - return $fileName; - } - - /** - * @dataProvider provider - */ - public function testWithLB( $params ) { - $rom = $this->createMode( $params, true ); - $this->assertSame( $params['expectedMessage'], $rom->getReason() ); - $this->assertSame( $params['expectedState'], $rom->isReadOnly() ); - } - - /** - * @dataProvider provider - */ - public function testWithoutLB( $params ) { - $cro = $this->createMode( $params, false ); - $this->assertSame( $params['expectedConfMessage'], $cro->getReason() ); - $this->assertSame( $params['expectedConfState'], $cro->isReadOnly() ); - } - - public function testSetReadOnlyReason() { - $rom = $this->createMode( - [ - 'confMessage' => 'conf', - 'hasFileName' => false, - 'fileContents' => false, - 'lbMessage' => 'lb' - ], - true ); - $rom->setReason( 'override' ); - $this->assertSame( 'override', $rom->getReason() ); - } -} |