Файл: symfony-2.7/src/Symfony/Component/Security/Core/Tests/User/ChainUserProviderTest.php
Строк: 183
<?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 SymfonyComponentSecurityCoreTestsUser;
use SymfonyComponentSecurityCoreExceptionUnsupportedUserException;
use SymfonyComponentSecurityCoreUserChainUserProvider;
use SymfonyComponentSecurityCoreExceptionUsernameNotFoundException;
class ChainUserProviderTest extends PHPUnit_Framework_TestCase
{
public function testLoadUserByUsername()
{
$provider1 = $this->getProvider();
$provider1
->expects($this->once())
->method('loadUserByUsername')
->with($this->equalTo('foo'))
->will($this->throwException(new UsernameNotFoundException('not found')))
;
$provider2 = $this->getProvider();
$provider2
->expects($this->once())
->method('loadUserByUsername')
->with($this->equalTo('foo'))
->will($this->returnValue($account = $this->getAccount()))
;
$provider = new ChainUserProvider(array($provider1, $provider2));
$this->assertSame($account, $provider->loadUserByUsername('foo'));
}
/**
* @expectedException SymfonyComponentSecurityCoreExceptionUsernameNotFoundException
*/
public function testLoadUserByUsernameThrowsUsernameNotFoundException()
{
$provider1 = $this->getProvider();
$provider1
->expects($this->once())
->method('loadUserByUsername')
->with($this->equalTo('foo'))
->will($this->throwException(new UsernameNotFoundException('not found')))
;
$provider2 = $this->getProvider();
$provider2
->expects($this->once())
->method('loadUserByUsername')
->with($this->equalTo('foo'))
->will($this->throwException(new UsernameNotFoundException('not found')))
;
$provider = new ChainUserProvider(array($provider1, $provider2));
$provider->loadUserByUsername('foo');
}
public function testRefreshUser()
{
$provider1 = $this->getProvider();
$provider1
->expects($this->once())
->method('refreshUser')
->will($this->throwException(new UnsupportedUserException('unsupported')))
;
$provider2 = $this->getProvider();
$provider2
->expects($this->once())
->method('refreshUser')
->will($this->returnValue($account = $this->getAccount()))
;
$provider = new ChainUserProvider(array($provider1, $provider2));
$this->assertSame($account, $provider->refreshUser($this->getAccount()));
}
public function testRefreshUserAgain()
{
$provider1 = $this->getProvider();
$provider1
->expects($this->once())
->method('refreshUser')
->will($this->throwException(new UsernameNotFoundException('not found')))
;
$provider2 = $this->getProvider();
$provider2
->expects($this->once())
->method('refreshUser')
->will($this->returnValue($account = $this->getAccount()))
;
$provider = new ChainUserProvider(array($provider1, $provider2));
$this->assertSame($account, $provider->refreshUser($this->getAccount()));
}
/**
* @expectedException SymfonyComponentSecurityCoreExceptionUnsupportedUserException
*/
public function testRefreshUserThrowsUnsupportedUserException()
{
$provider1 = $this->getProvider();
$provider1
->expects($this->once())
->method('refreshUser')
->will($this->throwException(new UnsupportedUserException('unsupported')))
;
$provider2 = $this->getProvider();
$provider2
->expects($this->once())
->method('refreshUser')
->will($this->throwException(new UnsupportedUserException('unsupported')))
;
$provider = new ChainUserProvider(array($provider1, $provider2));
$provider->refreshUser($this->getAccount());
}
public function testSupportsClass()
{
$provider1 = $this->getProvider();
$provider1
->expects($this->once())
->method('supportsClass')
->with($this->equalTo('foo'))
->will($this->returnValue(false))
;
$provider2 = $this->getProvider();
$provider2
->expects($this->once())
->method('supportsClass')
->with($this->equalTo('foo'))
->will($this->returnValue(true))
;
$provider = new ChainUserProvider(array($provider1, $provider2));
$this->assertTrue($provider->supportsClass('foo'));
}
public function testSupportsClassWhenNotSupported()
{
$provider1 = $this->getProvider();
$provider1
->expects($this->once())
->method('supportsClass')
->with($this->equalTo('foo'))
->will($this->returnValue(false))
;
$provider2 = $this->getProvider();
$provider2
->expects($this->once())
->method('supportsClass')
->with($this->equalTo('foo'))
->will($this->returnValue(false))
;
$provider = new ChainUserProvider(array($provider1, $provider2));
$this->assertFalse($provider->supportsClass('foo'));
}
protected function getAccount()
{
return $this->getMock('SymfonyComponentSecurityCoreUserUserInterface');
}
protected function getProvider()
{
return $this->getMock('SymfonyComponentSecurityCoreUserUserProviderInterface');
}
}