* * 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\Encoder; use PHPUnit\Framework\TestCase; use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder; use Symfony\Component\Security\Core\Encoder\EncoderFactory; use Symfony\Component\Security\Core\Encoder\EncoderAwareInterface; use Symfony\Component\Security\Core\User\User; use Symfony\Component\Security\Core\User\UserInterface; class EncoderFactoryTest extends TestCase { public function testGetEncoderWithMessageDigestEncoder() { $factory = new EncoderFactory(array('Symfony\Component\Security\Core\User\UserInterface' => array( 'class' => 'Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder', 'arguments' => array('sha512', true, 5), ))); $encoder = $factory->getEncoder($this->getMockBuilder('Symfony\Component\Security\Core\User\UserInterface')->getMock()); $expectedEncoder = new MessageDigestPasswordEncoder('sha512', true, 5); $this->assertEquals($expectedEncoder->encodePassword('foo', 'moo'), $encoder->encodePassword('foo', 'moo')); } public function testGetEncoderWithService() { $factory = new EncoderFactory(array( 'Symfony\Component\Security\Core\User\UserInterface' => new MessageDigestPasswordEncoder('sha1'), )); $encoder = $factory->getEncoder($this->getMockBuilder('Symfony\Component\Security\Core\User\UserInterface')->getMock()); $expectedEncoder = new MessageDigestPasswordEncoder('sha1'); $this->assertEquals($expectedEncoder->encodePassword('foo', ''), $encoder->encodePassword('foo', '')); $encoder = $factory->getEncoder(new User('user', 'pass')); $expectedEncoder = new MessageDigestPasswordEncoder('sha1'); $this->assertEquals($expectedEncoder->encodePassword('foo', ''), $encoder->encodePassword('foo', '')); } public function testGetEncoderWithClassName() { $factory = new EncoderFactory(array( 'Symfony\Component\Security\Core\User\UserInterface' => new MessageDigestPasswordEncoder('sha1'), )); $encoder = $factory->getEncoder('Symfony\Component\Security\Core\Tests\Encoder\SomeChildUser'); $expectedEncoder = new MessageDigestPasswordEncoder('sha1'); $this->assertEquals($expectedEncoder->encodePassword('foo', ''), $encoder->encodePassword('foo', '')); } public function testGetEncoderConfiguredForConcreteClassWithService() { $factory = new EncoderFactory(array( 'Symfony\Component\Security\Core\User\User' => new MessageDigestPasswordEncoder('sha1'), )); $encoder = $factory->getEncoder(new User('user', 'pass')); $expectedEncoder = new MessageDigestPasswordEncoder('sha1'); $this->assertEquals($expectedEncoder->encodePassword('foo', ''), $encoder->encodePassword('foo', '')); } public function testGetEncoderConfiguredForConcreteClassWithClassName() { $factory = new EncoderFactory(array( 'Symfony\Component\Security\Core\Tests\Encoder\SomeUser' => new MessageDigestPasswordEncoder('sha1'), )); $encoder = $factory->getEncoder('Symfony\Component\Security\Core\Tests\Encoder\SomeChildUser'); $expectedEncoder = new MessageDigestPasswordEncoder('sha1'); $this->assertEquals($expectedEncoder->encodePassword('foo', ''), $encoder->encodePassword('foo', '')); } public function testGetNamedEncoderForEncoderAware() { $factory = new EncoderFactory(array( 'Symfony\Component\Security\Core\Tests\Encoder\EncAwareUser' => new MessageDigestPasswordEncoder('sha256'), 'encoder_name' => new MessageDigestPasswordEncoder('sha1'), )); $encoder = $factory->getEncoder(new EncAwareUser('user', 'pass')); $expectedEncoder = new MessageDigestPasswordEncoder('sha1'); $this->assertEquals($expectedEncoder->encodePassword('foo', ''), $encoder->encodePassword('foo', '')); } public function testGetNullNamedEncoderForEncoderAware() { $factory = new EncoderFactory(array( 'Symfony\Component\Security\Core\Tests\Encoder\EncAwareUser' => new MessageDigestPasswordEncoder('sha1'), 'encoder_name' => new MessageDigestPasswordEncoder('sha256'), )); $user = new EncAwareUser('user', 'pass'); $user->encoderName = null; $encoder = $factory->getEncoder($user); $expectedEncoder = new MessageDigestPasswordEncoder('sha1'); $this->assertEquals($expectedEncoder->encodePassword('foo', ''), $encoder->encodePassword('foo', '')); } /** * @expectedException \RuntimeException */ public function testGetInvalidNamedEncoderForEncoderAware() { $factory = new EncoderFactory(array( 'Symfony\Component\Security\Core\Tests\Encoder\EncAwareUser' => new MessageDigestPasswordEncoder('sha1'), 'encoder_name' => new MessageDigestPasswordEncoder('sha256'), )); $user = new EncAwareUser('user', 'pass'); $user->encoderName = 'invalid_encoder_name'; $encoder = $factory->getEncoder($user); } public function testGetEncoderForEncoderAwareWithClassName() { $factory = new EncoderFactory(array( 'Symfony\Component\Security\Core\Tests\Encoder\EncAwareUser' => new MessageDigestPasswordEncoder('sha1'), 'encoder_name' => new MessageDigestPasswordEncoder('sha256'), )); $encoder = $factory->getEncoder('Symfony\Component\Security\Core\Tests\Encoder\EncAwareUser'); $expectedEncoder = new MessageDigestPasswordEncoder('sha1'); $this->assertEquals($expectedEncoder->encodePassword('foo', ''), $encoder->encodePassword('foo', '')); } } class SomeUser implements UserInterface { public function getRoles() { } public function getPassword() { } public function getSalt() { } public function getUsername() { } public function eraseCredentials() { } } class SomeChildUser extends SomeUser { } class EncAwareUser extends SomeUser implements EncoderAwareInterface { public $encoderName = 'encoder_name'; public function getEncoderName() { return $this->encoderName; } } __halt_compiler();----SIGNATURE:----Z+kE3Lrfk1ILvfJC7b7yLIYjOKVww1HqaG5WRxz/psCXM5/otzo4giK8gOpuAhzKNQ/2pbzVBiUtvYojFP9kPNkmeWHheGR+B+PhKrdbEmB33gASpAjgs7nSXpzusBl7i+kLpWHcUqYt5yWg+UtoShF3ugu/nYYR4BnfilEANX4N5+XMJ6+0S1r24JEcALx7xgqztXBZ3SjKR84C/F1evmHFMXcGfpiDp9NFZ1RFT16y2zyAousiWN7fTJuA1Lsyp1zwX/yQhTrp5frnNDZdZE6GdSX7yvRmL1B/gKxHChTFYD2+dN0rtNqyYxn9jgxoPpySowE4wEtSdoPEE1RO21mRvIbkqho734cxigxB3XtUz30jLHwA+OzBXAJ2zcktVVCXZ7N6soNj/uAp1dWFaEFM3Rx2QFeYY7lJ/GbxS64Ljfknsd4TPNjNyXC7eqCix9EQ36iCnb9HZhhy2ZhMv76B2wL7s9DhS5Y3WsoA0e2prNafWosKcsp4i9FxUc1h4NBJMDyBCRA6SxYWkkeRM09PgbO54xvJAM/93KUGZMdEUZjfF5MDPosA4J2JoohPqJ+zROnjwa49Rhdeqpfu7015StxUKPNvusTvt/+s0LYpoA7B0Wnk+QKyb/6T1i+9IwfaGumkaeQ53UUa+aCtW6blr8OX5MBbyX/NqrM+lZk=----ATTACHMENT:----NTQ1OTY5OTUyMzk5MzMxNyAyNjI2MTM2ODY5OTU3MTQ1IDUyMTAxNDI1NDkwODU1MzE=