aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/includes/ReadOnlyModeTest.php
diff options
context:
space:
mode:
authorDannyS712 <DannyS712.enwiki@gmail.com>2021-01-21 02:46:03 +0000
committerDannyS712 <dannys712.wiki@gmail.com>2021-08-05 05:43:54 +0000
commitb93f81b07113dbabaf2092c84e6b708b9250fe69 (patch)
treeafba04b405d3edd4a8aa963ad514f2577a73273a /tests/phpunit/includes/ReadOnlyModeTest.php
parentde91a0db45eaf31b57873b9d22aceaaa3d1be09a (diff)
downloadmediawikicore-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.php165
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() );
- }
-}