2024-01-10 23:40:27 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace MediaWiki\Tests\Unit\User\TempUser;
|
|
|
|
|
|
|
|
|
|
use BadMethodCallException;
|
2024-03-01 23:31:21 +00:00
|
|
|
use MediaWiki\Tests\MockDatabase;
|
2024-01-10 23:40:27 +00:00
|
|
|
use MediaWiki\User\TempUser\RealTempUserConfig;
|
|
|
|
|
use MediaWikiUnitTestCase;
|
2024-03-01 23:31:21 +00:00
|
|
|
use Wikimedia\Rdbms\IExpression;
|
2024-01-10 23:40:27 +00:00
|
|
|
use Wikimedia\TestingAccessWrapper;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @covers \MediaWiki\User\TempUser\RealTempUserConfig
|
|
|
|
|
*/
|
|
|
|
|
class RealTempUserConfigTest extends MediaWikiUnitTestCase {
|
|
|
|
|
|
|
|
|
|
/** @dataProvider provideMethodsThatThrowWhenTempUsersAreDisabled */
|
|
|
|
|
public function testMethodsThatThrowWhenTempUsersAreDisabled( $methodName ) {
|
|
|
|
|
$this->expectException( BadMethodCallException::class );
|
|
|
|
|
$objectUnderTest = $this->getMockBuilder( RealTempUserConfig::class )
|
|
|
|
|
->onlyMethods( [ 'isEnabled' ] )
|
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
|
->getMock();
|
|
|
|
|
// Simulate that the AutoCreateTempUser config has 'enabled' as false.
|
|
|
|
|
$objectUnderTest->method( 'isEnabled' )
|
|
|
|
|
->willReturn( false );
|
|
|
|
|
$objectUnderTest->$methodName();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function provideMethodsThatThrowWhenTempUsersAreDisabled() {
|
|
|
|
|
return [
|
|
|
|
|
'getPlaceholderName' => [ 'getPlaceholderName' ],
|
|
|
|
|
'getMatchPatterns' => [ 'getMatchPatterns' ],
|
|
|
|
|
'getGeneratorPattern' => [ 'getGeneratorPattern' ],
|
|
|
|
|
];
|
|
|
|
|
}
|
|
|
|
|
|
2024-03-01 23:31:21 +00:00
|
|
|
public function testGetMatchConditionThrowsWhenTempUsersAreDisabled() {
|
|
|
|
|
$this->expectException( BadMethodCallException::class );
|
|
|
|
|
$objectUnderTest = $this->getMockBuilder( RealTempUserConfig::class )
|
|
|
|
|
->onlyMethods( [ 'isEnabled' ] )
|
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
|
->getMock();
|
|
|
|
|
// Simulate that the AutoCreateTempUser config has 'enabled' as false.
|
|
|
|
|
$objectUnderTest->method( 'isEnabled' )
|
|
|
|
|
->willReturn( false );
|
|
|
|
|
$objectUnderTest->getMatchCondition( new MockDatabase, 'foo', IExpression::LIKE );
|
|
|
|
|
}
|
|
|
|
|
|
2024-01-10 23:40:27 +00:00
|
|
|
/** @dataProvider provideIsEnabled */
|
|
|
|
|
public function testIsEnabled( $enabledValue ) {
|
|
|
|
|
// Get the object under test with the constructor disabled.
|
|
|
|
|
$objectUnderTest = $this->getMockBuilder( RealTempUserConfig::class )
|
|
|
|
|
->onlyMethods( [] )
|
|
|
|
|
->disableOriginalConstructor()
|
|
|
|
|
->getMock();
|
|
|
|
|
// Set $objectUnderTest->enabled to $enabledValue
|
|
|
|
|
$objectUnderTest = TestingAccessWrapper::newFromObject( $objectUnderTest );
|
|
|
|
|
$objectUnderTest->enabled = $enabledValue;
|
|
|
|
|
$this->assertSame( $enabledValue, $objectUnderTest->isEnabled() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static function provideIsEnabled() {
|
|
|
|
|
return [
|
|
|
|
|
'Auto creation is enabled' => [ true ],
|
|
|
|
|
'Auto creation is disabled' => [ false ],
|
|
|
|
|
];
|
|
|
|
|
}
|
2024-06-07 12:15:56 +00:00
|
|
|
|
|
|
|
|
public function testIsKnownWhenEnabledIsTrue() {
|
|
|
|
|
$realTempUserConfig = new RealTempUserConfig( [
|
|
|
|
|
'enabled' => true,
|
|
|
|
|
'actions' => [ 'edit' ],
|
|
|
|
|
'genPattern' => '',
|
|
|
|
|
'serialProvider' => '',
|
|
|
|
|
'serialMapping' => '',
|
|
|
|
|
'known' => false,
|
|
|
|
|
] );
|
|
|
|
|
$this->assertTrue( $realTempUserConfig->isKnown() );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testIsTempNameWhenKnownIsTrueAndEnabledIsFalse() {
|
|
|
|
|
$realTempUserConfig = new RealTempUserConfig( [
|
|
|
|
|
'enabled' => false,
|
|
|
|
|
'known' => true,
|
|
|
|
|
'actions' => [ 'edit' ],
|
2024-07-19 14:00:44 +00:00
|
|
|
'genPattern' => '~$1',
|
2024-06-07 12:15:56 +00:00
|
|
|
'serialProvider' => '',
|
|
|
|
|
'serialMapping' => '',
|
|
|
|
|
] );
|
|
|
|
|
$this->assertTrue( $realTempUserConfig->isTempName( '~2024-foo' ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testIsTempNameWhenKnownIsFalseAndEnabledIsFalse() {
|
|
|
|
|
$realTempUserConfig = new RealTempUserConfig( [
|
|
|
|
|
'enabled' => false,
|
|
|
|
|
'known' => false,
|
|
|
|
|
'actions' => [ 'edit' ],
|
|
|
|
|
'genPattern' => '',
|
|
|
|
|
'serialProvider' => '',
|
|
|
|
|
'serialMapping' => '',
|
|
|
|
|
'matchPattern' => [ '~$1' ],
|
|
|
|
|
] );
|
|
|
|
|
$this->assertFalse( $realTempUserConfig->isTempName( '~2024-foo' ) );
|
|
|
|
|
}
|
2024-01-10 23:40:27 +00:00
|
|
|
}
|