Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Security/Acl/Tests/Domain/DoctrineAclCacheTest.php
Строк: 138
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentSecurityAclTestsDomain;

use 
SymfonyComponentSecurityAclDomainUserSecurityIdentity;
use 
SymfonyComponentSecurityAclDomainObjectIdentity;
use 
SymfonyComponentSecurityAclDomainPermissionGrantingStrategy;
use 
SymfonyComponentSecurityAclDomainAcl;
use 
SymfonyComponentSecurityAclDomainDoctrineAclCache;
use 
DoctrineCommonCacheArrayCache;

class 
DoctrineAclCacheTest extends PHPUnit_Framework_TestCase
{
    protected 
$permissionGrantingStrategy;

    
/**
     * @expectedException InvalidArgumentException
     * @dataProvider getEmptyValue
     */
    
public function testConstructorDoesNotAcceptEmptyPrefix($empty)
    {
        new 
DoctrineAclCache(new ArrayCache(), $this->getPermissionGrantingStrategy(), $empty);
    }

    public function 
getEmptyValue()
    {
        return array(
            array(
null),
            array(
false),
            array(
''),
        );
    }

    public function 
test()
    {
        
$cache $this->getCache();

        
$aclWithParent $this->getAcl(1);
        
$acl $this->getAcl();

        
$cache->putInCache($aclWithParent);
        
$cache->putInCache($acl);

        
$cachedAcl $cache->getFromCacheByIdentity($acl->getObjectIdentity());
        
$this->assertEquals($acl->getId(), $cachedAcl->getId());
        
$this->assertNull($acl->getParentAcl());

        
$cachedAclWithParent $cache->getFromCacheByIdentity($aclWithParent->getObjectIdentity());
        
$this->assertEquals($aclWithParent->getId(), $cachedAclWithParent->getId());
        
$this->assertNotNull($cachedParentAcl $cachedAclWithParent->getParentAcl());
        
$this->assertEquals($aclWithParent->getParentAcl()->getId(), $cachedParentAcl->getId());
    }

    protected function 
getAcl($depth 0)
    {
        static 
$id 1;

        
$acl = new Acl($id, new ObjectIdentity($id'foo'), $this->getPermissionGrantingStrategy(), array(), $depth 0);

        
// insert some ACEs
        
$sid = new UserSecurityIdentity('johannes''Foo');
        
$acl->insertClassAce($sid1);
        
$acl->insertClassFieldAce('foo'$sid1);
        
$acl->insertObjectAce($sid1);
        
$acl->insertObjectFieldAce('foo'$sid1);
        
$id++;

        if (
$depth 0) {
            
$acl->setParentAcl($this->getAcl($depth 1));
        }

        return 
$acl;
    }

    protected function 
getPermissionGrantingStrategy()
    {
        if (
null === $this->permissionGrantingStrategy) {
            
$this->permissionGrantingStrategy = new PermissionGrantingStrategy();
        }

        return 
$this->permissionGrantingStrategy;
    }

    protected function 
getCache($cacheDriver null$prefix DoctrineAclCache::PREFIX)
    {
        if (
null === $cacheDriver) {
            
$cacheDriver = new ArrayCache();
        }

        return new 
DoctrineAclCache($cacheDriver$this->getPermissionGrantingStrategy(), $prefix);
    }
}
Онлайн: 2
Реклама