3 namespace Drupal\Tests\permissions_by_term\Kernel;
5 use Drupal\language\Entity\ConfigurableLanguage;
6 use Drupal\node\Entity\Node;
7 use Drupal\permissions_by_term\Service\NodeEntityBundleInfo;
8 use Drupal\taxonomy\Entity\Term;
9 use Drupal\taxonomy\Entity\Vocabulary;
10 use Drupal\taxonomy\Tests\TaxonomyTestTrait;
11 use Drupal\user\Entity\User;
14 * @group permissions_by_term
16 class MultilingualTest extends PBTKernelTestBase {
18 use TaxonomyTestTrait;
21 * @var NodeEntityBundleInfo
23 private $nodeEntityBundleInfo;
28 protected function setUp() {
30 $this->nodeEntityBundleInfo = $this->container->get('permissions_by_term.node_entity_bundle_info');
33 public function testCanAccess() {
35 'name' => 'Test Multilingual',
36 'vid' => 'test_multilingual',
40 $term = Term::create([
47 $node = Node::create([
49 'title' => 'test_title',
52 'target_id' => $term->id()
58 $this->accessStorage->addTermPermissionsByUserIds([\Drupal::service('current_user')->id()], $term->id(), 'de');
59 $this->assertTrue($this->accessCheck->canUserAccessByNodeId($node->id()));
62 public function testCanNotAccess() {
63 list($termDe, $nodeDe, $term, $node, $user) = $this->setupEntities();
65 $this->accessStorage->addTermPermissionsByUserIds([\Drupal::service('current_user')->id()], $term->id(), 'en');
66 $this->accessStorage->addTermPermissionsByUserIds([$user->id()], $termDe->id(), 'de');
71 $user = user_load_by_name('some_username123');
73 $this->assertTrue($this->accessCheck->canUserAccessByNodeId($node->id(), \Drupal::service('current_user')->id()));
74 $this->assertFalse($this->accessCheck->canUserAccessByNodeId($nodeDe->id(), \Drupal::service('current_user')->id(), 'de'));
75 $this->assertTrue($this->accessCheck->canUserAccessByNodeId($nodeDe->id(), $user->id(), 'de'));
78 private function setupEntities() {
80 foreach (['de'] as $langcode) {
81 $language = ConfigurableLanguage::createFromLangcode($langcode);
82 $language->set('weight', $i--);
87 'name' => 'Test English',
88 'vid' => 'test_multilingual_en',
93 'name' => 'Test German',
94 'vid' => 'test_multilingual_de',
98 $term = Term::create([
100 'vid' => 'test_multilingual_en',
105 $node = Node::create([
107 'title' => 'test_title',
110 'target_id' => $term->id()
116 $termDe = Term::create([
118 'vid' => 'test_multilingual_de',
123 $nodeDe = $node->addTranslation('de');
124 $nodeDe->title = 'Node Übersetzung';
125 $nodeDe->field_tags = [
127 'target_id' => $termDe->id()
132 $user = User::create([
133 'name' => 'some_username123',
138 return [$termDe, $nodeDe, $term, $node, $user];