function NodeOperationAccessTest::testRevisionOperations

Same name and namespace in other branches
  1. 9 core/modules/node/tests/src/Unit/NodeOperationAccessTest.php \Drupal\Tests\node\Unit\NodeOperationAccessTest::testRevisionOperations()
  2. 10 core/modules/node/tests/src/Unit/NodeOperationAccessTest.php \Drupal\Tests\node\Unit\NodeOperationAccessTest::testRevisionOperations()

Tests revision operations.

@dataProvider providerTestRevisionOperations

Parameters

string $operation: A revision operation.

array $hasPermissionMap: A map of permissions, to whether they should be granted.

bool|null $assertAccess: Whether the access is allowed or denied.

bool|null $isDefaultRevision: Whether the node should be default revision, or NULL if not to expect it to be called.

File

core/modules/node/tests/src/Unit/NodeOperationAccessTest.php, line 60

Class

NodeOperationAccessTest
Tests node operations.

Namespace

Drupal\Tests\node\Unit

Code

public function testRevisionOperations($operation, array $hasPermissionMap, $assertAccess, $isDefaultRevision = NULL) : void {
  $account = $this->createMock(AccountInterface::class);
  $account->method('hasPermission')
    ->willReturnMap($hasPermissionMap);
  $entityType = $this->createMock(EntityTypeInterface::class);
  $grants = $this->createMock(NodeGrantDatabaseStorageInterface::class);
  $grants->expects($this->any())
    ->method('access')
    ->willReturn(AccessResult::neutral());
  $language = $this->createMock(LanguageInterface::class);
  $language->expects($this->any())
    ->method('getId')
    ->willReturn('de');
  $nid = 333;
  /** @var \Drupal\node\NodeInterface|\PHPUnit\Framework\MockObject\MockObject $node */
  $node = $this->createMock(NodeInterface::class);
  $node->expects($this->any())
    ->method('language')
    ->willReturn($language);
  $node->expects($this->any())
    ->method('id')
    ->willReturn($nid);
  $node->expects($this->any())
    ->method('getCacheContexts')
    ->willReturn([]);
  $node->expects($this->any())
    ->method('getCacheTags')
    ->willReturn([]);
  $node->expects($this->any())
    ->method('getCacheMaxAge')
    ->willReturn(-1);
  $node->expects($this->any())
    ->method('getEntityTypeId')
    ->willReturn('node');
  if (isset($isDefaultRevision)) {
    $node->expects($this->atLeastOnce())
      ->method('isDefaultRevision')
      ->willReturn($isDefaultRevision);
  }
  $nodeStorage = $this->createMock(NodeStorageInterface::class);
  $nodeStorage->expects($this->any())
    ->method('load')
    ->with($nid)
    ->willReturn($node);
  $entityTypeManager = $this->createMock(EntityTypeManagerInterface::class);
  $entityTypeManager->expects($this->any())
    ->method('getStorage')
    ->with('node')
    ->willReturn($nodeStorage);
  $moduleHandler = $this->createMock(ModuleHandlerInterface::class);
  $moduleHandler->expects($this->any())
    ->method('invokeAll')
    ->willReturn([]);
  $accessControl = new NodeAccessControlHandler($entityType, $grants, $entityTypeManager);
  $accessControl->setModuleHandler($moduleHandler);
  $access = $accessControl->access($node, $operation, $account, FALSE);
  $this->assertEquals($assertAccess, $access);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.