You are here

public function AccessGroupAndTest::testGroups in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/block_content/tests/src/Unit/Access/AccessGroupAndTest.php \Drupal\Tests\block_content\Unit\Access\AccessGroupAndTest::testGroups()
  2. 9 core/modules/block_content/tests/src/Unit/Access/AccessGroupAndTest.php \Drupal\Tests\block_content\Unit\Access\AccessGroupAndTest::testGroups()

@covers \Drupal\block_content\Access\AccessGroupAnd

File

core/modules/block_content/tests/src/Unit/Access/AccessGroupAndTest.php, line 30

Class

AccessGroupAndTest
Tests accessible groups.

Namespace

Drupal\Tests\block_content\Unit\Access

Code

public function testGroups() {
  $allowedAccessible = $this
    ->createAccessibleDouble(AccessResult::allowed());
  $forbiddenAccessible = $this
    ->createAccessibleDouble(AccessResult::forbidden());
  $neutralAccessible = $this
    ->createAccessibleDouble(AccessResult::neutral());

  // Ensure that groups with no dependencies return a neutral access result.
  $this
    ->assertTrue((new AccessGroupAnd())
    ->access('view', $this->account, TRUE)
    ->isNeutral());
  $andNeutral = new AccessGroupAnd();
  $andNeutral
    ->addDependency($allowedAccessible)
    ->addDependency($neutralAccessible);
  $this
    ->assertTrue($andNeutral
    ->access('view', $this->account, TRUE)
    ->isNeutral());
  $andForbidden = $andNeutral;
  $andForbidden
    ->addDependency($forbiddenAccessible);
  $this
    ->assertTrue($andForbidden
    ->access('view', $this->account, TRUE)
    ->isForbidden());

  // Ensure that groups added to other groups works.
  $andGroupsForbidden = new AccessGroupAnd();
  $andGroupsForbidden
    ->addDependency($andNeutral)
    ->addDependency($andForbidden);
  $this
    ->assertTrue($andGroupsForbidden
    ->access('view', $this->account, TRUE)
    ->isForbidden());

  // Ensure you can add a non-group accessible object.
  $andGroupsForbidden
    ->addDependency($allowedAccessible);
  $this
    ->assertTrue($andGroupsForbidden
    ->access('view', $this->account, TRUE)
    ->isForbidden());
}