UrlIntegrationTest.php

Same filename in other branches
  1. 8.9.x core/tests/Drupal/KernelTests/Core/Routing/UrlIntegrationTest.php
  2. 10 core/tests/Drupal/KernelTests/Core/Routing/UrlIntegrationTest.php
  3. 11.x core/tests/Drupal/KernelTests/Core/Routing/UrlIntegrationTest.php

Namespace

Drupal\KernelTests\Core\Routing

File

core/tests/Drupal/KernelTests/Core/Routing/UrlIntegrationTest.php

View source
<?php

namespace Drupal\KernelTests\Core\Routing;

use Drupal\Core\Url;
use Drupal\KernelTests\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
     */
    protected static $modules = [
        'user',
        'router_test',
        'system',
    ];
    
    /**
     * Ensures that the access() method on \Drupal\Core\Url objects works.
     */
    public function testAccess() {
        
        /** @var \Drupal\user\RoleInterface $role_with_access */
        $role_with_access = Role::create([
            'id' => 'role_with_access',
            'label' => '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',
            'label' => '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

Title Deprecated Summary
UrlIntegrationTest Tests the URL object integration into the access system.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.