These tests are all making two assumptions: - That the sysop test account exists - That its name is UTSysop Both assumptions happen to be true right now, but the first one will no longer be after change I30861742. The second one will probably remain true for a while, but still, tests shouldn't rely on this implementation detail when possible. If a test needs an exiting test user, it should call getTestUser / getTestSysop. Use mocks or different usernames where the user actually doesn't matter, e.g. in non-Database tests where UTSysop already doesn't exist. Bug: T342428 Change-Id: Ie77e72f5a5ee6a2ef4ec9dceaa9044bb690f68b2
98 lines
3 KiB
PHP
98 lines
3 KiB
PHP
<?php
|
|
|
|
namespace MediaWiki\Auth;
|
|
|
|
use MediaWiki\MainConfigNames;
|
|
|
|
/**
|
|
* @group AuthManager
|
|
* @covers \MediaWiki\Auth\TemporaryPasswordAuthenticationRequest
|
|
*/
|
|
class TemporaryPasswordAuthenticationRequestTest extends AuthenticationRequestTestCase {
|
|
|
|
protected function getInstance( array $args = [] ) {
|
|
$ret = new TemporaryPasswordAuthenticationRequest;
|
|
$ret->action = $args[0];
|
|
return $ret;
|
|
}
|
|
|
|
public static function provideGetFieldInfo() {
|
|
return [
|
|
[ [ AuthManager::ACTION_CREATE ] ],
|
|
[ [ AuthManager::ACTION_CHANGE ] ],
|
|
[ [ AuthManager::ACTION_REMOVE ] ],
|
|
];
|
|
}
|
|
|
|
public function testNewRandom() {
|
|
global $wgPasswordPolicy;
|
|
|
|
$policy = $wgPasswordPolicy;
|
|
unset( $policy['policies'] );
|
|
$policy['policies']['default'] = [
|
|
'MinimalPasswordLength' => 1,
|
|
'MinimumPasswordLengthToLogin' => 1,
|
|
];
|
|
|
|
$this->overrideConfigValues( [
|
|
MainConfigNames::MinimalPasswordLength => 10,
|
|
MainConfigNames::PasswordPolicy => $policy,
|
|
] );
|
|
|
|
$ret1 = TemporaryPasswordAuthenticationRequest::newRandom();
|
|
$ret2 = TemporaryPasswordAuthenticationRequest::newRandom();
|
|
$this->assertEquals( 10, strlen( $ret1->password ) );
|
|
$this->assertEquals( 10, strlen( $ret2->password ) );
|
|
$this->assertNotSame( $ret1->password, $ret2->password );
|
|
|
|
$policy['policies']['default']['MinimalPasswordLength'] = 15;
|
|
$this->overrideConfigValue( MainConfigNames::PasswordPolicy, $policy );
|
|
$ret = TemporaryPasswordAuthenticationRequest::newRandom();
|
|
$this->assertEquals( 15, strlen( $ret->password ) );
|
|
|
|
$policy['policies']['default']['MinimalPasswordLength'] = [ 'value' => 20 ];
|
|
$this->overrideConfigValue( MainConfigNames::PasswordPolicy, $policy );
|
|
$ret = TemporaryPasswordAuthenticationRequest::newRandom();
|
|
$this->assertEquals( 20, strlen( $ret->password ) );
|
|
}
|
|
|
|
public function testNewInvalid() {
|
|
$ret = TemporaryPasswordAuthenticationRequest::newInvalid();
|
|
$this->assertNull( $ret->password );
|
|
}
|
|
|
|
public static function provideLoadFromSubmission() {
|
|
return [
|
|
'Empty request' => [
|
|
[ AuthManager::ACTION_REMOVE ],
|
|
[],
|
|
false,
|
|
],
|
|
'Create, empty request' => [
|
|
[ AuthManager::ACTION_CREATE ],
|
|
[],
|
|
false,
|
|
],
|
|
'Create, mailpassword set' => [
|
|
[ AuthManager::ACTION_CREATE ],
|
|
[ 'mailpassword' => 1 ],
|
|
[ 'mailpassword' => true, 'action' => AuthManager::ACTION_CREATE ],
|
|
],
|
|
];
|
|
}
|
|
|
|
public function testDescribeCredentials() {
|
|
$username = 'TestDescribeCredentials';
|
|
$req = new TemporaryPasswordAuthenticationRequest;
|
|
$req->action = AuthManager::ACTION_LOGIN;
|
|
$req->username = $username;
|
|
$ret = $req->describeCredentials();
|
|
$this->assertIsArray( $ret );
|
|
$this->assertArrayHasKey( 'provider', $ret );
|
|
$this->assertInstanceOf( \Message::class, $ret['provider'] );
|
|
$this->assertSame( 'authmanager-provider-temporarypassword', $ret['provider']->getKey() );
|
|
$this->assertArrayHasKey( 'account', $ret );
|
|
$this->assertInstanceOf( \Message::class, $ret['account'] );
|
|
$this->assertSame( [ $username ], $ret['account']->getParams() );
|
|
}
|
|
}
|