* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Http\Tests\Logout; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Http\Logout\LogoutUrlGenerator; /** * @author Maxime Steinhausser */ class LogoutUrlGeneratorTest extends TestCase { /** @var TokenStorage */ private $tokenStorage; /** @var LogoutUrlGenerator */ private $generator; protected function setUp() { $requestStack = $this->getMockBuilder(RequestStack::class)->getMock(); $request = $this->getMockBuilder(Request::class)->getMock(); $requestStack->method('getCurrentRequest')->willReturn($request); $this->tokenStorage = new TokenStorage(); $this->generator = new LogoutUrlGenerator($requestStack, null, $this->tokenStorage); } public function testGetLogoutPath() { $this->generator->registerListener('secured_area', '/logout', null, null); $this->assertSame('/logout', $this->generator->getLogoutPath('secured_area')); } /** * @expectedException \InvalidArgumentException * @expectedExceptionMessage No LogoutListener found for firewall key "unregistered_key". */ public function testGetLogoutPathWithoutLogoutListenerRegisteredForKeyThrowsException() { $this->generator->registerListener('secured_area', '/logout', null, null, null); $this->generator->getLogoutPath('unregistered_key'); } public function testGuessFromToken() { $this->tokenStorage->setToken(new UsernamePasswordToken('user', 'password', 'secured_area')); $this->generator->registerListener('secured_area', '/logout', null, null); $this->assertSame('/logout', $this->generator->getLogoutPath()); } /** * @expectedException \InvalidArgumentException * @expectedExceptionMessage Unable to generate a logout url for an anonymous token. */ public function testGuessFromAnonymousTokenThrowsException() { $this->tokenStorage->setToken(new AnonymousToken('default', 'anon.')); $this->generator->getLogoutPath(); } public function testGuessFromCurrentFirewallKey() { $this->generator->registerListener('secured_area', '/logout', null, null); $this->generator->setCurrentFirewall('secured_area'); $this->assertSame('/logout', $this->generator->getLogoutPath()); } public function testGuessFromCurrentFirewallContext() { $this->generator->registerListener('secured_area', '/logout', null, null, null, 'secured'); $this->generator->setCurrentFirewall('admin', 'secured'); $this->assertSame('/logout', $this->generator->getLogoutPath()); } public function testGuessFromTokenWithoutProviderKeyFallbacksToCurrentFirewall() { $this->tokenStorage->setToken($this->getMockBuilder(TokenInterface::class)->getMock()); $this->generator->registerListener('secured_area', '/logout', null, null); $this->generator->setCurrentFirewall('secured_area'); $this->assertSame('/logout', $this->generator->getLogoutPath()); } /** * @expectedException \InvalidArgumentException * @expectedExceptionMessage Unable to find the current firewall LogoutListener, please provide the provider key manually */ public function testUnableToGuessThrowsException() { $this->generator->registerListener('secured_area', '/logout', null, null); $this->generator->getLogoutPath(); } } __halt_compiler();----SIGNATURE:----g0zeLvv7GWg+O8I6p1YBta3dstPrJdbzyXmvBGeUBWdrAiTL8Kj93xqa0k+ySBG09xZP4mRI8AatlOfWkgY1QeYC6wxAmmlqiFa/cJP+dcIJYbQvcJGcjWv2GrHLxUHaWSdiZsGlA8nbznfVySc/CWyTIHdcZFD7Re6waOdTQDOzKaF36x1caN0KIFZEqSPoVQjkZJGMMMNFmpKhOVqWrtMHwaKwJgCp5RGzWUZORFrVc1G+MiCjtC0O3hi7L1ht3yr8gqDR3sVCa+50W+7N27p0MUy9XZ3VOjicfo8dgPYUKO7+jJ0p6f7XJ0n/Fxco9kLVUJol8ShwxY0HJ9cJ9kO0geaZmR+2gcM5hGQ9Q+WlZ9aYvHXJoPPA+gHsft0hi1j2Y3taXs0XgfVgxhUU5AwBvnOFxZtNTUqoLmc+W1wa4v4Jb0soZ74qzTa/GoWpuwls1RJxy2fdrjaVZup8AejPYRRCfZwtTJcYnN3Aiz6jGnBQ1GXBT+o9FwjHsgc02/eATPU3DVKXfEP6vdWfhlB8dbokwX96crfsUvFj4s1+4kw9UrfMQPcX5vfECG8n6NaC3MYPvoZ2YJqrnXfyBh4VbeD2meB6FxDoWCd1pFl0aJaULkdhFSygNFaESRziQLcrsy1bwuwogW4Vr6XC0y7sNT0Rq21glAi6R2ULubQ=----ATTACHMENT:----MjI3MDA0MDE2NDU4NjgwNiA5NzE2MTc4MDU0Mjk5NDg2IDE5NDAxNzMwMTg5NDU5MTc=