|
18 | 18 | use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface; |
19 | 19 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; |
20 | 20 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; |
| 21 | +use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; |
21 | 22 | use Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface; |
22 | 23 | use Symfony\Component\Security\Core\Exception\AccessDeniedException; |
| 24 | +use Symfony\Component\Security\Core\User\User; |
23 | 25 | use Symfony\Component\Security\Http\AccessMapInterface; |
24 | 26 | use Symfony\Component\Security\Http\Event\LazyResponseEvent; |
25 | 27 | use Symfony\Component\Security\Http\Firewall\AccessListener; |
@@ -279,6 +281,33 @@ public function testHandleWhenPublicAccessIsAllowedAndExceptionOnTokenIsFalse() |
279 | 281 | $this->expectNotToPerformAssertions(); |
280 | 282 | } |
281 | 283 |
|
| 284 | + public function testHandleWhenPublicAccessWhileAuthenticated() |
| 285 | + { |
| 286 | + $token = new UsernamePasswordToken(new User('Wouter', null, ['ROLE_USER']), null, 'main', ['ROLE_USER']); |
| 287 | + $tokenStorage = new TokenStorage(); |
| 288 | + $tokenStorage->setToken($token); |
| 289 | + $request = new Request(); |
| 290 | + |
| 291 | + $accessMap = $this->createMock(AccessMapInterface::class); |
| 292 | + $accessMap->expects($this->any()) |
| 293 | + ->method('getPatterns') |
| 294 | + ->with($this->equalTo($request)) |
| 295 | + ->willReturn([[AccessListener::PUBLIC_ACCESS], null]) |
| 296 | + ; |
| 297 | + |
| 298 | + $listener = new AccessListener( |
| 299 | + $tokenStorage, |
| 300 | + $this->getMockBuilder('Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface')->getMock(), |
| 301 | + $accessMap, |
| 302 | + $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface')->getMock(), |
| 303 | + false |
| 304 | + ); |
| 305 | + |
| 306 | + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); |
| 307 | + |
| 308 | + $this->expectNotToPerformAssertions(); |
| 309 | + } |
| 310 | + |
282 | 311 | public function testHandleMWithultipleAttributesShouldBeHandledAsAnd() |
283 | 312 | { |
284 | 313 | $request = new Request(); |
|
0 commit comments