6 use Wikimedia\TestingAccessWrapper;
14 $provider = $this->getMockForAbstractClass(
17 $providerPriv = TestingAccessWrapper::newFromObject( $provider );
18 $this->assertTrue( $providerPriv->authoritative );
20 $provider = $this->getMockForAbstractClass(
22 [ [
'authoritative' =>
false ] ]
24 $providerPriv = TestingAccessWrapper::newFromObject( $provider );
25 $this->assertFalse( $providerPriv->authoritative );
29 $provider = $this->getMockForAbstractClass(
33 $providerPriv = TestingAccessWrapper::newFromObject( $provider );
35 $obj = $providerPriv->getPasswordFactory();
36 $this->assertInstanceOf(
'PasswordFactory', $obj );
37 $this->assertSame( $obj, $providerPriv->getPasswordFactory() );
41 $provider = $this->getMockForAbstractClass(
45 $provider->setLogger(
new \Psr\Log\NullLogger() );
46 $providerPriv = TestingAccessWrapper::newFromObject( $provider );
48 $obj = $providerPriv->getPassword(
null );
49 $this->assertInstanceOf(
'Password', $obj );
51 $obj = $providerPriv->getPassword(
'invalid' );
52 $this->assertInstanceOf(
'Password', $obj );
57 $provider = $this->getMockForAbstractClass(
64 $provider->setLogger(
new \Psr\Log\NullLogger() );
65 $providerPriv = TestingAccessWrapper::newFromObject( $provider );
69 $config->set(
'PasswordExpirationDays', 0 );
70 $this->assertNull( $providerPriv->getNewPasswordExpiry(
'UTSysop' ) );
72 $config->set(
'PasswordExpirationDays', 5 );
75 wfTimestamp( TS_UNIX, $providerPriv->getNewPasswordExpiry(
'UTSysop' ) ),
81 'ResetPasswordExpiration' => [
function (
$user, &$expires ) {
82 $this->assertSame(
'UTSysop',
$user->getName() );
83 $expires =
'30001231235959';
86 $this->assertEquals(
'30001231235959', $providerPriv->getNewPasswordExpiry(
'UTSysop' ) );
93 'wgPasswordPolicy' => [
100 'Check' =>
function ()
use ( &$uppCalled, &$uppStatus ) {
108 $provider = $this->getMockForAbstractClass(
112 $provider->setLogger(
new \Psr\Log\NullLogger() );
113 $providerPriv = TestingAccessWrapper::newFromObject( $provider );
115 $this->assertEquals( $uppStatus, $providerPriv->checkPasswordValidity(
'foo',
'bar' ) );
117 $uppStatus->fatal(
'arbitrary-warning' );
118 $this->assertEquals( $uppStatus, $providerPriv->checkPasswordValidity(
'foo',
'bar' ) );
123 'InvalidPasswordReset' =>
true,
131 $provider = $this->getMockForAbstractClass(
134 $provider->setConfig(
$config );
135 $provider->setLogger(
new \Psr\Log\NullLogger() );
136 $provider->setManager( $manager );
137 $providerPriv = TestingAccessWrapper::newFromObject( $provider );
139 $manager->removeAuthenticationSessionData(
null );
141 $providerPriv->setPasswordResetFlag(
'Foo',
$status );
142 $this->assertNull( $manager->getAuthenticationSessionData(
'reset-pass' ) );
144 $manager->removeAuthenticationSessionData(
null );
147 $providerPriv->setPasswordResetFlag(
'Foo',
$status );
148 $ret = $manager->getAuthenticationSessionData(
'reset-pass' );
149 $this->assertNotNull(
$ret );
150 $this->assertSame(
'resetpass-validity-soft',
$ret->msg->getKey() );
151 $this->assertFalse(
$ret->hard );
153 $config->set(
'InvalidPasswordReset',
false );
154 $manager->removeAuthenticationSessionData(
null );
155 $providerPriv->setPasswordResetFlag(
'Foo',
$status );
156 $ret = $manager->getAuthenticationSessionData(
'reset-pass' );
157 $this->assertNull(
$ret );
161 $provider = $this->getMockForAbstractClass(
163 [ [
'authoritative' =>
false ] ]
165 $providerPriv = TestingAccessWrapper::newFromObject( $provider );
169 $ret = $providerPriv->failResponse(
$req );
172 $provider = $this->getMockForAbstractClass(
174 [ [
'authoritative' =>
true ] ]
176 $providerPriv = TestingAccessWrapper::newFromObject( $provider );
179 $ret = $providerPriv->failResponse(
$req );
181 $this->assertSame(
'wrongpasswordempty',
$ret->message->getKey() );
183 $req->password =
'X';
184 $ret = $providerPriv->failResponse(
$req );
186 $this->assertSame(
'wrongpassword',
$ret->message->getKey() );
195 $provider = $this->getMockForAbstractClass(
199 $this->assertEquals(
$response, $provider->getAuthenticationRequests(
$action, [] ) );
215 $req->username =
'foo';
216 $req->password =
null;
218 $provider = $this->getMockForAbstractClass(
221 $provider->expects( $this->once() )
222 ->method(
'providerChangeAuthenticationData' )
223 ->with( $this->equalTo(
$req ) );
225 $provider->providerRevokeAccessForUser(
'foo' );