UrlIntegrationTest.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace Drupal\KernelTests\Core\Routing;
  3. use Drupal\Core\Url;
  4. use Drupal\KernelTests\KernelTestBase;
  5. use Drupal\user\Entity\Role;
  6. use Drupal\user\Entity\User;
  7. /**
  8. * Tests the URL object integration into the access system.
  9. *
  10. * @group Url
  11. */
  12. class UrlIntegrationTest extends KernelTestBase {
  13. /**
  14. * Modules to enable.
  15. *
  16. * @var array
  17. */
  18. public static $modules = ['user', 'router_test', 'system'];
  19. /**
  20. * Ensures that the access() method on \Drupal\Core\Url objects works.
  21. */
  22. public function testAccess() {
  23. /** @var \Drupal\user\RoleInterface $role_with_access */
  24. $role_with_access = Role::create(['id' => 'role_with_access']);
  25. $role_with_access->grantPermission('administer users');
  26. $role_with_access->save();
  27. /** @var \Drupal\user\RoleInterface $role_without_access */
  28. $role_without_access = Role::create(['id' => 'role_without_access']);
  29. $role_without_access->save();
  30. $user_with_access = User::create(['roles' => ['role_with_access']]);
  31. $user_without_access = User::create(['roles' => ['role_without_access']]);
  32. $url_always_access = new Url('router_test.1');
  33. $this->assertTrue($url_always_access->access($user_with_access));
  34. $this->assertTrue($url_always_access->access($user_without_access));
  35. $url_none_access = new Url('router_test.15');
  36. $this->assertFalse($url_none_access->access($user_with_access));
  37. $this->assertFalse($url_none_access->access($user_without_access));
  38. $url_access = new Url('router_test.16');
  39. $this->assertTrue($url_access->access($user_with_access));
  40. $this->assertFalse($url_access->access($user_without_access));
  41. }
  42. }