Commit 6dec5561 authored by Saša Nikolič's avatar Saša Nikolič Committed by Adrian Cid Almaguer
Browse files

Issue #3126311 by sasanikolic, Berdir, adriancid: Check permissions before...

Issue #3126311 by sasanikolic, Berdir, adriancid: Check permissions before displaying the search menu item
parent 9027b820
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -28,13 +28,14 @@ function admin_toolbar_search_help($route_name, RouteMatchInterface $route_match
 * Implements hook_toolbar_alter().
 */
function admin_toolbar_search_toolbar_alter(&$items) {
  $access = \Drupal::currentUser()->hasPermission('use admin toolbar search');
  if (!\Drupal::currentUser()->hasPermission('use admin toolbar search')) {
    return;
  }
  $admin_toolbar_tools_enabled = \Drupal::service('module_handler')
    ->moduleExists('admin_toolbar_tools');

  $items['administration_search'] = [
    "#type" => "toolbar_item",
    '#access' => $access,
    '#weight' => 100,
    'tab' => [
      'search' => [
+7 −2
Original line number Diff line number Diff line
@@ -14,13 +14,16 @@ class AdminToolbarSearchTest extends AdminToolbarSearchTestBase {
   * Tests search functionality without admin_toolbar_tools enabled.
   */
  public function testToolbarSearch() {
    $search_tab = '#toolbar-item-administration-search';
    $search_tab = '#admin-toolbar-search-tab';
    $search_toolbar_item = '#toolbar-item-administration-search';
    $search_tray = '#toolbar-item-administration-search-tray';

    $this->drupalLogin($this->userWithAccess);
    $assert_session = $this->assertSession();
    $assert_session->responseContains('admin.toolbar_search.css');
    $assert_session->responseContains('admin_toolbar_search.js');
    $assert_session->waitForElementVisible('css', $search_tab);
    $assert_session->waitForElementVisible('css', $search_toolbar_item);
    $assert_session->waitForElementVisible('css', $search_tray);

    $this->assertSuggestionContains('perfor', 'admin/config/development/performance');
@@ -32,7 +35,8 @@ class AdminToolbarSearchTest extends AdminToolbarSearchTestBase {
   * Tests a user without the search permission can't use search.
   */
  public function testNoAccess() {
    $search_tab = '#toolbar-item-administration-search';
    $search_tab = '#admin-toolbar-search-tab';
    $search_toolbar_item = '#toolbar-item-administration-search';
    $search_tray = '#toolbar-item-administration-search-tray';

    $this->drupalLogin($this->noAccessUser);
@@ -40,6 +44,7 @@ class AdminToolbarSearchTest extends AdminToolbarSearchTestBase {
    $assert_session->responseNotContains('admin.toolbar_search.css');
    $assert_session->responseNotContains('admin_toolbar_search.js');
    $assert_session->elementNotExists('css', $search_tab);
    $assert_session->elementNotExists('css', $search_toolbar_item);
    $assert_session->elementNotExists('css', $search_tray);
  }

+46 −0
Original line number Diff line number Diff line
<?php

namespace Drupal\Tests\admin_toolbar_search\FunctionalJavascript;

/**
 * Test the functionality of admin toolbar search.
 *
 * @group admin_toolbar
 * @group admin_toolbar_search
 */
class AdminToolbarSearchTest extends AdminToolbarSearchTestBase {

  /**
   * Tests search functionality without admin_toolbar_tools enabled.
   */
  public function testToolbarSearch() {
    $search_tab = '#toolbar-item-administration-search';
    $search_tray = '#toolbar-item-administration-search-tray';

    $this->drupalLogin($this->userWithAccess);
    $assert_session = $this->assertSession();
    $assert_session->responseContains('admin.toolbar_search.css');
    $assert_session->responseContains('admin_toolbar_search.js');
    $assert_session->waitForElementVisible('css', $search_tray);

    $this->assertSuggestionContains('perfor', 'admin/config/development/performance');
    $this->assertSuggestionContains('develop', 'admin/config/development/maintenance');
    $this->assertSuggestionContains('types', 'admin/structure/types');
  }

  /**
   * Tests a user without the search permission can't use search.
   */
  public function testNoAccess() {
    $search_tab = '#toolbar-item-administration-search';
    $search_tray = '#toolbar-item-administration-search-tray';

    $this->drupalLogin($this->noAccessUser);
    $assert_session = $this->assertSession();
    $assert_session->responseNotContains('admin.toolbar_search.css');
    $assert_session->responseNotContains('admin_toolbar_search.js');
    $assert_session->elementNotExists('css', $search_tab);
    $assert_session->elementNotExists('css', $search_tray);
  }

}
+33 −0
Original line number Diff line number Diff line
***************
*** 14,27 ****
     * Tests search functionality without admin_toolbar_tools enabled.
     */
    public function testToolbarSearch() {
-     $search_tab = '#toolbar-item-administration-search';
      $search_tray = '#toolbar-item-administration-search-tray';
  
      $this->drupalLogin($this->userWithAccess);
      $assert_session = $this->assertSession();
      $assert_session->responseContains('admin.toolbar_search.css');
      $assert_session->responseContains('admin_toolbar_search.js');
-     $assert_session->waitForElementVisible('css', $search_tab)->click();
      $assert_session->waitForElementVisible('css', $search_tray);
  
      $this->assertSuggestionContains('perfor', 'admin/config/development/performance');
--- 14,29 ----
     * Tests search functionality without admin_toolbar_tools enabled.
     */
    public function testToolbarSearch() {
+     $search_tab = '#admin-toolbar-search-tab';
+     $search_toolbar_item = '#toolbar-item-administration-search';
      $search_tray = '#toolbar-item-administration-search-tray';
  
      $this->drupalLogin($this->userWithAccess);
      $assert_session = $this->assertSession();
      $assert_session->responseContains('admin.toolbar_search.css');
      $assert_session->responseContains('admin_toolbar_search.js');
+     $assert_session->waitForElementVisible('css', $search_tab);
+     $assert_session->waitForElementVisible('css', $search_toolbar_item)->click();
      $assert_session->waitForElementVisible('css', $search_tray);
  
      $this->assertSuggestionContains('perfor', 'admin/config/development/performance');
+4 −1
Original line number Diff line number Diff line
@@ -97,13 +97,16 @@ class AdminToolbarToolsSearchTest extends AdminToolbarSearchTestBase {
   * Tests search functionality with admin_toolbar_tools enabled.
   */
  public function testToolbarSearch() {
    $search_tab = '#toolbar-item-administration-search';
    $search_tab = '#admin-toolbar-search-tab';
    $search_toolbar_item = '#toolbar-item-administration-search';
    $search_tray = '#toolbar-item-administration-search-tray';

    $this->drupalLogin($this->adminUser);
    $assert_session = $this->assertSession();
    $assert_session->responseContains('admin.toolbar_search.css');
    $assert_session->responseContains('admin_toolbar_search.js');
    $assert_session->waitForElementVisible('css', $search_tab);
    $assert_session->waitForElementVisible('css', $search_toolbar_item);
    $assert_session->waitForElementVisible('css', $search_tray);

    $this->assertSuggestionContains('basic', 'admin/config/system/site-information');
Loading