You are here

protected function UserCreationTrait::createRole in Zircon Profile 8.0

Same name and namespace in other branches
  1. 8 core/modules/simpletest/src/UserCreationTrait.php \Drupal\simpletest\UserCreationTrait::createRole()

Creates a role with specified permissions.

Parameters

array $permissions: Array of permission names to assign to role.

string $rid: (optional) The role ID (machine name). Defaults to a random name.

string $name: (optional) The label for the role. Defaults to a random string.

integer $weight: (optional) The weight for the role. Defaults NULL so that entity_create() sets the weight to maximum + 1.

Return value

string Role ID of newly created role, or FALSE if role creation failed.

11 calls to UserCreationTrait::createRole()
AccessTest::setUp in core/modules/views/src/Tests/Plugin/AccessTest.php
Sets up a Drupal site for running functional and integration tests.
AccessTestBase::setUp in core/modules/user/src/Tests/Views/AccessTestBase.php
Sets up a Drupal site for running functional and integration tests.
ConfigTranslationListUiTest::doUserRoleListTest in core/modules/config_translation/src/Tests/ConfigTranslationListUiTest.php
Tests the role listing for the translate operation.
HandlerFieldRoleTest::testRole in core/modules/user/src/Tests/Views/HandlerFieldRoleTest.php
ToolbarAdminMenuTest::testNonCurrentUserAccountUpdates in core/modules/toolbar/src/Tests/ToolbarAdminMenuTest.php
Tests that changes to a user account by another user clears the changed account's toolbar cached, not the user's who took the action.

... See full list

File

core/modules/simpletest/src/UserCreationTrait.php, line 129
Contains \Drupal\simpletest\UserCreationTrait.

Class

UserCreationTrait
Provides methods to create additional test users and switch the currently logged in one.

Namespace

Drupal\simpletest

Code

protected function createRole(array $permissions, $rid = NULL, $name = NULL, $weight = NULL) {

  // Generate a random, lowercase machine name if none was passed.
  if (!isset($rid)) {
    $rid = strtolower($this
      ->randomMachineName(8));
  }

  // Generate a random label.
  if (!isset($name)) {

    // In the role UI role names are trimmed and random string can start or
    // end with a space.
    $name = trim($this
      ->randomString(8));
  }

  // Check the all the permissions strings are valid.
  if (!$this
    ->checkPermissions($permissions)) {
    return FALSE;
  }

  // Create new role.
  $role = Role::create(array(
    'id' => $rid,
    'label' => $name,
  ));
  if (isset($weight)) {
    $role
      ->set('weight', $weight);
  }
  $result = $role
    ->save();
  $this
    ->assertIdentical($result, SAVED_NEW, SafeMarkup::format('Created role ID @rid with name @name.', array(
    '@name' => var_export($role
      ->label(), TRUE),
    '@rid' => var_export($role
      ->id(), TRUE),
  )), 'Role');
  if ($result === SAVED_NEW) {

    // Grant the specified permissions to the role, if any.
    if (!empty($permissions)) {
      $this
        ->grantPermissions($role, $permissions);
      $assigned_permissions = Role::load($role
        ->id())
        ->getPermissions();
      $missing_permissions = array_diff($permissions, $assigned_permissions);
      if (!$missing_permissions) {
        $this
          ->pass(SafeMarkup::format('Created permissions: @perms', array(
          '@perms' => implode(', ', $permissions),
        )), 'Role');
      }
      else {
        $this
          ->fail(SafeMarkup::format('Failed to create permissions: @perms', array(
          '@perms' => implode(', ', $missing_permissions),
        )), 'Role');
      }
    }
    return $role
      ->id();
  }
  else {
    return FALSE;
  }
}