|
16 | 16 | use Symfony\Component\HttpKernel\Event\RequestEvent;
|
17 | 17 | use Symfony\Component\HttpKernel\HttpKernelInterface;
|
18 | 18 | use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
|
| 19 | +use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; |
19 | 20 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
20 | 21 | use Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface;
|
21 | 22 | use Symfony\Component\Security\Http\AccessMapInterface;
|
@@ -227,4 +228,44 @@ public function testHandleWhenTheSecurityTokenStorageHasNoToken()
|
227 | 228 |
|
228 | 229 | $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST));
|
229 | 230 | }
|
| 231 | + |
| 232 | + public function testHandleMWithultipleAttributesShouldBeHandledAsAnd() |
| 233 | + { |
| 234 | + $request = new Request(); |
| 235 | + |
| 236 | + $accessMap = $this->getMockBuilder('Symfony\Component\Security\Http\AccessMapInterface')->getMock(); |
| 237 | + $accessMap |
| 238 | + ->expects($this->any()) |
| 239 | + ->method('getPatterns') |
| 240 | + ->with($this->equalTo($request)) |
| 241 | + ->willReturn([['foo' => 'bar', 'bar' => 'baz'], null]) |
| 242 | + ; |
| 243 | + |
| 244 | + $authenticatedToken = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')->getMock(); |
| 245 | + $authenticatedToken |
| 246 | + ->expects($this->any()) |
| 247 | + ->method('isAuthenticated') |
| 248 | + ->willReturn(true) |
| 249 | + ; |
| 250 | + |
| 251 | + $tokenStorage = new TokenStorage(); |
| 252 | + $tokenStorage->setToken($authenticatedToken); |
| 253 | + |
| 254 | + $accessDecisionManager = $this->getMockBuilder('Symfony\Component\Security\Core\Authorization\AccessDecisionManagerInterface')->getMock(); |
| 255 | + $accessDecisionManager |
| 256 | + ->expects($this->once()) |
| 257 | + ->method('decide') |
| 258 | + ->with($this->equalTo($authenticatedToken), $this->equalTo(['foo' => 'bar', 'bar' => 'baz']), $this->equalTo($request), true) |
| 259 | + ->willReturn(true) |
| 260 | + ; |
| 261 | + |
| 262 | + $listener = new AccessListener( |
| 263 | + $tokenStorage, |
| 264 | + $accessDecisionManager, |
| 265 | + $accessMap, |
| 266 | + $this->createMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface') |
| 267 | + ); |
| 268 | + |
| 269 | + $listener(new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MASTER_REQUEST)); |
| 270 | + } |
230 | 271 | }
|
0 commit comments