/**
  * 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']);
     $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));
 }
 /**
  * {@inheritdoc}
  */
 public function blockForm($form, FormStateInterface $form_state)
 {
     // Get the theme.
     $theme = $form_state->get('block_theme');
     // Get permissions.
     $url_system_theme_settings = new Url('system.theme_settings');
     $url_system_theme_settings_theme = new Url('system.theme_settings_theme', array('theme' => $theme));
     if ($url_system_theme_settings->access() && $url_system_theme_settings_theme->access()) {
         // Provide links to the Appearance Settings and Theme Settings pages
         // if the user has access to administer themes.
         $site_logo_description = $this->t('Defined on the <a href="@appearance">Appearance Settings</a> or <a href="@theme">Theme Settings</a> page.', array('@appearance' => $url_system_theme_settings->toString(), '@theme' => $url_system_theme_settings_theme->toString()));
     } else {
         // Explain that the user does not have access to the Appearance and Theme
         // Settings pages.
         $site_logo_description = $this->t('Defined on the Appearance or Theme Settings page. You do not have the appropriate permissions to change the site logo.');
     }
     $url_system_site_information_settings = new Url('system.site_information_settings');
     if ($url_system_site_information_settings->access()) {
         // Get paths to settings pages.
         $site_information_url = $url_system_site_information_settings->toString();
         // Provide link to Site Information page if the user has access to
         // administer site configuration.
         $site_name_description = $this->t('Defined on the <a href="@information">Site Information</a> page.', array('@information' => $site_information_url));
         $site_slogan_description = $this->t('Defined on the <a href="@information">Site Information</a> page.', array('@information' => $site_information_url));
     } else {
         // Explain that the user does not have access to the Site Information
         // page.
         $site_name_description = $this->t('Defined on the Site Information page. You do not have the appropriate permissions to change the site logo.');
         $site_slogan_description = $this->t('Defined on the Site Information page. You do not have the appropriate permissions to change the site logo.');
     }
     $form['block_branding'] = array('#type' => 'fieldset', '#title' => $this->t('Toggle branding elements'), '#description' => $this->t('Choose which branding elements you want to show in this block instance.'));
     $form['block_branding']['use_site_logo'] = array('#type' => 'checkbox', '#title' => $this->t('Site logo'), '#description' => $site_logo_description, '#default_value' => $this->configuration['use_site_logo']);
     $form['block_branding']['use_site_name'] = array('#type' => 'checkbox', '#title' => $this->t('Site name'), '#description' => $site_name_description, '#default_value' => $this->configuration['use_site_name']);
     $form['block_branding']['use_site_slogan'] = array('#type' => 'checkbox', '#title' => $this->t('Site slogan'), '#description' => $site_slogan_description, '#default_value' => $this->configuration['use_site_slogan']);
     return $form;
 }