View source
<?php
namespace Drupal\Tests\feeds\Unit;
use Drupal\Core\Cache\Context\CacheContextsManager;
use Drupal\Core\DependencyInjection\Container;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\feeds\FeedTypeAccessControlHandler;
use Drupal\feeds\FeedTypeInterface;
class FeedTypeAccessControlHandlerTest extends FeedsUnitTestCase {
public function setUp() {
parent::setUp();
$cache_contexts_manager = $this
->prophesize(CacheContextsManager::class);
$cache_contexts_manager
->assertValidTokens()
->willReturn(TRUE);
$cache_contexts_manager
->reveal();
$container = new Container();
$container
->set('cache_contexts_manager', $cache_contexts_manager);
\Drupal::setContainer($container);
$this->entity = $this
->prophesize(FeedTypeInterface::class);
$this->account = $this
->prophesize(AccountInterface::class);
$this->account
->hasPermission('administer feeds')
->willReturn(TRUE);
$entity_type = $this
->prophesize(EntityTypeInterface::class);
$entity_type
->getAdminPermission()
->willReturn('administer feeds');
$entity_type
->id()
->willReturn('feed_type');
$this->controller = new FeedTypeAccessControlHandler($entity_type
->reveal());
}
public function testCheckAccess() {
$method = $this
->getMethod(FeedTypeAccessControlHandler::class, 'checkAccess');
$result = $method
->invokeArgs($this->controller, [
$this->entity
->reveal(),
'view',
$this->account
->reveal(),
]);
$this
->assertTrue($result
->isAllowed());
$result = $method
->invokeArgs($this->controller, [
$this->entity
->reveal(),
'delete',
$this->account
->reveal(),
]);
$this
->assertTrue($result
->isAllowed());
$this->entity
->getCacheContexts()
->willReturn([]);
$this->entity
->getCacheTags()
->willReturn([]);
$this->entity
->getCacheMaxAge()
->willReturn(0);
$this->entity
->isLocked()
->willReturn(TRUE);
$this->entity
->isNew()
->willReturn(FALSE);
$result = $method
->invokeArgs($this->controller, [
$this->entity
->reveal(),
'delete',
$this->account
->reveal(),
]);
$this
->assertFalse($result
->isAllowed());
$this->account
->hasPermission('administer feeds')
->willReturn(FALSE);
$result = $method
->invokeArgs($this->controller, [
$this->entity
->reveal(),
'delete',
$this->account
->reveal(),
]);
$this
->assertFalse($result
->isAllowed());
$result = $method
->invokeArgs($this->controller, [
$this->entity
->reveal(),
'view',
$this->account
->reveal(),
]);
$this
->assertFalse($result
->isAllowed());
$this->entity
->isNew()
->willReturn(TRUE);
$result = $method
->invokeArgs($this->controller, [
$this->entity
->reveal(),
'delete',
$this->account
->reveal(),
]);
$this
->assertFalse($result
->isAllowed());
}
}