public function PrivateAccessTest::providerTestHasFieldAccess in Field Permissions 8
Same name and namespace in other branches
- 8.2 tests/src/Unit/Plugin/FieldPermissionType/PrivateAccessTest.php \Drupal\Tests\field_permissions\Unit\Plugin\FieldPermissionType\PrivateAccessTest::providerTestHasFieldAccess()
Data provider for ::testHasFieldAccess.
File
- tests/
src/ Unit/ Plugin/ FieldPermissionType/ PrivateAccessTest.php, line 54
Class
- PrivateAccessTest
- Tests the private access plugin.
Namespace
Drupal\Tests\field_permissions\Unit\Plugin\FieldPermissionTypeCode
public function providerTestHasFieldAccess() {
$cases = [];
// Has 'access private fields' permission.
$account = $this
->prophesize(AccountInterface::class);
$account
->hasPermission('access private fields')
->willReturn(TRUE);
$entity = $this
->prophesize(EntityInterface::class)
->reveal();
$cases[] = [
'view',
$entity,
$account
->reveal(),
TRUE,
];
$cases[] = [
'edit',
$entity,
$account
->reveal(),
TRUE,
];
// New entities always grant permission.
$account = $this
->prophesize(AccountInterface::class)
->reveal();
$entity = $this
->prophesize(EntityInterface::class);
$entity
->isNew()
->willReturn(TRUE);
$cases[] = [
'view',
$entity
->reveal(),
$account,
TRUE,
];
$cases[] = [
'edit',
$entity
->reveal(),
$account,
TRUE,
];
// Special handling for user entities.
// Account same as user entity.
$account = $this
->prophesize(AccountInterface::class);
$account
->id()
->willReturn(42);
$account
->hasPermission('access private fields')
->willReturn(FALSE);
$entity = $this
->prophesize(UserInterface::class);
$entity
->id()
->willReturn(42);
$entity
->isNew()
->willReturn(FALSE);
$cases[] = [
'view',
$entity
->reveal(),
$account
->reveal(),
TRUE,
];
$cases[] = [
'edit',
$entity
->reveal(),
$account
->reveal(),
TRUE,
];
// Different user than account will deny access.
$account = $this
->prophesize(AccountInterface::class);
$account
->id()
->willReturn(27);
$account
->hasPermission('access private fields')
->willReturn(FALSE);
$entity = $this
->prophesize(UserInterface::class);
$entity
->id()
->willReturn(42);
$entity
->isNew()
->willReturn(FALSE);
$cases[] = [
'view',
$entity
->reveal(),
$account
->reveal(),
FALSE,
];
$cases[] = [
'edit',
$entity
->reveal(),
$account
->reveal(),
FALSE,
];
// EntityOwnerInterface entities with access.
$account = $this
->prophesize(AccountInterface::class);
$account
->id()
->willReturn(42);
$account
->hasPermission('access private fields')
->willReturn(FALSE);
$entity = $this
->prophesize(EntityInterface::class)
->willImplement(EntityOwnerInterface::class);
$entity
->getOwnerId()
->willReturn(42);
$entity
->isNew()
->willReturn(FALSE);
$cases[] = [
'view',
$entity
->reveal(),
$account
->reveal(),
TRUE,
];
$cases[] = [
'edit',
$entity
->reveal(),
$account
->reveal(),
TRUE,
];
// EntityOwnerInterface entities without access.
$account = $this
->prophesize(AccountInterface::class);
$account
->id()
->willReturn(42);
$account
->hasPermission('access private fields')
->willReturn(FALSE);
$entity = $this
->prophesize(EntityInterface::class)
->willImplement(EntityOwnerInterface::class);
$entity
->getOwnerId()
->willReturn(27);
$entity
->isNew()
->willReturn(FALSE);
$cases[] = [
'view',
$entity
->reveal(),
$account
->reveal(),
FALSE,
];
$cases[] = [
'edit',
$entity
->reveal(),
$account
->reveal(),
FALSE,
];
// Non-user, or none owner interface entity should always have access.
$account = $this
->prophesize(AccountInterface::class)
->reveal();
$entity = $this
->prophesize(EntityInterface::class)
->reveal();
$cases[] = [
'view',
$entity,
$account,
TRUE,
];
$cases[] = [
'edit',
$entity,
$account,
TRUE,
];
return $cases;
}