|
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