Вход Регистрация
Файл: symfony-2.7/src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php
Строк: 131
<?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 SymfonyBridgeDoctrineTestsSecurityUser;

use 
SymfonyBridgeDoctrineTestDoctrineTestHelper;
use 
SymfonyBridgeDoctrineTestsFixturesUser;
use 
SymfonyBridgeDoctrineSecurityUserEntityUserProvider;
use 
DoctrineORMToolsSchemaTool;

class 
EntityUserProviderTest extends PHPUnit_Framework_TestCase
{
    public function 
testRefreshUserGetsUserByPrimaryKey()
    {
        
$em DoctrineTestHelper::createTestEntityManager();
        
$this->createSchema($em);

        
$user1 = new User(11'user1');
        
$user2 = new User(12'user2');

        
$em->persist($user1);
        
$em->persist($user2);
        
$em->flush();

        
$provider = new EntityUserProvider($this->getManager($em), 'SymfonyBridgeDoctrineTestsFixturesUser''name');

        
// try to change the user identity
        
$user1->name 'user2';

        
$this->assertSame($user1$provider->refreshUser($user1));
    }

    public function 
testRefreshUserRequiresId()
    {
        
$em DoctrineTestHelper::createTestEntityManager();

        
$user1 = new User(nullnull'user1');
        
$provider = new EntityUserProvider($this->getManager($em), 'SymfonyBridgeDoctrineTestsFixturesUser''name');

        
$this->setExpectedException(
            
'InvalidArgumentException',
            
'You cannot refresh a user from the EntityUserProvider that does not contain an identifier. The user object has to be serialized with its own identifier mapped by Doctrine'
        
);
        
$provider->refreshUser($user1);
    }

    public function 
testRefreshInvalidUser()
    {
        
$em DoctrineTestHelper::createTestEntityManager();
        
$this->createSchema($em);

        
$user1 = new User(11'user1');

        
$em->persist($user1);
        
$em->flush();

        
$provider = new EntityUserProvider($this->getManager($em), 'SymfonyBridgeDoctrineTestsFixturesUser''name');

        
$user2 = new User(12'user2');
        
$this->setExpectedException(
            
'SymfonyComponentSecurityCoreExceptionUsernameNotFoundException',
            
'User with id {"id1":1,"id2":2} not found'
        
);
        
$provider->refreshUser($user2);
    }

    public function 
testSupportProxy()
    {
        
$em DoctrineTestHelper::createTestEntityManager();
        
$this->createSchema($em);

        
$user1 = new User(11'user1');

        
$em->persist($user1);
        
$em->flush();
        
$em->clear();

        
$provider = new EntityUserProvider($this->getManager($em), 'SymfonyBridgeDoctrineTestsFixturesUser''name');

        
$user2 $em->getReference('SymfonyBridgeDoctrineTestsFixturesUser', array('id1' => 1'id2' => 1));
        
$this->assertTrue($provider->supportsClass(get_class($user2)));
    }

    private function 
getManager($em$name null)
    {
        
$manager $this->getMock('DoctrineCommonPersistenceManagerRegistry');
        
$manager->expects($this->once())
            ->
method('getManager')
            ->
with($this->equalTo($name))
            ->
will($this->returnValue($em));

        return 
$manager;
    }

    private function 
createSchema($em)
    {
        
$schemaTool = new SchemaTool($em);
        
$schemaTool->createSchema(array(
            
$em->getClassMetadata('SymfonyBridgeDoctrineTestsFixturesUser'),
        ));
    }
}
Онлайн: 0
Реклама