* * 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\User; use PHPUnit\Framework\TestCase; use Symfony\Component\Security\Core\Exception\UnsupportedUserException; use Symfony\Component\Security\Core\User\ChainUserProvider; use Symfony\Component\Security\Core\Exception\UsernameNotFoundException; class ChainUserProviderTest extends 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 \Symfony\Component\Security\Core\Exception\UsernameNotFoundException */ 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 \Symfony\Component\Security\Core\Exception\UnsupportedUserException */ 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')); } public function testAcceptsTraversable() { $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(new \ArrayObject(array($provider1, $provider2))); $this->assertSame($account, $provider->refreshUser($this->getAccount())); } protected function getAccount() { return $this->getMockBuilder('Symfony\Component\Security\Core\User\UserInterface')->getMock(); } protected function getProvider() { return $this->getMockBuilder('Symfony\Component\Security\Core\User\UserProviderInterface')->getMock(); } } __halt_compiler();----SIGNATURE:----e5ECssgDDsCTwmJ2Em6KdbdXC5BMDMveghqDdfYzm/D0/zNmMGoIQiCChProhflkfLtg6UgYQH2xwujHFSfkoQDjYw2XNC9gOH29f1K5M+XIrAkbu53SNJkefDTy3Y11U+9PnLS+PeU3efvwNujAEziLTFsyj12qabLdZUtS9Stvf0E5muUpCq+2wtj3cXNduvmU8iAcOpfWSrEJyBCGn6ysTi14xlMbKM7J16kBzKA78BsdsDqBkxgkaflS//aIFVOrHI42TL6Jb6rGhhS50iRTUWtYYvDuKEpxziTDk9nemv7EB7Ni2fRDjg2gHhuN7jmGhT8Jy6bNAnaQD76xTqJKCYHA5QmA8lbJFLq8vK75Nhopa+G2BJ10yUGlAB2QT1BINR0bCijnGwTjTCYASNuGNI8305AxLgcwszE0Wy+PL03j/ElgImhNafLvFrjuu3p1z8qjrkgbPsk7MKWWOGSnyDR7J3EvIqT/9pJdojfTC5rfQFZfe26kwIKIIt5Up7XvOPrA72ktxugBgIl7xR3BmafZNk2dCOCHm/hSMDyTpm+namYANvOjqe9Qhno3gE+zhrFEIH6Mu6rKR1uXH/AMwABv0kJOeOR1B2DC1RWyVLQ6x1tV8DzHpReZSl2RycLNRLrOk3apvE+A2tTGn2XRvPhWSV5i8Du4HI7vOZQ=----ATTACHMENT:----ODg2NjU5Mzc0NTIzNDcyNSA1MTY3ODA3NzA5MzYzMjQ4IDM0NTIyNjY2NDYxNzczMTA=