* * 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:----hso31jefdmPomgWIVhTZiNEfcHNOeALoXF2Mxe/dNnvYlyAzTBTiZCsKGqrcXJqFV4k26eQBqC9EQzPyZSqIxoExsKwT1CGaw8Q0MXkypIfRQxmhWLlMvcxCJouD9LRCm8j6EUdClb042RP4QxIr7sM2ldaAbov2KoxpWPCsbqCDUtxaiV1cqwsum3m1RHmAE2iDEhKtQgt2HcTzGu3GM53tkGUwOteJ7FiXAMb6xrSCwMbc2Ac8V3W7x7zSA0/ySixmYNzXlWQSMceIw5gik2h/ok4/pBCEIiiC1jShUtaoABMreamGaerDoX8xy0VLgmT6Gq0jsZUjanhck/PECZvj/kOe6vx/folsSK8wCDO80UVKwod0AaAFtzYHUk1iK8x9qk9sF1cuPupYXDDGQrwDDiPQbo2jEe+KwYFfJ468IGcb/UjSk0GsOX+VOjw1IPpzT7Xi6Xan3qUpdzam0i6+kgD43qPi/o/hxVJNWd5sEduuIN13w1pGu+XEpEstmUECkyjFQ+XTkceyvrRU1UKKvhLQwzTl0RPntbHmk/8/FDWEf0wkwARnN781bQ+4WwoS0A/tkEE3VwZdru+qV6klxskZyE9252tqGMV2vh7PTz/l5YAKCXixkaRFeYvoDFzfCy9kFahlLuBT14toRshZi+Dujv/JEN6wakDTzU0=----ATTACHMENT:----NTA1NDE0NTIyMTg0MzU2NSA0MjExNzkzNDkyMzAxMTgwIDQzNjI3MTk4MDY4MTM3MDE=