123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- <?php
- /*
- * This file is part of the Sonata Project package.
- *
- * (c) Thomas Rabaix <thomas.rabaix@sonata-project.org>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Sonata\AdminBundle\Tests\Util;
- use Sonata\AdminBundle\Util\AdminObjectAclData;
- /**
- * @author Kévin Dunglas <kevin@les-tilleuls.coop>
- */
- class AdminObjectAclDataTest extends \PHPUnit_Framework_TestCase
- {
- public function testGetAdmin()
- {
- $adminObjectAclData = $this->createAdminObjectAclData();
- $this->isInstanceOf('Sonata\AdminBundle\Admin\AdminInterface', $adminObjectAclData->getAdmin());
- }
- public function testGetObject()
- {
- $adminObjectAclData = $this->createAdminObjectAclData();
- $this->isInstanceOf('stdClass', $adminObjectAclData->getObject());
- }
- public function testGetAclUsers()
- {
- $adminObjectAclData = $this->createAdminObjectAclData();
- $this->assertInstanceOf('ArrayIterator', $adminObjectAclData->getAclUsers());
- }
- public function testGetAclRoles()
- {
- $adminObjectAclData = $this->createAdminObjectAclData();
- $this->assertInstanceOf('ArrayIterator', $adminObjectAclData->getAclRoles());
- }
- public function testSetAcl()
- {
- $acl = $this->getMockBuilder('Symfony\Component\Security\Acl\Domain\Acl')
- ->disableOriginalConstructor()
- ->getMock();
- $adminObjectAclData = $this->createAdminObjectAclData();
- $ret = $adminObjectAclData->setAcl($acl);
- $this->assertSame($adminObjectAclData, $ret);
- return $adminObjectAclData;
- }
- /**
- * @depends testSetAcl
- */
- public function testGetAcl($adminObjectAclData)
- {
- $this->isInstanceOf('Symfony\Component\Security\Acl\Domain\Acl', $adminObjectAclData->getAcl());
- }
- public function testGetMasks()
- {
- $adminObjectAclData = $this->createAdminObjectAclData();
- $this->assertInternalType('array', $adminObjectAclData->getMasks());
- foreach ($adminObjectAclData->getMasks() as $key => $mask) {
- $this->assertInternalType('string', $key);
- $this->assertInternalType('int', $mask);
- }
- }
- /**
- * @group legacy
- */
- public function testSetForm()
- {
- $form = $this->getMockBuilder('\Symfony\Component\Form\Form')
- ->disableOriginalConstructor()
- ->getMock();
- $adminObjectAclData = $this->createAdminObjectAclData();
- $ret = $adminObjectAclData->setAclUsersForm($form);
- $this->assertSame($adminObjectAclData, $ret);
- return $adminObjectAclData;
- }
- /**
- * @depends testSetForm
- *
- * @group legacy
- */
- public function testGetForm($adminObjectAclData)
- {
- $this->isInstanceOf('Symfony\Component\Form\Form', $adminObjectAclData->getAclUsersForm());
- }
- public function testSetAclUsersForm()
- {
- $form = $this->getMockBuilder('\Symfony\Component\Form\Form')
- ->disableOriginalConstructor()
- ->getMock();
- $adminObjectAclData = $this->createAdminObjectAclData();
- $ret = $adminObjectAclData->setAclUsersForm($form);
- $this->assertSame($adminObjectAclData, $ret);
- return $adminObjectAclData;
- }
- /**
- * @depends testSetAclUsersForm
- */
- public function testGetAclUsersForm($adminObjectAclData)
- {
- $this->isInstanceOf('Symfony\Component\Form\Form', $adminObjectAclData->getAclUsersForm());
- }
- public function testSetAclRolesForm()
- {
- $form = $this->getMockBuilder('\Symfony\Component\Form\Form')
- ->disableOriginalConstructor()
- ->getMock();
- $adminObjectAclData = $this->createAdminObjectAclData();
- $ret = $adminObjectAclData->setAclRolesForm($form);
- $this->assertSame($adminObjectAclData, $ret);
- return $adminObjectAclData;
- }
- /**
- * @depends testSetAclRolesForm
- */
- public function testGetAclRolesForm($adminObjectAclData)
- {
- $this->isInstanceOf('Symfony\Component\Form\Form', $adminObjectAclData->getAclRolesForm());
- }
- public function testGetPermissions()
- {
- $adminObjectAclData = $this->createAdminObjectAclData();
- $this->assertInternalType('array', $adminObjectAclData->getPermissions());
- foreach ($adminObjectAclData->getPermissions() as $permission) {
- $this->assertInternalType('string', $permission);
- }
- }
- public function testGetUserPermissions()
- {
- $adminObjectAclDataOwner = $this->createAdminObjectAclData();
- $this->assertInternalType('array', $adminObjectAclDataOwner->getUserPermissions());
- foreach ($adminObjectAclDataOwner->getUserPermissions() as $permission) {
- $this->assertInternalType('string', $permission);
- }
- $this->assertTrue(false !== array_search('OWNER', $adminObjectAclDataOwner->getUserPermissions()));
- $this->assertTrue(false !== array_search('MASTER', $adminObjectAclDataOwner->getUserPermissions()));
- $adminObjectAclData = $this->createAdminObjectAclData(false);
- $this->assertInternalType('array', $adminObjectAclData->getUserPermissions());
- foreach ($adminObjectAclData->getUserPermissions() as $permission) {
- $this->assertInternalType('string', $permission);
- }
- $this->assertFalse(array_search('OWNER', $adminObjectAclData->getUserPermissions()));
- $this->assertFalse(array_search('MASTER', $adminObjectAclData->getUserPermissions()));
- }
- public function testIsOwner()
- {
- $adminObjectAclDataOwner = $this->createAdminObjectAclData();
- $this->assertTrue($adminObjectAclDataOwner->isOwner());
- $adminObjectAclData = $this->createAdminObjectAclData(false);
- $this->assertFalse($adminObjectAclData->isOwner());
- }
- public function testGetSecurityHandler()
- {
- $adminObjectAclData = $this->createAdminObjectAclData();
- $this->isInstanceOf('Sonata\AdminBundle\Security\Handler\AclSecurityHandlerInterface', $adminObjectAclData->getSecurityHandler());
- }
- public function testGetSecurityInformation()
- {
- $adminObjectAclData = $this->createAdminObjectAclData();
- $this->assertSame(array(), $adminObjectAclData->getSecurityInformation());
- }
- protected static function createAclUsers()
- {
- return new \ArrayIterator();
- }
- protected static function createAclRoles()
- {
- return new \ArrayIterator();
- }
- protected function createAdminObjectAclData($isOwner = true)
- {
- return new AdminObjectAclData($this->createAdmin($isOwner), new \stdClass(), self::createAclUsers(), '\Symfony\Component\Security\Acl\Permission\MaskBuilder', self::createAclRoles());
- }
- protected function createAdmin($isOwner = true)
- {
- $securityHandler = $this->getMockForAbstractClass('Sonata\AdminBundle\Security\Handler\AclSecurityHandlerInterface');
- $securityHandler->expects($this->any())
- ->method('getObjectPermissions')
- ->will($this->returnValue(array('VIEW', 'EDIT', 'DELETE', 'UNDELETE', 'OPERATOR', 'MASTER', 'OWNER')))
- ;
- $securityHandler->expects($this->any())
- ->method('buildSecurityInformation')
- ->with($this->isInstanceOf('Sonata\AdminBundle\Admin\AdminInterface'))
- ->will($this->returnValue(array()))
- ;
- $admin = $this->getMockForAbstractClass('Sonata\AdminBundle\Admin\AdminInterface');
- $admin->expects($this->any())
- ->method('isGranted')
- ->will($this->returnValue($isOwner))
- ;
- $admin->expects($this->any())
- ->method('getSecurityHandler')
- ->will($this->returnValue($securityHandler))
- ;
- return $admin;
- }
- }
|