function RefinableCalculatedPermissionsTest::testAddItem

Same name and namespace in other branches
  1. 11.x core/tests/Drupal/Tests/Core/Session/RefinableCalculatedPermissionsTest.php \Drupal\Tests\Core\Session\RefinableCalculatedPermissionsTest::testAddItem()

Tests the addition of a calculated permissions item.

File

core/tests/Drupal/Tests/Core/Session/RefinableCalculatedPermissionsTest.php, line 26

Class

RefinableCalculatedPermissionsTest
Tests the RefinableCalculatedPermissions class.

Namespace

Drupal\Tests\Core\Session

Code

public function testAddItem() : void {
  $calculated_permissions = new RefinableCalculatedPermissions();
  $scope = 'some_scope';
  $item = new CalculatedPermissionsItem([
    'bar',
  ], FALSE, $scope, 'foo');
  $calculated_permissions->addItem($item);
  $this->assertSame($item, $calculated_permissions->getItem($scope, 'foo'), 'Managed to retrieve the calculated permissions item.');
  $item = new CalculatedPermissionsItem([
    'baz',
  ], FALSE, $scope, 'foo');
  $calculated_permissions->addItem($item);
  $this->assertEquals([
    'bar',
    'baz',
  ], $calculated_permissions->getItem($scope, 'foo')
    ->getPermissions(), 'Adding a calculated permissions item that was already in the list merges them.');
  $item = new CalculatedPermissionsItem([
    'cat',
  ], TRUE, $scope, 'foo');
  $calculated_permissions->addItem($item);
  $this->assertEquals([], $calculated_permissions->getItem($scope, 'foo')
    ->getPermissions(), 'Merging in a calculated permissions item with admin rights empties the permissions.');
  $this->assertTrue($calculated_permissions->getItem($scope, 'foo')
    ->isAdmin(), 'Merging in a calculated permissions item with admin rights flags the result as having admin rights.');
}

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