Security update for permissions_by_term
[yaffs-website] / web / modules / contrib / permissions_by_term / tests / src / Kernel / AccessCheckTest.php
1 <?php
2
3 namespace Drupal\Tests\permissions_by_term\Kernel;
4
5 use Drupal\permissions_by_term\Service\AccessStorage;
6
7 /**
8  * Class AccessCheckTest
9  *
10  * @package Drupal\Tests\permissions_by_term\Kernel
11  * @group permissions_by_term
12  */
13 class AccessCheckTest extends PBTKernelTestBase {
14
15   /**
16    * {@inheritdoc}
17    */
18   protected function setUp() {
19     parent::setUp();
20   }
21
22   /**
23    * @return void
24    */
25   public function testDisabledSingleTermRestriction() {
26     $database = $this->container->get('database');
27     $database->truncate('node_access')->execute();
28     $this->createRelationOneGrantedTerm();
29     $this->createRelationAllGrantedTerms();
30
31     \Drupal::configFactory()->getEditable('permissions_by_term.settings.single_term_restriction')->set('value', FALSE)->save();
32     $this->assertTrue($this->accessCheck->canUserAccessByNodeId($this->getNidOneGrantedTerm()));
33
34     node_access_rebuild();
35
36     $gids = $this->accessStorage->getGids(\Drupal::service('current_user'));
37
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
43       ->execute()
44       ->fetchCol();
45
46     $this->assertCount(2, $permittedNids);
47   }
48
49   /**
50    * @return void
51    */
52   public function testNoGrantedTermRestriction() {
53     $database = $this->container->get('database');
54     $database->truncate('node_access')->execute();
55     $this->createRelationNoGrantedTerm();
56
57     \Drupal::configFactory()->getEditable('permissions_by_term.settings.single_term_restriction')->set('value', FALSE)->save();
58     $this->assertFalse($this->accessCheck->canUserAccessByNodeId($this->getNidNoGrantedTerm()));
59
60     node_access_rebuild();
61
62     $gids = $this->accessStorage->getGids(\Drupal::service('current_user'));
63
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
69       ->execute()
70       ->fetchCol();
71
72     $this->assertCount(0, $permittedNids);
73   }
74
75   /**
76    * @return void
77    */
78   public function testNoTermRestriction() {
79     $database = $this->container->get('database');
80     $database->truncate('node_access')->execute();
81     $this->createRelationNoTerms();
82
83     \Drupal::configFactory()->getEditable('permissions_by_term.settings.single_term_restriction')->set('value', FALSE)->save();
84     $this->assertTrue($this->accessCheck->canUserAccessByNodeId($this->getNidNoTerms()));
85
86     node_access_rebuild();
87
88     $gids = $this->accessStorage->getGids(\Drupal::service('current_user'));
89
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
95       ->execute()
96       ->fetchCol();
97
98     $this->assertCount(1, $permittedNids);
99   }
100
101   /**
102    * @return void
103    */
104   public function testEnabledSingleTermRestriction() {
105     $database = $this->container->get('database');
106     $database->truncate('node_access')->execute();
107     $this->createRelationOneGrantedTerm();
108     $this->createRelationAllGrantedTerms();
109
110     \Drupal::configFactory()->getEditable('permissions_by_term.settings.single_term_restriction')->set('value', TRUE)->save();
111     $this->assertFalse($this->accessCheck->canUserAccessByNodeId($this->getNidOneGrantedTerm()));
112
113     node_access_rebuild();
114
115     $gids = $this->accessStorage->getGids(\Drupal::service('current_user'));
116
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
122       ->execute()
123       ->fetchCol();
124
125     $this->assertCount(1, $permittedNids);
126   }
127
128 }