X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fpermissions_by_term%2Ftests%2Fsrc%2FKernel%2FPBTKernelTestBase.php;fp=web%2Fmodules%2Fcontrib%2Fpermissions_by_term%2Ftests%2Fsrc%2FKernel%2FPBTKernelTestBase.php;h=dee41346f99b19d01c2c0977685a1aba3c779558;hp=0000000000000000000000000000000000000000;hb=1270d9129ce8f27c9b28b10518e32132c58e0aca;hpb=c27c0f0cdaa3f354b1fe54a56ae7e854be6e3f68 diff --git a/web/modules/contrib/permissions_by_term/tests/src/Kernel/PBTKernelTestBase.php b/web/modules/contrib/permissions_by_term/tests/src/Kernel/PBTKernelTestBase.php new file mode 100644 index 000000000..dee41346f --- /dev/null +++ b/web/modules/contrib/permissions_by_term/tests/src/Kernel/PBTKernelTestBase.php @@ -0,0 +1,318 @@ +installEntitySchema('user'); + $this->installSchema('system', ['key_value_expire', 'sequences']); + $this->installEntitySchema('node'); + $this->installEntitySchema('taxonomy_term'); + $this->installConfig(['permissions_by_term']); + $this->installSchema('node', 'node_access'); + $this->installSchema('permissions_by_term', 'permissions_by_term_user'); + $this->installSchema('permissions_by_term', 'permissions_by_term_role'); + $this->accessStorage = $this->container->get('permissions_by_term.access_storage'); + $this->accessCheck = $this->container->get('permissions_by_term.access_check'); + \Drupal::configFactory()->getEditable('taxonomy.settings')->set('maintain_index_table', TRUE)->save(); + $this->createTestVocabulary(); + $this->createPageNodeType(); + $this->createCurrentUser(); + } + + protected function createTestVocabulary() { + Vocabulary::create([ + 'name' => 'test', + 'vid' => 'test', + ])->save(); + } + + protected function createPageNodeType() { + NodeType::create([ + 'type' => 'page', + ])->save(); + FieldStorageConfig::create([ + 'entity_type' => 'node', + 'field_name' => 'field_tags', + 'type' => 'entity_reference', + 'settings' => [ + 'target_type' => 'taxonomy_term', + ], + 'cardinality' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED, + ])->save(); + + FieldConfig::create([ + 'field_name' => 'field_tags', + 'entity_type' => 'node', + 'bundle' => 'page', + ])->save(); + } + + protected function createCurrentUser() { + $testUser = User::create([ + 'uid' => 2, + 'name' => 'foobar', + 'mail' => 'foobar@example.com', + ]); + + $testUser->save(); + \Drupal::service('current_user')->setAccount($testUser); + } + + /** + * @return int + */ + protected function createRelationOneGrantedTerm() { + $term = Term::create([ + 'name' => 'term1', + 'vid' => 'test', + ]); + $term->save(); + $tids[] = $term->id(); + + $this->accessStorage->addTermPermissionsByUserIds([\Drupal::service('current_user')->id()], $term->id()); + + $term = Term::create([ + 'name' => 'term2', + 'vid' => 'test', + ]); + $term->save(); + $tids[] = $term->id(); + + $this->accessStorage->addTermPermissionsByUserIds([99], $term->id()); + + $node = Node::create([ + 'type' => 'page', + 'title' => 'test_title', + 'field_tags' => [ + [ + 'target_id' => $tids[0] + ], + [ + 'target_id' => $tids[1] + ], + ] + ]); + $node->save(); + $this->setNidOneGrantedTerm($node->id()); + } + + /** + * @return int + */ + protected function createRelationNoGrantedTerm() { + $term = Term::create([ + 'name' => 'term2', + 'vid' => 'test', + ]); + $term->save(); + $tids[] = $term->id(); + + $this->accessStorage->addTermPermissionsByUserIds([1], $term->id()); + + $node = Node::create([ + 'type' => 'page', + 'title' => 'test_title', + 'field_tags' => [ + [ + 'target_id' => $tids[0] + ], + ] + ]); + $node->save(); + $this->setNidNoGrantedTerm($node->id()); + } + + protected function createRelationAllGrantedTerms() { + $term = Term::create([ + 'name' => 'term1', + 'vid' => 'test', + ]); + $term->save(); + $tids[] = $term->id(); + + $this->accessStorage->addTermPermissionsByUserIds([\Drupal::service('current_user')->id()], $term->id()); + + $term = Term::create([ + 'name' => 'term2', + 'vid' => 'test', + ]); + $term->save(); + $tids[] = $term->id(); + + $this->accessStorage->addTermPermissionsByUserIds([\Drupal::service('current_user')->id()], $term->id()); + + $node = Node::create([ + 'type' => 'page', + 'title' => 'test_title', + 'field_tags' => [ + [ + 'target_id' => $tids[0] + ], + [ + 'target_id' => $tids[1] + ], + ] + ]); + $node->save(); + $this->setNidAllGrantedTerms($node->id()); + } + + protected function createRelationNoTerms() { + $term = Term::create([ + 'name' => 'term1', + 'vid' => 'test', + ]); + $term->save(); + $tids[] = $term->id(); + + $this->accessStorage->addTermPermissionsByUserIds([\Drupal::service('current_user')->id()], $term->id()); + + $term = Term::create([ + 'name' => 'term2', + 'vid' => 'test', + ]); + $term->save(); + $tids[] = $term->id(); + + $this->accessStorage->addTermPermissionsByUserIds([\Drupal::service('current_user')->id()], $term->id()); + + $node = Node::create([ + 'type' => 'page', + 'title' => 'test_title', + 'field_tags' => [ + [ + 'target_id' => $tids[0] + ], + [ + 'target_id' => $tids[1] + ], + ] + ]); + $node->save(); + $this->setNidNoTerms($node->id()); + } + + + protected function getTaxonomyIndex() { + return \Drupal::database()->select('taxonomy_index', 'ti') + ->fields('ti', ['tid']) + ->execute() + ->fetchCol(); + } + + /** + * @return int + */ + protected function getNidOneGrantedTerm() { + return $this->nidOneGrantedTerm; + } + + /** + * @param int $nidOneGrantedTerm + */ + protected function setNidOneGrantedTerm($nidOneGrantedTerm) { + $this->nidOneGrantedTerm = $nidOneGrantedTerm; + } + + /** + * @return int + */ + protected function getNidAllGrantedTerms() { + return $this->nidAllGrantedTerms; + } + + /** + * @param int $nidAllGrantedTerms + */ + protected function setNidAllGrantedTerms($nidAllGrantedTerms) { + $this->nidAllGrantedTerms = $nidAllGrantedTerms; + } + + /** + * @return int + */ + protected function getNidNoGrantedTerm() { + return $this->nidNoGrantedTerm; + } + + /** + * @param int $nidNoGrantedTerm + */ + protected function setNidNoGrantedTerm($nidNoGrantedTerm) { + $this->nidNoGrantedTerm = $nidNoGrantedTerm; + } + + /** + * @return int + */ + protected function getNidNoTerms() { + return $this->nidNoTerms; + } + + /** + * @param int $nidNoTerms + */ + protected function setNidNoTerms($nidNoTerms) { + $this->nidNoTerms = $nidNoTerms; + } + +} \ No newline at end of file