function AccessGroupAndTest::testGroups

Same name in other branches
  1. 9 core/modules/block_content/tests/src/Unit/Access/AccessGroupAndTest.php \Drupal\Tests\block_content\Unit\Access\AccessGroupAndTest::testGroups()
  2. 8.9.x core/modules/block_content/tests/src/Unit/Access/AccessGroupAndTest.php \Drupal\Tests\block_content\Unit\Access\AccessGroupAndTest::testGroups()
  3. 11.x 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 32

Class

AccessGroupAndTest
Tests accessible groups.

Namespace

Drupal\Tests\block_content\Unit\Access

Code

public function testGroups() : void {
    $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());
}

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