public function BlockContentAccessHandlerTest::testAccess in Drupal 8
Same name and namespace in other branches
- 9 core/modules/block_content/tests/src/Kernel/BlockContentAccessHandlerTest.php \Drupal\Tests\block_content\Kernel\BlockContentAccessHandlerTest::testAccess()
- 10 core/modules/block_content/tests/src/Kernel/BlockContentAccessHandlerTest.php \Drupal\Tests\block_content\Kernel\BlockContentAccessHandlerTest::testAccess()
@covers ::checkAccess
@dataProvider providerTestAccess
File
- core/
modules/ block_content/ tests/ src/ Kernel/ BlockContentAccessHandlerTest.php, line 96
Class
- BlockContentAccessHandlerTest
- Tests the block content entity access handler.
Namespace
Drupal\Tests\block_content\KernelCode
public function testAccess($operation, $published, $reusable, $permissions, $parent_access, $expected_access) {
$published ? $this->blockEntity
->setPublished() : $this->blockEntity
->setUnpublished();
$reusable ? $this->blockEntity
->setReusable() : $this->blockEntity
->setNonReusable();
$user = User::create([
'name' => 'Someone',
'mail' => 'hi@example.com',
]);
if ($permissions) {
foreach ($permissions as $permission) {
$this->role
->grantPermission($permission);
}
$this->role
->save();
}
$user
->addRole($this->role
->id());
$user
->save();
if ($parent_access) {
$parent_entity = $this
->prophesize(AccessibleInterface::class);
$expected_parent_result = NULL;
switch ($parent_access) {
case 'allowed':
$expected_parent_result = AccessResult::allowed();
break;
case 'neutral':
$expected_parent_result = AccessResult::neutral();
break;
case 'forbidden':
$expected_parent_result = AccessResult::forbidden();
break;
}
$parent_entity
->access($operation, $user, TRUE)
->willReturn($expected_parent_result)
->shouldBeCalled();
$this->blockEntity
->setAccessDependency($parent_entity
->reveal());
}
$this->blockEntity
->save();
$result = $this->accessControlHandler
->access($this->blockEntity, $operation, $user, TRUE);
switch ($expected_access) {
case 'allowed':
$this
->assertTrue($result
->isAllowed());
break;
case 'forbidden':
$this
->assertTrue($result
->isForbidden());
break;
case 'neutral':
$this
->assertTrue($result
->isNeutral());
break;
default:
$this
->fail('Unexpected access type');
}
}