* * 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:----Rik19S+Ym3uGZ3LQZhZd2Z6AEMGdW+PgZpRT3K8D12ViR1YUWpeSqU35KyMU+l2wHVCTGxPU2e3q9HOdFglYTSiTz0i2MDlqOMa80Zw7N2I37RR/xmYsZbEwNbFP82nA1UTICM7KMk7UcooWfSfzMpWQ7C87I9O1eHvp4Fqd8+hA7GmePclmCxB4UikegzGLjYXHv64BJEruZg6hxxfJE1pHA1HcIoUTyk+dPZiCen91xck7O0yowGF/KH/QQSj3AbZQo0NLP70NhCiw2yeqqz9jw2LJV4nN2ms5Nvub/WUFbpjrRhHiKNfV9y/8LRFxpuOJr++Vn2oITLs4HXUrPmWkLAzPAZg71dYgxKmYVdK9J1LMZ0BSZVTBD0kEPVVDqF72ZEUuQREa+FxMjFBjnp8O74PN4cPKKfA4ayzpDVaz7ccciuPKZNjQ0Czi+GfTzs1YYjA3cIKdw1BoFC5qVq2cTwdxwZp8b2kGakyc+Bcm71p5fSEKNVKWC82Z60BP5ImpNoJhB1pNKAY7CZA/EPg/2jkbuqT237h4B1y+WBxseWapHfNCS9iOIlnJNisAa+1ozYpZN8JuaA1T0Jj4PdB06A1Zvpc/Cr6OY24f7Ve+S49elDgaMY5WFMArRyuCiD3V7bqWHbX4jQMGKG6a7B+yyTBugSSXooHSFs7TLdg=----ATTACHMENT:----MjA5MDMyOTQwMDAyNDY3NyA0NzU3NDI2MjA5MTEzODYwIDIyNjAwNTcwNzI0MDA2MzE=