createMock(\Config::class); $configMock ->method('GetModuleSetting') ->willReturnMap($aValueMap); /** @var UserLocal $oUserLocal */ $oUserLocal = \MetaModel::NewObject('UserLocal', array('login' => 'john')); /** @var \ormLinkSet $oProfileSet */ $oProfileSet = $oUserLocal->Get('profile_list'); $oProfileSet->AddItem( \MetaModel::NewObject('URP_UserProfile', array('profileid' => 1)) ); $oUserLocal->ValidatePassword($sPassword, $configMock); list($bCheckStatus, $aCheckIssues, $aSecurityIssues) = $oUserLocal->CheckToWrite(); $this->assertSame($bExpectedCheckStatus, $bCheckStatus); if (isset($expectedCheckIssues)) { $this->assertContains($expectedCheckIssues, $aCheckIssues); } } public function ProviderValidatePassword() { return array( 'validPattern' => array( 'valueMap' => array( array('authent-local', 'password_validation.pattern', null, '.{1,10}') ), 'password' => 'foo', 'expectedCheckStatus' => true, ), 'notValidPattern' => array( 'valueMap' => array( array('authent-local', 'password_validation.pattern', null, '.{6,10}') ), 'password' => 'foo', 'expectedCheckStatus' => false, ), 'validClass' => array( 'valueMap' => array( array( 'authent-local', 'password_validation.classes', null, array( 'UserLocalPasswordPolicyMock' => array( 'bCheckStatus' => true, ) ) ) ), 'password' => 'foo', 'expectedCheckStatus' => true, ), 'notValidClass' => array( 'valueMap' => array( array( 'authent-local', 'password_validation.classes', null, array( 'UserLocalPasswordPolicyMock' => array( 'bCheckStatus' => false, ) ) ) ), 'password' => 'foo', 'expectedCheckStatus' => false, ), 'UserPasswordPolicyRegex_configured_twice' => array( 'valueMap' => array( array('authent-local', 'password_validation.pattern', null, '.*'), array( 'authent-local', 'password_validation.classes', null, array( 'UserPasswordPolicyRegex' => array( 'pattern' => '.*', ) ) ) ), 'password' => 'foo', 'expectedCheckStatus' => false, 'expectedCheckIssues' => 'Invalid configuration: \'UserPasswordPolicyRegex\' was defined twice (once into UserLocal.password_validation_advanced, once into UserLocal.password_validation).', ), 'classNotImplementsUserLocalPasswordValidator' => array( 'valueMap' => array( array( 'authent-local', 'password_validation.classes', null, array( 'StdClass' => array() ) ) ), 'password' => 'foo', 'expectedCheckStatus' => false, 'expectedCheckIssues' => 'Invalid configuration: \'StdClass\' must implements UserLocalPasswordValidator', ), 'validation_composition_10' => array( 'valueMap' => array( array( 'authent-local', 'password_validation.classes', null, array( 'UserLocalPasswordPolicyMock' => array( 'bCheckStatus' => true, 'sCheckIssues' => 'UserLocalPasswordPolicyMock', ), 'UserLocalPasswordPolicyMockBis' => array( 'bCheckStatus' => false, 'sCheckIssues' => 'UserLocalPasswordPolicyMockBis', ), ) ) ), 'password' => 'foo', 'expectedCheckStatus' => false, 'expectedCheckIssues' => 'UserLocalPasswordPolicyMockBis', ), 'validation_composition_01' => array( 'valueMap' => array( array( 'authent-local', 'password_validation.classes', null, array( 'UserLocalPasswordPolicyMock' => array( 'bCheckStatus' => false, 'sCheckIssues' => 'UserLocalPasswordPolicyMock', ), 'UserLocalPasswordPolicyMockBis' => array( 'bCheckStatus' => true, 'sCheckIssues' => 'UserLocalPasswordPolicyMockBis', ), ) ) ), 'password' => 'foo', 'expectedCheckStatus' => false, 'expectedCheckIssues' => 'UserLocalPasswordPolicyMock', ), 'validation_composition_11' => array( 'valueMap' => array( array( 'authent-local', 'password_validation.classes', null, array( 'UserLocalPasswordPolicyMock' => array( 'bCheckStatus' => true, 'sCheckIssues' => 'UserLocalPasswordPolicyMock', ), 'UserLocalPasswordPolicyMockBis' => array( 'bCheckStatus' => true, 'sCheckIssues' => 'UserLocalPasswordPolicyMockBis', ), ) ) ), 'password' => 'foo', 'expectedCheckStatus' => true, ), 'validation_composition_00' => array( 'valueMap' => array( array( 'authent-local', 'password_validation.classes', null, array( 'UserLocalPasswordPolicyMock' => array( 'bCheckStatus' => false, 'sCheckIssues' => 'UserLocalPasswordPolicyMock', ), 'UserLocalPasswordPolicyMockBis' => array( 'bCheckStatus' => false, 'sCheckIssues' => 'UserLocalPasswordPolicyMockBis', ), ) ) ), 'password' => 'foo', 'expectedCheckStatus' => false, 'expectedCheckIssues' => 'UserLocalPasswordPolicyMock', ), ); } }