class PermissionCheckerTest

Same name and namespace in other branches
  1. 10 core/tests/Drupal/Tests/Core/Session/PermissionCheckerTest.php \Drupal\Tests\Core\Session\PermissionCheckerTest

@coversDefaultClass \Drupal\Core\Session\PermissionChecker
@group Session

Hierarchy

Expanded class hierarchy of PermissionCheckerTest

File

core/tests/Drupal/Tests/Core/Session/PermissionCheckerTest.php, line 19

Namespace

Drupal\Tests\Core\Session
View source
class PermissionCheckerTest extends UnitTestCase {
  
  /**
   * The permission checker to run tests on.
   *
   * @var \Drupal\Core\Session\PermissionChecker
   */
  protected $checker;
  
  /**
   * The mocked access policy processor.
   *
   * @var \Drupal\Core\Session\AccessPolicyProcessorInterface|\Prophecy\Prophecy\ObjectProphecy
   */
  protected $processor;
  
  /**
   * The mocked account to use for testing.
   *
   * @var \Drupal\Core\Session\AccountInterface
   */
  protected $account;
  
  /**
   * {@inheritdoc}
   */
  protected function setUp() : void {
    parent::setUp();
    $this->processor = $this->prophesize(AccessPolicyProcessorInterface::class);
    $this->checker = new PermissionChecker($this->processor
      ->reveal());
    $this->account = $this->prophesize(AccountInterface::class)
      ->reveal();
  }
  
  /**
   * Tests the hasPermission method under normal circumstances.
   */
  public function testHasPermission() : void {
    $calculated_permissions = new CalculatedPermissions((new RefinableCalculatedPermissions())->addItem(new CalculatedPermissionsItem([
      'foo',
    ])));
    $this->processor
      ->processAccessPolicies($this->account)
      ->willReturn($calculated_permissions);
    $this->assertTrue($this->checker
      ->hasPermission('foo', $this->account));
    $this->assertFalse($this->checker
      ->hasPermission('bar', $this->account));
  }
  
  /**
   * Tests the hasPermission method when no policy added something.
   */
  public function testHasPermissionEmpty() : void {
    $calculated_permissions = new CalculatedPermissions(new RefinableCalculatedPermissions());
    $this->processor
      ->processAccessPolicies($this->account)
      ->willReturn($calculated_permissions);
    $this->assertFalse($this->checker
      ->hasPermission('foo', $this->account));
    $this->assertFalse($this->checker
      ->hasPermission('bar', $this->account));
  }
  
  /**
   * Tests the hasPermission method when mixed scopes and identifiers exist.
   */
  public function testHasPermissionMixed() : void {
    $calculated_permissions = new CalculatedPermissions((new RefinableCalculatedPermissions())->addItem(new CalculatedPermissionsItem([
      'foo',
    ]))
      ->addItem(new CalculatedPermissionsItem([
      'bar',
    ], identifier: 'other-identifier'))
      ->addItem(new CalculatedPermissionsItem([
      'baz',
    ], FALSE, 'other-scope', 'other-identifier')));
    $this->processor
      ->processAccessPolicies($this->account)
      ->willReturn($calculated_permissions);
    $this->assertTrue($this->checker
      ->hasPermission('foo', $this->account));
    $this->assertFalse($this->checker
      ->hasPermission('bar', $this->account));
    $this->assertFalse($this->checker
      ->hasPermission('baz', $this->account));
  }
  
  /**
   * Tests the hasPermission method with only contrib scopes and identifiers.
   */
  public function testHasPermissionOnlyContrib() : void {
    $calculated_permissions = new CalculatedPermissions((new RefinableCalculatedPermissions())->addItem(new CalculatedPermissionsItem([
      'baz',
    ], FALSE, 'other-scope', 'other-identifier')));
    $this->processor
      ->processAccessPolicies($this->account)
      ->willReturn($calculated_permissions);
    $this->assertFalse($this->checker
      ->hasPermission('foo', $this->account));
    $this->assertFalse($this->checker
      ->hasPermission('bar', $this->account));
    $this->assertFalse($this->checker
      ->hasPermission('baz', $this->account));
  }

}

Members

Title Sort descending Modifiers Object type Summary
ExpectDeprecationTrait::expectDeprecation public function Adds an expected deprecation.
ExpectDeprecationTrait::setUpErrorHandler public function Sets up the test error handler.
ExpectDeprecationTrait::tearDownErrorHandler public function Tears down the test error handler.
PermissionCheckerTest::$account protected property The mocked account to use for testing.
PermissionCheckerTest::$checker protected property The permission checker to run tests on.
PermissionCheckerTest::$processor protected property The mocked access policy processor.
PermissionCheckerTest::setUp protected function
PermissionCheckerTest::testHasPermission public function Tests the hasPermission method under normal circumstances.
PermissionCheckerTest::testHasPermissionEmpty public function Tests the hasPermission method when no policy added something.
PermissionCheckerTest::testHasPermissionMixed public function Tests the hasPermission method when mixed scopes and identifiers exist.
PermissionCheckerTest::testHasPermissionOnlyContrib public function Tests the hasPermission method with only contrib scopes and identifiers.

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