|
17 | 17 | use Symfony\Component\HttpFoundation\Request; |
18 | 18 | use Symfony\Component\HttpKernel\Event\RequestEvent; |
19 | 19 | use Symfony\Component\HttpKernel\HttpKernelInterface; |
| 20 | +use Symfony\Component\Routing\Generator\UrlGeneratorInterface; |
20 | 21 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; |
21 | 22 | use Symfony\Component\Security\Core\Authentication\Token\SwitchUserToken; |
22 | 23 | use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; |
@@ -105,6 +106,20 @@ public function testExitUserUpdatesToken() |
105 | 106 | $this->assertSame($originalToken, $this->tokenStorage->getToken()); |
106 | 107 | } |
107 | 108 |
|
| 109 | + public function testExitUserDoesNotRedirectToTargetRoute() |
| 110 | + { |
| 111 | + $originalToken = new UsernamePasswordToken(new InMemoryUser('username', '', []), 'key', []); |
| 112 | + $this->tokenStorage->setToken(new SwitchUserToken(new InMemoryUser('username', '', ['ROLE_USER']), 'key', ['ROLE_USER'], $originalToken)); |
| 113 | + |
| 114 | + $this->request->query->set('_switch_user', SwitchUserListener::EXIT_VALUE); |
| 115 | + |
| 116 | + $listener = new SwitchUserListener($this->tokenStorage, $this->userProvider, $this->userChecker, 'provider123', $this->accessDecisionManager, urlGenerator: $this->createMock(UrlGeneratorInterface::class), targetRoute: 'whatever'); |
| 117 | + $listener($this->event); |
| 118 | + |
| 119 | + $this->assertInstanceOf(RedirectResponse::class, $this->event->getResponse()); |
| 120 | + $this->assertSame($this->request->getUri(), $this->event->getResponse()->getTargetUrl()); |
| 121 | + } |
| 122 | + |
108 | 123 | public function testExitUserDispatchesEventWithRefreshedUser() |
109 | 124 | { |
110 | 125 | $originalUser = new InMemoryUser('username', null); |
|
0 commit comments