Файл: symfony-2.7/src/Symfony/Component/Security/Core/Tests/Encoder/EncoderFactoryTest.php
Строк: 322
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace SymfonyComponentSecurityCoreTestsEncoder;
use SymfonyComponentSecurityCoreEncoderMessageDigestPasswordEncoder;
use SymfonyComponentSecurityCoreEncoderEncoderFactory;
use SymfonyComponentSecurityCoreEncoderEncoderAwareInterface;
use SymfonyComponentSecurityCoreUserUser;
use SymfonyComponentSecurityCoreUserUserInterface;
class EncoderFactoryTest extends PHPUnit_Framework_TestCase
{
public function testGetEncoderWithMessageDigestEncoder()
{
$factory = new EncoderFactory(array('SymfonyComponentSecurityCoreUserUserInterface' => array(
'class' => 'SymfonyComponentSecurityCoreEncoderMessageDigestPasswordEncoder',
'arguments' => array('sha512', true, 5),
)));
$encoder = $factory->getEncoder($this->getMock('SymfonyComponentSecurityCoreUserUserInterface'));
$expectedEncoder = new MessageDigestPasswordEncoder('sha512', true, 5);
$this->assertEquals($expectedEncoder->encodePassword('foo', 'moo'), $encoder->encodePassword('foo', 'moo'));
}
public function testGetEncoderWithService()
{
$factory = new EncoderFactory(array(
'SymfonyComponentSecurityCoreUserUserInterface' => new MessageDigestPasswordEncoder('sha1'),
));
$encoder = $factory->getEncoder($this->getMock('SymfonyComponentSecurityCoreUserUserInterface'));
$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(
'SymfonyComponentSecurityCoreUserUserInterface' => new MessageDigestPasswordEncoder('sha1'),
));
$encoder = $factory->getEncoder('SymfonyComponentSecurityCoreTestsEncoderSomeChildUser');
$expectedEncoder = new MessageDigestPasswordEncoder('sha1');
$this->assertEquals($expectedEncoder->encodePassword('foo', ''), $encoder->encodePassword('foo', ''));
}
public function testGetEncoderConfiguredForConcreteClassWithService()
{
$factory = new EncoderFactory(array(
'SymfonyComponentSecurityCoreUserUser' => 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(
'SymfonyComponentSecurityCoreTestsEncoderSomeUser' => new MessageDigestPasswordEncoder('sha1'),
));
$encoder = $factory->getEncoder('SymfonyComponentSecurityCoreTestsEncoderSomeChildUser');
$expectedEncoder = new MessageDigestPasswordEncoder('sha1');
$this->assertEquals($expectedEncoder->encodePassword('foo', ''), $encoder->encodePassword('foo', ''));
}
public function testGetNamedEncoderForEncoderAware()
{
$factory = new EncoderFactory(array(
'SymfonyComponentSecurityCoreTestsEncoderEncAwareUser' => 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(
'SymfonyComponentSecurityCoreTestsEncoderEncAwareUser' => 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(
'SymfonyComponentSecurityCoreTestsEncoderEncAwareUser' => 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(
'SymfonyComponentSecurityCoreTestsEncoderEncAwareUser' => new MessageDigestPasswordEncoder('sha1'),
'encoder_name' => new MessageDigestPasswordEncoder('sha256'),
));
$encoder = $factory->getEncoder('SymfonyComponentSecurityCoreTestsEncoderEncAwareUser');
$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;
}
}