local_translation-8.x-1.x-dev/modules/local_translation_content/tests/src/Functional/LocalTranslationContentAccessRulesTest.php
modules/local_translation_content/tests/src/Functional/LocalTranslationContentAccessRulesTest.php
<?php namespace Drupal\Tests\local_translation_content\Functional; use Drupal\local_translation_content\LocalTranslationContentTestsTrait; use Drupal\local_translation_content\Plugin\LocalTranslationAccessRulesInterface; use Drupal\local_translation_content\Plugin\LocalTranslationAccessRulesPluginManager; use Drupal\node\Entity\Node; use Drupal\node\NodeInterface; use Drupal\Tests\BrowserTestBase; /** * Class LocalTranslationContentAccessRulesTest. * * @package Drupal\Tests\local_translation_content\Functional * * @group local_translation_content */ class LocalTranslationContentAccessRulesTest extends BrowserTestBase { use LocalTranslationContentTestsTrait; /** * {@inheritdoc} */ public $profile = 'standard'; /** * {@inheritdoc} */ public static $modules = ['local_translation_content']; /** * Access rules manager. * * @var \Drupal\local_translation_content\Plugin\LocalTranslationAccessRulesPluginManager */ protected $accessRulesManager; /** * {@inheritdoc} */ public function setUp() { parent::setUp(); $this->accessRulesManager = $this->container ->get('plugin_manager.local_translation_content_access_rules'); } /** * Test access rules manager existence. */ public function testAccessRulesManagerExistence() { $this->assertTrue($this->container->has('plugin_manager.local_translation_content_access_rules')); $this->assertInstanceOf(LocalTranslationAccessRulesPluginManager::class, $this->accessRulesManager); $this->assertTrue(method_exists($this->accessRulesManager, 'checkAccess')); } /** * Test access rules operation bottlenecks. */ public function testAccessRulesOperationBottlenecks() { $this->assertEquals(1, $this->createTestNode()); $entity = Node::load(1); $this->assertInstanceOf(NodeInterface::class, $entity); $definitions = $this->accessRulesManager->getDefinitions(); $this->assertNotEmpty($definitions); $this->assertTrue(is_array($definitions)); // Try to find at least one rule that allowing user to access. foreach ($definitions as $id => $definition) { $instance = $this->accessRulesManager->createInstance($id, $definition); $this->assertInstanceOf(LocalTranslationAccessRulesInterface::class, $instance); $this->assertTrue(method_exists($instance, 'isAllowed')); $this->assertFalse($instance->isAllowed('qwerty', $entity)); } } /** * Test admin access. */ public function testAdminAccess() { $user = $this->createUser([], 'test_user', FALSE); $this->drupalLogin($user); $access = $this->accessRulesManager->checkAccess('create'); $this->assertFalse($access->isAllowed()); // Make user admin. $user->addRole('administrator'); $user->save(); $access = $this->accessRulesManager->checkAccess('create'); $this->assertTrue($access->isAllowed()); } }