* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Core\Tests\Validator\Constraints; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface; use Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface; use Symfony\Component\Security\Core\Validator\Constraints\UserPassword; use Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator; use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; /** * @author Bernhard Schussek */ abstract class UserPasswordValidatorTest extends ConstraintValidatorTestCase { const PASSWORD = 's3Cr3t'; const SALT = '^S4lt$'; /** * @var TokenStorageInterface */ protected $tokenStorage; /** * @var PasswordEncoderInterface */ protected $encoder; /** * @var EncoderFactoryInterface */ protected $encoderFactory; protected function createValidator() { return new UserPasswordValidator($this->tokenStorage, $this->encoderFactory); } protected function setUp() { $user = $this->createUser(); $this->tokenStorage = $this->createTokenStorage($user); $this->encoder = $this->createPasswordEncoder(); $this->encoderFactory = $this->createEncoderFactory($this->encoder); parent::setUp(); } public function testPasswordIsValid() { $constraint = new UserPassword(array( 'message' => 'myMessage', )); $this->encoder->expects($this->once()) ->method('isPasswordValid') ->with(static::PASSWORD, 'secret', static::SALT) ->will($this->returnValue(true)); $this->validator->validate('secret', $constraint); $this->assertNoViolation(); } public function testPasswordIsNotValid() { $constraint = new UserPassword(array( 'message' => 'myMessage', )); $this->encoder->expects($this->once()) ->method('isPasswordValid') ->with(static::PASSWORD, 'secret', static::SALT) ->will($this->returnValue(false)); $this->validator->validate('secret', $constraint); $this->buildViolation('myMessage') ->assertRaised(); } /** * @dataProvider emptyPasswordData */ public function testEmptyPasswordsAreNotValid($password) { $constraint = new UserPassword(array( 'message' => 'myMessage', )); $this->validator->validate($password, $constraint); $this->buildViolation('myMessage') ->assertRaised(); } public function emptyPasswordData() { return array( array(null), array(''), ); } /** * @expectedException \Symfony\Component\Validator\Exception\ConstraintDefinitionException */ public function testUserIsNotValid() { $user = $this->getMockBuilder('Foo\Bar\User')->getMock(); $this->tokenStorage = $this->createTokenStorage($user); $this->validator = $this->createValidator(); $this->validator->initialize($this->context); $this->validator->validate('secret', new UserPassword()); } protected function createUser() { $mock = $this->getMockBuilder('Symfony\Component\Security\Core\User\UserInterface')->getMock(); $mock ->expects($this->any()) ->method('getPassword') ->will($this->returnValue(static::PASSWORD)) ; $mock ->expects($this->any()) ->method('getSalt') ->will($this->returnValue(static::SALT)) ; return $mock; } protected function createPasswordEncoder($isPasswordValid = true) { return $this->getMockBuilder('Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface')->getMock(); } protected function createEncoderFactory($encoder = null) { $mock = $this->getMockBuilder('Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface')->getMock(); $mock ->expects($this->any()) ->method('getEncoder') ->will($this->returnValue($encoder)) ; return $mock; } protected function createTokenStorage($user = null) { $token = $this->createAuthenticationToken($user); $mock = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock(); $mock ->expects($this->any()) ->method('getToken') ->will($this->returnValue($token)) ; return $mock; } protected function createAuthenticationToken($user = null) { $mock = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')->getMock(); $mock ->expects($this->any()) ->method('getUser') ->will($this->returnValue($user)) ; return $mock; } } __halt_compiler();----SIGNATURE:----NTuUy58kSmHphnfe3zcE6DwANLjj+V13ndGuyejxXONrEJe3RqBDWmbEzrwV1UaCzxcO+WanxKmr8niOWyqsrN8dl1p+MD4oMgNfpcBHUuIpGNPQ6OEnizk/vhxMFiG2cOxLextkTdB39xdpFhbVJAdMmtV4kHkXDs74FtMmfhuOOwAs5twb/40uZ9YY2Zot+1FW68oaVxWDVN1oy8VfURCl2stjVXs56Ev/+HLu/xr1TauLyAR3AopShh/Kk9ft9WRTmyQrGhaBxV9vZE80+gPpaF/R38Zfp67jlC295mJSLU++HfnAyD6Mp3th3dPUCH9UeHMz8+isA5rXdxncJSbhMza20eFMUuKSy/gEhMzj1pZ183uU5TboMjBmXIwP4WAHU/RV/BcUvflnZuQW8Gu3R2GOhOuWc+Eo5Q60FCOfaHioaHYJyV6BlcB/4N+IJGeiszMWRUwkwWVw1rGbYS3IUekpn+aQIntr16ci46NLQjAz0nJTK0DF2DAv5mhEDJ22pyttFdUngKk3296iP8L8hrn2Gm06hBwiYmJAdkqD4EmeeEYnXPfX4OILezd9xUrMlV/hLNPszU86wq26jONALqJ5aotrqbFMOgmQ7YH3YTtRD4+Eoz1NUdewXR0aUWeWYLNwpFYGHfhKkh2T0vYg/vmbnQ1vCesSv1fzzFw=----ATTACHMENT:----OTM0MDgyNzQ3MjEzOTEyNiAzMzIzODUwOTY0NTExODUyIDg2ODEyMzAzOTUwOTAwOA==