public function EntityAccessComplexTest::testNonMemberViewAnyPublishedAccess in Group 2.0.x
Same name and namespace in other branches
- 8 tests/src/Kernel/EntityAccessComplexTest.php \Drupal\Tests\group\Kernel\EntityAccessComplexTest::testNonMemberViewAnyPublishedAccess()
Tests the viewing of any published grouped entities for non-members.
File
- tests/src/ Kernel/ EntityAccessComplexTest.php, line 214 
Class
- EntityAccessComplexTest
- Tests that Group properly checks access for "complex" grouped entities.
Namespace
Drupal\Tests\group\KernelCode
public function testNonMemberViewAnyPublishedAccess() {
  $account = $this
    ->createUser([], $this->permissions);
  $node_1 = $this
    ->createNode([
    'type' => 'page',
  ]);
  $node_2 = $this
    ->createNode([
    'type' => 'page',
  ]);
  $node_3 = $this
    ->createNode([
    'type' => 'page',
  ]);
  // Sanity check: Verify that we don't touch unpublished nodes.
  $node_4 = $this
    ->createNode([
    'type' => 'page',
    'status' => 0,
  ]);
  $group_a = $this
    ->createGroup([
    'type' => $this->groupTypeA
      ->id(),
  ]);
  $group_a
    ->addContent($node_1, 'node_as_content:page');
  $group_a
    ->addContent($node_4, 'node_as_content:page');
  $group_a
    ->addMember($account);
  $group_b = $this
    ->createGroup([
    'type' => $this->groupTypeB
      ->id(),
  ]);
  $group_b
    ->addContent($node_2, 'node_as_content:page');
  $group_b
    ->addMember($account);
  $this
    ->assertFalse($this->accessControlHandler
    ->access($node_1, 'view'), 'Non-members cannot see any published grouped nodes without permission.');
  $this
    ->assertFalse($this->accessControlHandler
    ->access($node_2, 'view'), 'Non-members cannot see any published grouped nodes without permission.');
  $this
    ->assertTrue($this->accessControlHandler
    ->access($node_3, 'view'), 'The published node can be viewed.');
  $this
    ->assertFalse($this->accessControlHandler
    ->access($node_4, 'view'), 'The unpublished grouped node cannot be viewed.');
  $this->groupTypeA
    ->getOutsiderRole()
    ->grantPermission('view any node_as_content:page entity')
    ->save();
  $this->groupTypeB
    ->getOutsiderRole()
    ->grantPermission('view any node_as_content:page entity')
    ->save();
  $this->accessControlHandler
    ->resetCache();
  $this
    ->assertTrue($this->accessControlHandler
    ->access($node_1, 'view'), 'Non-members can see any published grouped nodes.');
  $this
    ->assertTrue($this->accessControlHandler
    ->access($node_2, 'view'), 'Non-members can see any published grouped nodes.');
  $this
    ->assertTrue($this->accessControlHandler
    ->access($node_3, 'view'), 'The published node can be viewed.');
  $this
    ->assertFalse($this->accessControlHandler
    ->access($node_4, 'view'), 'The unpublished grouped node cannot be viewed.');
  $this
    ->setCurrentUser($this
    ->createUser([], $this->permissions));
  $this
    ->assertTrue($this->accessControlHandler
    ->access($node_1, 'view'), 'Non-members can see any published grouped nodes.');
  $this
    ->assertTrue($this->accessControlHandler
    ->access($node_2, 'view'), 'Non-members can see any published grouped nodes.');
  $this
    ->assertTrue($this->accessControlHandler
    ->access($node_3, 'view'), 'The published node can be viewed.');
  $this
    ->assertFalse($this->accessControlHandler
    ->access($node_4, 'view'), 'The unpublished grouped node cannot be viewed.');
  $this
    ->setCurrentUser($account);
  $this
    ->assertFalse($this->accessControlHandler
    ->access($node_1, 'view'), 'Members cannot see published grouped nodes.');
  $this
    ->assertFalse($this->accessControlHandler
    ->access($node_2, 'view'), 'Members cannot see published grouped nodes.');
  $this
    ->assertTrue($this->accessControlHandler
    ->access($node_3, 'view'), 'The published node can be viewed.');
  $this
    ->assertFalse($this->accessControlHandler
    ->access($node_4, 'view'), 'The unpublished grouped node cannot be viewed.');
}