3 namespace Drupal\Tests\permissions_by_term\Kernel;
5 use Drupal\permissions_by_term\Service\AccessStorage;
8 * Class AccessCheckTest
10 * @package Drupal\Tests\permissions_by_term\Kernel
11 * @group permissions_by_term
13 class AccessCheckTest extends PBTKernelTestBase {
18 protected function setUp() {
25 public function testDisabledSingleTermRestriction() {
26 $database = $this->container->get('database');
27 $database->truncate('node_access')->execute();
28 $this->createRelationOneGrantedTerm();
29 $this->createRelationAllGrantedTerms();
31 \Drupal::configFactory()->getEditable('permissions_by_term.settings.single_term_restriction')->set('value', FALSE)->save();
32 $this->assertTrue($this->accessCheck->canUserAccessByNodeId($this->getNidOneGrantedTerm()));
34 node_access_rebuild();
36 $gids = $this->accessStorage->getGids(\Drupal::service('current_user'));
38 $nodeAccess = $database->select('node_access', 'na')
39 ->fields('na', ['nid'])
40 ->condition('na.gid', $gids['permissions_by_term'], 'IN')
41 ->condition('na.realm', AccessStorage::NODE_ACCESS_REALM);
42 $permittedNids = $nodeAccess
46 $this->assertCount(2, $permittedNids);
52 public function testNoGrantedTermRestriction() {
53 $database = $this->container->get('database');
54 $database->truncate('node_access')->execute();
55 $this->createRelationNoGrantedTerm();
57 \Drupal::configFactory()->getEditable('permissions_by_term.settings.single_term_restriction')->set('value', FALSE)->save();
58 $this->assertFalse($this->accessCheck->canUserAccessByNodeId($this->getNidNoGrantedTerm()));
60 node_access_rebuild();
62 $gids = $this->accessStorage->getGids(\Drupal::service('current_user'));
64 $nodeAccess = $database->select('node_access', 'na')
65 ->fields('na', ['nid'])
66 ->condition('na.gid', $gids['permissions_by_term'], 'IN')
67 ->condition('na.realm', AccessStorage::NODE_ACCESS_REALM);
68 $permittedNids = $nodeAccess
72 $this->assertCount(0, $permittedNids);
78 public function testNoTermRestriction() {
79 $database = $this->container->get('database');
80 $database->truncate('node_access')->execute();
81 $this->createRelationNoTerms();
83 \Drupal::configFactory()->getEditable('permissions_by_term.settings.single_term_restriction')->set('value', FALSE)->save();
84 $this->assertTrue($this->accessCheck->canUserAccessByNodeId($this->getNidNoTerms()));
86 node_access_rebuild();
88 $gids = $this->accessStorage->getGids(\Drupal::service('current_user'));
90 $nodeAccess = $database->select('node_access', 'na')
91 ->fields('na', ['nid'])
92 ->condition('na.gid', $gids['permissions_by_term'], 'IN')
93 ->condition('na.realm', AccessStorage::NODE_ACCESS_REALM);
94 $permittedNids = $nodeAccess
98 $this->assertCount(1, $permittedNids);
104 public function testEnabledSingleTermRestriction() {
105 $database = $this->container->get('database');
106 $database->truncate('node_access')->execute();
107 $this->createRelationOneGrantedTerm();
108 $this->createRelationAllGrantedTerms();
110 \Drupal::configFactory()->getEditable('permissions_by_term.settings.single_term_restriction')->set('value', TRUE)->save();
111 $this->assertFalse($this->accessCheck->canUserAccessByNodeId($this->getNidOneGrantedTerm()));
113 node_access_rebuild();
115 $gids = $this->accessStorage->getGids(\Drupal::service('current_user'));
117 $nodeAccess = $database->select('node_access', 'na')
118 ->fields('na', ['nid'])
119 ->condition('na.gid', $gids['permissions_by_term'], 'IN')
120 ->condition('na.realm', AccessStorage::NODE_ACCESS_REALM);
121 $permittedNids = $nodeAccess
125 $this->assertCount(1, $permittedNids);