local_translation-8.x-1.x-dev/modules/local_translation_content/tests/src/Functional/LocalTranslationContentGeneralPermissionsTest.php

modules/local_translation_content/tests/src/Functional/LocalTranslationContentGeneralPermissionsTest.php
<?php

namespace Drupal\Tests\local_translation_content\Functional;

use Drupal\local_translation_content\LocalTranslationContentTestsTrait;
use Drupal\node\Entity\Node;
use Drupal\Tests\BrowserTestBase;

/**
 * Class LocalTranslationContentGeneralPermissionsTest.
 *
 * @package Drupal\Tests\local_translation_content\Functional
 *
 * @group local_translation_content
 */
class LocalTranslationContentGeneralPermissionsTest extends BrowserTestBase {
  use LocalTranslationContentTestsTrait;

  /**
   * {@inheritdoc}
   */
  public $profile = 'standard';
  /**
   * {@inheritdoc}
   */
  public static $modules = ['local_translation_content'];

  /**
   * {@inheritdoc}
   */
  public function setUp() {
    parent::setUp();
    // Make all required configurations before testing.
    $this->setUpTest();
  }

  /**
   * Test "Create new content" permission.
   *
   * @throws \Drupal\Core\Entity\EntityStorageException
   */
  public function testCreatePermission() {
    $creator = $this->createUser(['local_translation_content create article content']);
    $this->drupalLogin($creator);
    $this->registerTestSkills();

    foreach (static::$registeredSkills as $skill) {
      if ($skill === $this->defaultLanguage) {
        $this->drupalGet('node/add/article');
      }
      else {
        $this->drupalGet($skill . '/node/add/article');
      }
      $this->assertResponseCode(200);
    }

    foreach (static::$unregisteredSkills as $skill) {
      $this->drupalGet($skill . '/node/add/article');
      $this->assertResponseCode(403);
      $this->assertTextHelper('Access denied', FALSE);
    }
  }

  /**
   * Test "Edit own content" permission.
   */
  public function testEditOwnPermission() {
    $editor = $this->createUser(['local_translation_content edit own article content']);
    $this->drupalLogin($editor);
    $this->registerTestSkills();

    $nid = $this->createTestNode($editor->id());
    $this->addTestTranslations(Node::load($nid), $editor->id());

    foreach (static::$registeredSkills as $skill) {
      if ($skill === $this->defaultLanguage) {
        $this->drupalGet("node/$nid/edit");
      }
      else {
        $this->drupalGet("$skill/node/$nid/edit");
      }
      $this->assertResponseCode(200);
    }
    foreach (static::$unregisteredSkills as $skill) {
      $this->drupalGet("$skill/node/$nid/edit");
      $this->assertResponseCode(403);
      $this->assertTextHelper('Access denied', FALSE);
    }
  }

  /**
   * Test "Edit any content" permission.
   */
  public function testEditAnyPermission() {
    $editor = $this->createUser(['local_translation_content edit any article content']);
    $this->drupalLogin($editor);
    $this->registerTestSkills();

    $nid = $this->createTestNode();
    $this->addTestTranslations(Node::load($nid));

    foreach (static::$registeredSkills as $skill) {
      if ($skill === $this->defaultLanguage) {
        $this->drupalGet("node/$nid/edit");
      }
      else {
        $this->drupalGet("$skill/node/$nid/edit");
      }
      $this->assertResponseCode(200);
    }
    foreach (static::$unregisteredSkills as $skill) {
      $this->drupalGet("$skill/node/$nid/edit");
      $this->assertResponseCode(403);
      $this->assertTextHelper('Access denied', FALSE);
    }
  }

  /**
   * Test "Delete own content" permission.
   */
  public function testDeleteOwnPermission() {
    $deleter = $this->createUser(['local_translation_content delete own article content']);
    $this->drupalLogin($deleter);
    $this->registerTestSkills();

    $nid = $this->createTestNode($deleter->id());
    $this->addTestTranslations(Node::load($nid), $deleter->id());

    foreach (static::$registeredSkills as $skill) {
      if ($skill === $this->defaultLanguage) {
        $this->drupalGet("node/$nid/delete");
      }
      else {
        $this->drupalGet("$skill/node/$nid/delete");
      }
      $this->assertResponseCode(200);
    }
    foreach (static::$unregisteredSkills as $skill) {
      $this->drupalGet("$skill/node/$nid/delete");
      $this->assertResponseCode(403);
      $this->assertTextHelper('Access denied', FALSE);
    }
  }

  /**
   * Test "Delete any content" permission.
   */
  public function testDeleteAnyPermission() {
    $deleter = $this->createUser(['local_translation_content delete any article content']);
    $this->drupalLogin($deleter);
    $this->registerTestSkills();

    $nid = $this->createTestNode();
    $this->addTestTranslations(Node::load($nid));

    foreach (static::$registeredSkills as $skill) {
      if ($skill === $this->defaultLanguage) {
        $this->drupalGet("node/$nid/delete");
      }
      else {
        $this->drupalGet("$skill/node/$nid/delete");
      }
      $this->assertResponseCode(200);
    }
    foreach (static::$unregisteredSkills as $skill) {
      $this->drupalGet("$skill/node/$nid/delete");
      $this->assertResponseCode(403);
      $this->assertTextHelper('Access denied', FALSE);
    }
  }

  /**
   * Test case when user has permission to create and delete but not to edit.
   */
  public function testMissingEditPermissions() {
    $user = $this->createUser([
      'local_translation_content create article content',
      'local_translation_content delete any article content',
    ]);
    $this->drupalLogin($user);
    $this->registerTestSkills();

    // Ensure that user doesn't have edit permissions.
    $has_edit_permissions = $user->hasPermission('local_translation_content edit any article content')
      || $user->hasPermission('local_translation_content edit own article content');
    $this->assertFalse($has_edit_permissions);

    $nid = $this->createTestNode();
    $this->drupalGet("node/$nid/edit");
    $this->assertResponseCode(403);
    $this->assertTextHelper('Access denied', FALSE);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc