From da5ec3b85022ba2617c11058793eb16bb4d96a22 Mon Sep 17 00:00:00 2001 From: Wim Vandersmissen Date: Fri, 3 Aug 2012 11:14:35 +0200 Subject: [PATCH 1/3] small fix for RoleSecurityIdentity --- .../Component/Security/Acl/Domain/RoleSecurityIdentity.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Security/Acl/Domain/RoleSecurityIdentity.php b/src/Symfony/Component/Security/Acl/Domain/RoleSecurityIdentity.php index 0d3d0d2ca2b14..ef4b99d6396ed 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,11 +26,11 @@ final class RoleSecurityIdentity implements SecurityIdentityInterface /** * Constructor * - * @param mixed $role a Role instance, or its string representation + * @param mixed $role an object implementing RoleInterface, or its string representation */ public function __construct($role) { - if ($role instanceof Role) { + if ($role instanceof RoleInterface) { $role = $role->getRole(); } From 5c3c37de279b46db793ebbcbaea446826132d1d9 Mon Sep 17 00:00:00 2001 From: Wim Vandersmissen Date: Fri, 3 Aug 2012 11:36:25 +0200 Subject: [PATCH 2/3] sanity checks added --- .../Security/Acl/Domain/RoleSecurityIdentity.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Security/Acl/Domain/RoleSecurityIdentity.php b/src/Symfony/Component/Security/Acl/Domain/RoleSecurityIdentity.php index ef4b99d6396ed..41b9af1882944 100644 --- a/src/Symfony/Component/Security/Acl/Domain/RoleSecurityIdentity.php +++ b/src/Symfony/Component/Security/Acl/Domain/RoleSecurityIdentity.php @@ -30,10 +30,16 @@ final class RoleSecurityIdentity implements SecurityIdentityInterface */ public function __construct($role) { + if (!is_string($role) && !($role instanceof RoleInterface)) { + throw new \InvalidArgumentException('$role must be a string or object implementing RoleInterface.'); + } if ($role instanceof RoleInterface) { $role = $role->getRole(); } - + if (empty($role)) { + throw new \InvalidArgumentException('$role must not be empty.'); + } + $this->role = $role; } From d624d1d516e36c15313f1426c33989c18ad7d861 Mon Sep 17 00:00:00 2001 From: Wim Vandersmissen Date: Fri, 3 Aug 2012 13:38:52 +0200 Subject: [PATCH 3/3] extra tests added --- .../Acl/Domain/RoleSecurityIdentityTest.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Security/Tests/Acl/Domain/RoleSecurityIdentityTest.php b/src/Symfony/Component/Security/Tests/Acl/Domain/RoleSecurityIdentityTest.php index 341f33ca48167..9da4129428d0c 100644 --- a/src/Symfony/Component/Security/Tests/Acl/Domain/RoleSecurityIdentityTest.php +++ b/src/Symfony/Component/Security/Tests/Acl/Domain/RoleSecurityIdentityTest.php @@ -30,7 +30,23 @@ public function testConstructorWithRoleInstance() $this->assertEquals('ROLE_FOO', $id->getRole()); } - + + /** + * @expectedException \InvalidArgumentException + */ + public function testInvalidParameterThrowsException() + { + $id = new RoleSecurityIdentity(0); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testEmptyParameterThrowsException() + { + $id = new RoleSecurityIdentity(''); + } + /** * @dataProvider getCompareData */