diff --git a/src/Symfony/Component/Security/Acl/Domain/RoleSecurityIdentity.php b/src/Symfony/Component/Security/Acl/Domain/RoleSecurityIdentity.php index 51d3d0c23908b..cf70fda38a243 100644 --- a/src/Symfony/Component/Security/Acl/Domain/RoleSecurityIdentity.php +++ b/src/Symfony/Component/Security/Acl/Domain/RoleSecurityIdentity.php @@ -12,7 +12,7 @@ namespace Symfony\Component\Security\Acl\Domain; use Symfony\Component\Security\Acl\Model\SecurityIdentityInterface; -use Symfony\Component\Security\Core\Role\Role; +use Symfony\Component\Security\Core\Role\RoleInterface; /** * A SecurityIdentity implementation for roles @@ -26,12 +26,12 @@ final class RoleSecurityIdentity implements SecurityIdentityInterface /** * Constructor * - * @param mixed $role a Role instance, or its string representation + * @param mixed $role a RoleInterface instance, or its string representation * @return void */ public function __construct($role) { - if ($role instanceof Role) { + if ($role instanceof RoleInterface) { $role = $role->getRole(); } diff --git a/tests/Symfony/Tests/Component/Security/Acl/Domain/RoleSecurityIdentityTest.php b/tests/Symfony/Tests/Component/Security/Acl/Domain/RoleSecurityIdentityTest.php index 31835963d25f4..99984b62a29fe 100644 --- a/tests/Symfony/Tests/Component/Security/Acl/Domain/RoleSecurityIdentityTest.php +++ b/tests/Symfony/Tests/Component/Security/Acl/Domain/RoleSecurityIdentityTest.php @@ -17,18 +17,23 @@ class RoleSecurityIdentityTest extends \PHPUnit_Framework_TestCase { - public function testConstructor() + /** + * @dataProvider getConstructorData + */ + public function testConstructor($role, $roleString) { - $id = new RoleSecurityIdentity('ROLE_FOO'); + $id = new RoleSecurityIdentity($role); - $this->assertEquals('ROLE_FOO', $id->getRole()); + $this->assertEquals($roleString, $id->getRole()); } - public function testConstructorWithRoleInstance() + public function getConstructorData() { - $id = new RoleSecurityIdentity(new Role('ROLE_FOO')); - - $this->assertEquals('ROLE_FOO', $id->getRole()); + return array( + array('ROLE_FOO', 'ROLE_FOO'), + array(new Role('ROLE_FOO'), 'ROLE_FOO'), + array(new CustomRole(), 'CUSTOM_ROLE'), + ); } /** @@ -53,3 +58,14 @@ public function getCompareData() ); } } + +class CustomRole implements \Symfony\Component\Security\Core\Role\RoleInterface +{ + /** + * {@inheritDoc} + */ + public function getRole() + { + return 'CUSTOM_ROLE'; + } +}