8915674862383c3a80398cdc9a2f5477ca826624
[yaffs-website] / web / core / modules / block_content / tests / src / Unit / Access / AccessGroupAndTest.php
1 <?php
2
3 namespace Drupal\Tests\block_content\Unit\Access;
4
5 use Drupal\block_content\Access\AccessGroupAnd;
6 use Drupal\Core\Access\AccessResult;
7 use Drupal\Core\Session\AccountInterface;
8 use Drupal\Tests\UnitTestCase;
9
10 /**
11  * Tests accessible groups.
12  *
13  * @group block_content
14  */
15 class AccessGroupAndTest extends UnitTestCase {
16
17   use AccessibleTestingTrait;
18
19   /**
20    * {@inheritdoc}
21    */
22   protected function setUp() {
23     parent::setUp();
24     $this->account = $this->prophesize(AccountInterface::class)->reveal();
25   }
26
27   /**
28    * @covers \Drupal\block_content\Access\AccessGroupAnd
29    */
30   public function testGroups() {
31     $allowedAccessible = $this->createAccessibleDouble(AccessResult::allowed());
32     $forbiddenAccessible = $this->createAccessibleDouble(AccessResult::forbidden());
33     $neutralAccessible = $this->createAccessibleDouble(AccessResult::neutral());
34
35     // Ensure that groups with no dependencies return a neutral access result.
36     $this->assertTrue((new AccessGroupAnd())->access('view', $this->account, TRUE)->isNeutral());
37
38     $andNeutral = new AccessGroupAnd();
39     $andNeutral->addDependency($allowedAccessible)->addDependency($neutralAccessible);
40     $this->assertTrue($andNeutral->access('view', $this->account, TRUE)->isNeutral());
41
42     $andForbidden = $andNeutral;
43     $andForbidden->addDependency($forbiddenAccessible);
44     $this->assertTrue($andForbidden->access('view', $this->account, TRUE)->isForbidden());
45
46     // Ensure that groups added to other groups works.
47     $andGroupsForbidden = new AccessGroupAnd();
48     $andGroupsForbidden->addDependency($andNeutral)->addDependency($andForbidden);
49     $this->assertTrue($andGroupsForbidden->access('view', $this->account, TRUE)->isForbidden());
50     // Ensure you can add a non-group accessible object.
51     $andGroupsForbidden->addDependency($allowedAccessible);
52     $this->assertTrue($andGroupsForbidden->access('view', $this->account, TRUE)->isForbidden());
53   }
54
55 }