You are here

UrlIntegrationTest.php in Zircon Profile 8.0

Same filename and directory in other branches
  1. 8 core/modules/system/src/Tests/Routing/UrlIntegrationTest.php

File

core/modules/system/src/Tests/Routing/UrlIntegrationTest.php
View source
<?php

/**
 * @file
 * Contains \Drupal\system\Tests\Routing\UrlIntegrationTest.
 */
namespace Drupal\system\Tests\Routing;

use Drupal\Core\Url;
use Drupal\simpletest\KernelTestBase;
use Drupal\user\Entity\Role;
use Drupal\user\Entity\User;

/**
 * Tests the URL object integration into the access system.
 *
 * @group Url
 */
class UrlIntegrationTest extends KernelTestBase {

  /**
   * Modules to enable.
   *
   * @var array
   */
  public static $modules = array(
    'user',
    'router_test',
    'system',
  );

  /**
   * {@inheritdoc}
   */
  protected function setUp() {
    parent::setUp();
    $this
      ->installSchema('system', [
      'router',
    ]);
  }

  /**
   * Ensures that the access() method on \Drupal\Core\Url objects works.
   */
  public function testAccess() {
    \Drupal::service('router.builder')
      ->rebuild();

    /** @var \Drupal\user\RoleInterface $role_with_access */
    $role_with_access = Role::create([
      'id' => 'role_with_access',
    ]);
    $role_with_access
      ->grantPermission('administer users');
    $role_with_access
      ->save();

    /** @var \Drupal\user\RoleInterface $role_without_access */
    $role_without_access = Role::create([
      'id' => 'role_without_access',
    ]);
    $role_without_access
      ->save();
    $user_with_access = User::create([
      'roles' => [
        'role_with_access',
      ],
    ]);
    $user_without_access = User::create([
      'roles' => [
        'role_without_access',
      ],
    ]);
    $url_always_access = new Url('router_test.1');
    $this
      ->assertTrue($url_always_access
      ->access($user_with_access));
    $this
      ->assertTrue($url_always_access
      ->access($user_without_access));
    $url_none_access = new Url('router_test.15');
    $this
      ->assertFalse($url_none_access
      ->access($user_with_access));
    $this
      ->assertFalse($url_none_access
      ->access($user_without_access));
    $url_access = new Url('router_test.16');
    $this
      ->assertTrue($url_access
      ->access($user_with_access));
    $this
      ->assertFalse($url_access
      ->access($user_without_access));
  }

}

Classes

Namesort descending Description
UrlIntegrationTest Tests the URL object integration into the access system.