[Security] Remove useless attribute in basic authentication listener & test it
This commit is contained in:
parent
91e6dc9fef
commit
d51cbc09b4
@ -31,7 +31,6 @@ class BasicAuthenticationListener implements ListenerInterface
|
|||||||
private $providerKey;
|
private $providerKey;
|
||||||
private $authenticationEntryPoint;
|
private $authenticationEntryPoint;
|
||||||
private $logger;
|
private $logger;
|
||||||
private $ignoreFailure;
|
|
||||||
|
|
||||||
public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, $providerKey, AuthenticationEntryPointInterface $authenticationEntryPoint, LoggerInterface $logger = null)
|
public function __construct(SecurityContextInterface $securityContext, AuthenticationManagerInterface $authenticationManager, $providerKey, AuthenticationEntryPointInterface $authenticationEntryPoint, LoggerInterface $logger = null)
|
||||||
{
|
{
|
||||||
@ -44,7 +43,6 @@ class BasicAuthenticationListener implements ListenerInterface
|
|||||||
$this->providerKey = $providerKey;
|
$this->providerKey = $providerKey;
|
||||||
$this->authenticationEntryPoint = $authenticationEntryPoint;
|
$this->authenticationEntryPoint = $authenticationEntryPoint;
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
$this->ignoreFailure = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -80,10 +78,6 @@ class BasicAuthenticationListener implements ListenerInterface
|
|||||||
$this->logger->info(sprintf('Authentication request failed for user "%s": %s', $username, $failed->getMessage()));
|
$this->logger->info(sprintf('Authentication request failed for user "%s": %s', $username, $failed->getMessage()));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->ignoreFailure) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$event->setResponse($this->authenticationEntryPoint->start($request, $failed));
|
$event->setResponse($this->authenticationEntryPoint->start($request, $failed));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,174 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Symfony\Tests\Component\Security\Http\Firewall;
|
||||||
|
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
||||||
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
use Symfony\Component\Security\Http\Firewall\BasicAuthenticationListener;
|
||||||
|
use Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager;
|
||||||
|
|
||||||
|
class BasicAuthenticationListenerTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
public function testHandleWithValidUsernameAndPasswordServerParameters()
|
||||||
|
{
|
||||||
|
$request = new Request(array(), array(), array(), array(), array(), array(
|
||||||
|
'PHP_AUTH_USER' => 'TheUsername',
|
||||||
|
'PHP_AUTH_PW' => 'ThePassword'
|
||||||
|
));
|
||||||
|
|
||||||
|
$token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
|
||||||
|
|
||||||
|
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface');
|
||||||
|
$context
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getToken')
|
||||||
|
->will($this->returnValue(null))
|
||||||
|
;
|
||||||
|
$context
|
||||||
|
->expects($this->once())
|
||||||
|
->method('setToken')
|
||||||
|
->with($this->equalTo($token))
|
||||||
|
;
|
||||||
|
|
||||||
|
$authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
|
||||||
|
$authenticationManager
|
||||||
|
->expects($this->once())
|
||||||
|
->method('authenticate')
|
||||||
|
->with($this->isInstanceOf('Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken'))
|
||||||
|
->will($this->returnValue($token))
|
||||||
|
;
|
||||||
|
|
||||||
|
$listener = new BasicAuthenticationListener(
|
||||||
|
$context,
|
||||||
|
$authenticationManager,
|
||||||
|
'TheProviderKey',
|
||||||
|
$this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface')
|
||||||
|
);
|
||||||
|
|
||||||
|
$event = $this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false);
|
||||||
|
$event
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getRequest')
|
||||||
|
->will($this->returnValue($request))
|
||||||
|
;
|
||||||
|
|
||||||
|
$listener->handle($event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testHandleWhenAuthenticationFails()
|
||||||
|
{
|
||||||
|
$request = new Request(array(), array(), array(), array(), array(), array(
|
||||||
|
'PHP_AUTH_USER' => 'TheUsername',
|
||||||
|
'PHP_AUTH_PW' => 'ThePassword'
|
||||||
|
));
|
||||||
|
|
||||||
|
$token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
|
||||||
|
|
||||||
|
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface');
|
||||||
|
$context
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getToken')
|
||||||
|
->will($this->returnValue(null))
|
||||||
|
;
|
||||||
|
$context
|
||||||
|
->expects($this->once())
|
||||||
|
->method('setToken')
|
||||||
|
->with($this->equalTo(null))
|
||||||
|
;
|
||||||
|
|
||||||
|
$response = new Response();
|
||||||
|
|
||||||
|
$authenticationEntryPoint = $this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface');
|
||||||
|
$authenticationEntryPoint
|
||||||
|
->expects($this->any())
|
||||||
|
->method('start')
|
||||||
|
->with($this->equalTo($request), $this->isInstanceOf('Symfony\Component\Security\Core\Exception\AuthenticationException'))
|
||||||
|
->will($this->returnValue($response))
|
||||||
|
;
|
||||||
|
|
||||||
|
$listener = new BasicAuthenticationListener(
|
||||||
|
$context,
|
||||||
|
new AuthenticationProviderManager(array($this->getMock('Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface'))),
|
||||||
|
'TheProviderKey',
|
||||||
|
$authenticationEntryPoint
|
||||||
|
);
|
||||||
|
|
||||||
|
$event = $this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false);
|
||||||
|
$event
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getRequest')
|
||||||
|
->will($this->returnValue($request))
|
||||||
|
;
|
||||||
|
$event
|
||||||
|
->expects($this->once())
|
||||||
|
->method('setResponse')
|
||||||
|
->with($this->equalTo($response))
|
||||||
|
;
|
||||||
|
|
||||||
|
$listener->handle($event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testHandleWithNoUsernameServerParameter()
|
||||||
|
{
|
||||||
|
$request = new Request();
|
||||||
|
|
||||||
|
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface');
|
||||||
|
$context
|
||||||
|
->expects($this->never())
|
||||||
|
->method('getToken')
|
||||||
|
;
|
||||||
|
|
||||||
|
$listener = new BasicAuthenticationListener(
|
||||||
|
$context,
|
||||||
|
$this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface'),
|
||||||
|
'TheProviderKey',
|
||||||
|
$this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface')
|
||||||
|
);
|
||||||
|
|
||||||
|
$event = $this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false);
|
||||||
|
$event
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getRequest')
|
||||||
|
->will($this->returnValue($request))
|
||||||
|
;
|
||||||
|
|
||||||
|
$listener->handle($event);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function textHandleWithASimilarAuthenticatedToken()
|
||||||
|
{
|
||||||
|
$request = new Request(array(), array(), array(), array(), array(), array('PHP_AUTH_USER' => 'TheUsername'));
|
||||||
|
|
||||||
|
$token = new UsernamePasswordToken('TheUsername', 'ThePassword', 'TheProviderKey', array('ROLE_FOO'));
|
||||||
|
|
||||||
|
$context = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface');
|
||||||
|
$context
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getToken')
|
||||||
|
->will($this->returnValue($token))
|
||||||
|
;
|
||||||
|
|
||||||
|
$authenticationManager = $this->getMock('Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface');
|
||||||
|
$authenticationManager
|
||||||
|
->expects($this->never())
|
||||||
|
->method('authenticate')
|
||||||
|
;
|
||||||
|
|
||||||
|
$listener = new BasicAuthenticationListener(
|
||||||
|
$context,
|
||||||
|
$authenticationManager,
|
||||||
|
'TheProviderKey',
|
||||||
|
$this->getMock('Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface')
|
||||||
|
);
|
||||||
|
|
||||||
|
$event = $this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false);
|
||||||
|
$event
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getRequest')
|
||||||
|
->will($this->returnValue($request))
|
||||||
|
;
|
||||||
|
|
||||||
|
$listener->handle($event);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user