public function CustomAccessTest::providerTestHasFieldAccess in Field Permissions 8
Same name and namespace in other branches
- 8.2 tests/src/Unit/Plugin/FieldPermissionType/CustomAccessTest.php \Drupal\Tests\field_permissions\Unit\Plugin\FieldPermissionType\CustomAccessTest::providerTestHasFieldAccess()
Data provider for ::testHasFieldAccess.
File
- tests/
src/ Unit/ Plugin/ FieldPermissionType/ CustomAccessTest.php, line 68
Class
- CustomAccessTest
- Tests for the custom access permission type plugin.
Namespace
Drupal\Tests\field_permissions\Unit\Plugin\FieldPermissionTypeCode
public function providerTestHasFieldAccess() {
$cases = [];
// Create access allowed.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission('create foo_field')
->willReturn(TRUE);
$entity = $this
->prophesize(EntityInterface::class);
$entity
->isNew()
->willReturn(TRUE);
$cases[] = [
'edit',
$entity
->reveal(),
$account
->reveal(),
TRUE,
];
// Create access denied.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission('create foo_field')
->willReturn(FALSE);
$cases[] = [
'edit',
$entity
->reveal(),
$account
->reveal(),
FALSE,
];
// Add edit and view.
foreach ([
'edit',
'view',
] as $operation) {
// Edit|view access allowed.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission($operation . ' foo_field')
->willReturn(TRUE);
$entity = $this
->prophesize(EntityInterface::class);
$cases[] = [
$operation,
$entity
->reveal(),
$account
->reveal(),
TRUE,
];
// Edit|view access denied.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission($operation . ' foo_field')
->willReturn(FALSE);
$entity = $this
->prophesize(EntityInterface::class);
$cases[] = [
$operation,
$entity
->reveal(),
$account
->reveal(),
FALSE,
];
// User entity, edit|view own allowed.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission($operation . ' foo_field')
->willReturn(FALSE);
$account
->hasPermission($operation . ' own foo_field')
->willReturn(TRUE);
$account
->id()
->willReturn(42);
$entity = $this
->prophesize(UserInterface::class);
$entity
->id()
->willReturn(42);
$entity
->isNew()
->willReturn(FALSE);
$cases[] = [
$operation,
$entity
->reveal(),
$account
->reveal(),
TRUE,
];
// User entity, edit|view own denied.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission($operation . ' foo_field')
->willReturn(FALSE);
$account
->hasPermission($operation . ' own foo_field')
->willReturn(FALSE);
$account
->id()
->willReturn(42);
$entity = $this
->prophesize(UserInterface::class);
$entity
->id()
->willReturn(42);
$entity
->isNew()
->willReturn(FALSE);
$cases[] = [
$operation,
$entity
->reveal(),
$account
->reveal(),
FALSE,
];
// User entity, edit|view own allowed, non-matching entity.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission($operation . ' foo_field')
->willReturn(FALSE);
$account
->hasPermission($operation . ' own foo_field')
->willReturn(TRUE);
$account
->id()
->willReturn(42);
$entity = $this
->prophesize(UserInterface::class);
$entity
->id()
->willReturn(27);
$entity
->isNew()
->willReturn(FALSE);
$cases[] = [
$operation,
$entity
->reveal(),
$account
->reveal(),
FALSE,
];
// Entity implementing EntityOwnerInterface, edit|view own allowed.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission($operation . ' foo_field')
->willReturn(FALSE);
$account
->hasPermission($operation . ' own foo_field')
->willReturn(TRUE);
$account
->id()
->willReturn(42);
$entity = $this
->prophesize(EntityInterface::class);
$entity
->willImplement(EntityOwnerInterface::class);
$entity
->getOwnerId()
->willReturn(42);
$entity
->isNew()
->willReturn(FALSE);
$cases[] = [
$operation,
$entity
->reveal(),
$account
->reveal(),
TRUE,
];
// Entity implementing EntityOwnerInterface, edit|view own denied.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission($operation . ' foo_field')
->willReturn(FALSE);
$account
->hasPermission($operation . ' own foo_field')
->willReturn(FALSE);
$account
->id()
->willReturn(42);
$entity = $this
->prophesize(EntityInterface::class);
$entity
->willImplement(EntityOwnerInterface::class);
$entity
->getOwnerId()
->willReturn(42);
$entity
->isNew()
->willReturn(FALSE);
$cases[] = [
$operation,
$entity
->reveal(),
$account
->reveal(),
FALSE,
];
// Entity implementing EntityOwnerInterface, edit|view own allowed, but
// non-matching entity owner.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission($operation . ' foo_field')
->willReturn(FALSE);
$account
->hasPermission($operation . ' own foo_field')
->willReturn(TRUE);
$account
->id()
->willReturn(27);
$entity = $this
->prophesize(EntityInterface::class);
$entity
->willImplement(EntityOwnerInterface::class);
$entity
->getOwnerId()
->willReturn(42);
$entity
->isNew()
->willReturn(FALSE);
$cases[] = [
$operation,
$entity
->reveal(),
$account
->reveal(),
FALSE,
];
}
return $cases;
}