getExistingTestPage(); // Set the options from $options. foreach ( $options as $name => $option ) { $this->maintenance->setOption( $name, $option ); } // Call ::execute $this->maintenance->setArg( 'title', $testPage ); $this->maintenance->execute(); // Verify that the specified protection level has been applied $this->expectOutputString( "Updating protection status..." . "done\n" ); $resultingPageRestrictions = $this->getServiceContainer()->getRestrictionStore() ->getAllRestrictions( $testPage ); foreach ( $resultingPageRestrictions as $restrictions ) { $this->assertContains( $expectedProtectionLevel, $restrictions ); } } public static function provideExecute() { return [ 'Sysop protection' => [ [], 'sysop' ], 'Autoconfirmed protection' => [ [ 'semiprotect' => 1 ], 'autoconfirmed' ], ]; } public function testExecuteWhenReadOnly() { // Get a test page and then add it as an argument to the maintenance script $testPage = $this->getExistingTestPage(); $this->maintenance->setArg( 'title', $testPage ); // Enable read-only mode $this->getServiceContainer()->getReadOnlyMode()->setReason( 'test' ); // Call ::execute $this->maintenance->execute(); // Verify that the updating the protection status failed. $this->expectOutputString( "Updating protection status..." . "failed\n" ); } }