* * 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:----OFn+N3FBZSRguN9PVraJRvSKg8/uqqmTU1SY0AU2598QKGrYu3lhZOZ18yyYjFBt6DEhyIwcQ6fIC7gULYEP8iCO+yLDv+mj+wrIj93m2uq0X6LCxwt0zVJ6Ay2CLWIf381tEJNX97CxgHNJSrfadd3fwUgtMrdCDOkTe8i7Wj3QyFSVlv6wdPGj7ewfjjcmtsH7zQnKvoFPCisOHGb6sma9KgsGC3WxHF9NmL2kty6Xyatckk+1fiwpxXrD4hNfF3sig/W0QCA3qywH7khIaC05tdyNFZGtzl0iMVY6rMIny3hZSDjqaWUPr5rOlCa2UP8U7iKaVy6Gc2nz3nt4VKRlfDy5UixAty+fRHuTWamyjBoUPbO8WT/6n9OrdrolzYW5w8fcn/zViuJDkCeJIpC+14G6Kh/qUi/XN8vVGfq/H6nwrBe7NxEtKHviBHuDSsTznQtTmx0I5Lf1qlv6XG8D5eshxKzDgSVu1twYHOq51d80D+G//XC2Vykk1qapEuyTsENaLKyh9L7BZAXBXWqHIQ+c2Oq2ddjty4dgOK4/nBQl/Pcykrl+0uP0Yc8tA3EMXN0X/MADQrRDs9+/ZxVyTjCgvA0nJ4Cu16HHvOBSbNY73db6Fl9azpVYGMFU8iU6cM/9ONFfcM7cBiqf6gvVdkDMkM1TOoOD7+JOetI=----ATTACHMENT:----OTM4MzU0NDYwMTkxMTAxOSA2NDIzNjUwMTY4NzMxNzI3IDk2MzcwMTIzMzc3Mzc2ODI=