Вход Регистрация
Файл: 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'true5),
        )));

        
$encoder $factory->getEncoder($this->getMock('SymfonyComponentSecurityCoreUserUserInterface'));
        
$expectedEncoder = new MessageDigestPasswordEncoder('sha512'true5);

        
$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;
    }
}
Онлайн: 1
Реклама