data_pipelines-1.x-dev/tests/src/Kernel/DatasetAccessHandlerTest.php

tests/src/Kernel/DatasetAccessHandlerTest.php
<?php

declare(strict_types=1);

namespace Drupal\Tests\data_pipelines\Kernel;

use Drupal\Core\Access\AccessResult;
use Drupal\data_pipelines\Entity\Dataset;

/**
 * Defines a class for testing the dataset access handler.
 *
 * @group data_pipelines
 *
 * @covers \Drupal\data_pipelines\EntityHandlers\DatasetAccessHandler
 */
class DatasetAccessHandlerTest extends DatasetKernelTestBase {

  /**
   * Tests access denied to delete unsaved.
   */
  public function testAccessDeniedDeleteUnsaved(): void {
    $dataset = Dataset::create([
      'source' => 'csv:file',
      'name' => $this->randomMachineName(),
      'machine_name' => mb_strtolower($this->randomMachineName()),
    ]);
    $this->assertFalse($dataset->access('delete'));
  }

  /**
   * Tests delete requires permission.
   */
  public function testDeletePermission(): void {
    $dataset = Dataset::create([
      'source' => 'csv:file',
      'name' => $this->randomMachineName(),
      'machine_name' => mb_strtolower($this->randomMachineName()),
    ]);
    $dataset->save();
    $this->assertFalse($dataset->access('delete'));
    $this->setCurrentUser($this->createUser(['data_pipelines delete']));
    $this->assertTrue($dataset->access('delete'));
  }

  /**
   * Tests update requires permission.
   */
  public function testUpdatePermission(): void {
    $dataset = Dataset::create([
      'source' => 'csv:file',
      'name' => $this->randomMachineName(),
      'machine_name' => mb_strtolower($this->randomMachineName()),
    ]);
    $dataset->save();
    $this->assertFalse($dataset->access('update'));
    $this->setCurrentUser($this->createUser(['data_pipelines edit']));
    $this->assertTrue($dataset->access('update'));
  }

  /**
   * Tests viewing requires permission.
   */
  public function testViewPermission(): void {
    $dataset = Dataset::create([
      'source' => 'csv:file',
      'name' => $this->randomMachineName(),
      'machine_name' => mb_strtolower($this->randomMachineName()),
    ]);
    $dataset->save();
    $this->assertFalse($dataset->access('view'));
    $this->assertFalse($dataset->access('view label'));
    $this->setCurrentUser($this->createUser(['data_pipelines list']));
    $this->assertTrue($dataset->access('view'));
    $this->assertTrue($dataset->access('view label'));
  }

  /**
   * Tests create access.
   */
  public function testCreateAccess(): void {
    $handler = \Drupal::entityTypeManager()->getAccessControlHandler('data_pipelines');
    $this->assertFalse($handler->createAccess('csv:file'));
    $this->setCurrentUser($this->createUser(['data_pipelines create']));
    $this->assertTrue($handler->createAccess('csv:file'));
  }

  /**
   * Tests arbitrary access.
   */
  public function testArbitraryOperationAccess(): void {
    $dataset = Dataset::create([
      'source' => 'csv:file',
      'name' => $this->randomMachineName(),
      'machine_name' => mb_strtolower($this->randomMachineName()),
    ]);
    $dataset->save();
    $this->assertEquals(AccessResult::neutral(), $dataset->access('view revision', NULL, TRUE));
    $this->setCurrentUser($this->createUser([
      'data_pipelines edit',
      'data_pipelines list',
      'data_pipelines delete',
    ]));
    $this->assertEquals(AccessResult::neutral(), $dataset->access('view revision', NULL, TRUE));
  }

}

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

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