1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
<?php
namespace MediaWiki\Tests\Unit\User\TempUser;
use BadMethodCallException;
use MediaWiki\Tests\MockDatabase;
use MediaWiki\User\TempUser\RealTempUserConfig;
use MediaWikiUnitTestCase;
use Wikimedia\Rdbms\IExpression;
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' ],
];
}
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 );
}
/** @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 ],
];
}
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' ],
'genPattern' => '~$1',
'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' ) );
}
}
|