1 admin_bar.test AdminBarPermissionsTestCase::testPermissions()

Test that the links are added to the page (no JS testing).

File

core/modules/admin_bar/tests/admin_bar.test, line 122
Tests for the Administration bar module.

Class

AdminBarPermissionsTestCase
Tests menu links depending on user permissions.

Code

function testPermissions() {
  module_enable(array('contact'));
  $this->resetAll();

  // Anonymous users should not see the menu.
  $this->backdropGet('');
  $this->assertNoElementByXPath('//div[@id="admin-bar"]', array(), t('Administration bar not found.'));

  // Create a user who
  // - can access content overview
  // - cannot administer Contact module
  $permissions = $this->basePermissions + array(
    'access content overview',
  );
  $admin_user = $this->backdropCreateUser($permissions);
  $this->backdropLogin($admin_user);

  // Check that the user can see the admin links, but not the Backdrop links.
  $this->assertElementByXPath('//div[@id="admin-bar"]', array(), 'Administration bar found.');
  $this->assertElementByXPath('//div[@id="admin-bar"]//a[contains(@href, :path)]', array(':path' => 'admin/content'), 'Content link found.');
  $this->assertNoElementByXPath('//div[@id="admin-bar"]//a[contains(@href, :path)]', array(':path' => 'admin/structure/contact'), 'Structure » Contact link not found.');

  // Create a user "reversed" to the above; i.e., who
  // - cannot access content overview
  // - can administer Contact module
  $permissions = $this->basePermissions + array(
    'administer contact forms',
  );
  $admin_user2 = $this->backdropCreateUser($permissions);
  $this->backdropLogin($admin_user2);
  $this->assertElementByXPath('//div[@id="admin-bar"]', array(), 'Administration bar found.');
  $this->assertNoElementByXPath('//div[@id="admin-bar"]//a[contains(@href, :path)]', array(':path' => 'admin/content'), 'Content link not found.');
  $this->assertElementByXPath('//div[@id="admin-bar"]//a[contains(@href, :path)]', array(':path' => 'admin/structure/contact'), 'Structure » Contact link found.');
}