minor #13049 [2.3] [SecurityBundle] adds unit tests suite for SecurityDataCollector class. (hhamon)
This PR was merged into the 2.3 branch.
Discussion
----------
[2.3] [SecurityBundle] adds unit tests suite for SecurityDataCollector class.
| Q | A
| ------------- | ---
| Bug fix? | no
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| Fixed tickets | ~
| License | MIT
| Doc PR | ~
Commits
-------
85f72f4
[SecurityBundle] adds unit tests suite for SecurityDataCollector class.
This commit is contained in:
commit
c9acca7381
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
namespace Symfony\Bundle\SecurityBundle\DataCollector;
|
namespace Symfony\Bundle\SecurityBundle\DataCollector;
|
||||||
|
|
||||||
|
use Symfony\Component\Security\Core\Role\RoleInterface;
|
||||||
use Symfony\Component\Security\Core\SecurityContextInterface;
|
use Symfony\Component\Security\Core\SecurityContextInterface;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
@ -25,6 +26,11 @@ class SecurityDataCollector extends DataCollector
|
|||||||
{
|
{
|
||||||
private $context;
|
private $context;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param SecurityContextInterface|null $context
|
||||||
|
*/
|
||||||
public function __construct(SecurityContextInterface $context = null)
|
public function __construct(SecurityContextInterface $context = null)
|
||||||
{
|
{
|
||||||
$this->context = $context;
|
$this->context = $context;
|
||||||
@ -57,7 +63,7 @@ class SecurityDataCollector extends DataCollector
|
|||||||
'authenticated' => $token->isAuthenticated(),
|
'authenticated' => $token->isAuthenticated(),
|
||||||
'token_class' => get_class($token),
|
'token_class' => get_class($token),
|
||||||
'user' => $token->getUsername(),
|
'user' => $token->getUsername(),
|
||||||
'roles' => array_map(function ($role) { return $role->getRole();}, $token->getRoles()),
|
'roles' => array_map(function (RoleInterface $role) { return $role->getRole(); }, $token->getRoles()),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,87 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Symfony\Bundle\SecurityBundle\Tests\DataCollector;
|
||||||
|
|
||||||
|
use Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector;
|
||||||
|
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
||||||
|
use Symfony\Component\Security\Core\Role\Role;
|
||||||
|
|
||||||
|
class SecurityDataCollectorTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
public function testCollectWhenSecurityIsDisabled()
|
||||||
|
{
|
||||||
|
$collector = new SecurityDataCollector();
|
||||||
|
$collector->collect($this->getRequest(), $this->getResponse());
|
||||||
|
|
||||||
|
$this->assertSame('security', $collector->getName());
|
||||||
|
$this->assertFalse($collector->isEnabled());
|
||||||
|
$this->assertFalse($collector->isAuthenticated());
|
||||||
|
$this->assertNull($collector->getTokenClass());
|
||||||
|
$this->assertCount(0, $collector->getRoles());
|
||||||
|
$this->assertEmpty($collector->getUser());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCollectWhenAuthenticationTokenIsNull()
|
||||||
|
{
|
||||||
|
$securityContext = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface');
|
||||||
|
$securityContext->expects($this->once())->method('getToken')->willReturn(null);
|
||||||
|
|
||||||
|
$collector = new SecurityDataCollector($securityContext);
|
||||||
|
$collector->collect($this->getRequest(), $this->getResponse());
|
||||||
|
|
||||||
|
$this->assertTrue($collector->isEnabled());
|
||||||
|
$this->assertFalse($collector->isAuthenticated());
|
||||||
|
$this->assertNull($collector->getTokenClass());
|
||||||
|
$this->assertCount(0, $collector->getRoles());
|
||||||
|
$this->assertEmpty($collector->getUser());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @dataProvider provideRoles */
|
||||||
|
public function testCollectAuthenticationTokenAndRoles(array $roles, array $normalizedRoles)
|
||||||
|
{
|
||||||
|
$securityContext = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface');
|
||||||
|
$securityContext
|
||||||
|
->expects($this->once())
|
||||||
|
->method('getToken')
|
||||||
|
->willReturn(new UsernamePasswordToken('hhamon', 'P4$$w0rD', 'provider', $roles));
|
||||||
|
|
||||||
|
$collector = new SecurityDataCollector($securityContext);
|
||||||
|
$collector->collect($this->getRequest(), $this->getResponse());
|
||||||
|
|
||||||
|
$this->assertTrue($collector->isEnabled());
|
||||||
|
$this->assertTrue($collector->isAuthenticated());
|
||||||
|
$this->assertSame('Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken', $collector->getTokenClass());
|
||||||
|
$this->assertSame($normalizedRoles, $collector->getRoles());
|
||||||
|
$this->assertSame('hhamon', $collector->getUser());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function provideRoles()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
array('ROLE_USER'),
|
||||||
|
array('ROLE_USER'),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
array(new Role('ROLE_USER')),
|
||||||
|
array('ROLE_USER'),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getRequest()
|
||||||
|
{
|
||||||
|
return $this
|
||||||
|
->getMockBuilder('Symfony\Component\HttpFoundation\Request')
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getResponse()
|
||||||
|
{
|
||||||
|
return $this
|
||||||
|
->getMockBuilder('Symfony\Component\HttpFoundation\Response')
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user