How to create user with role when using Drupal's simpletest framework

I was surprised to find out that Drupal's simpletest framework does not have a built in function to create a user with a role.  After searching around the net I came across this blog post which helped me:

Here is how I did it:

 * Creates a user with the give role.


public function drupalCreateUserWithRole($role) {

  // Get all of the roles in the system.

  $roles = user_roles();

  // Find the index for the role we want to assign to the user.

  $index = array_search($role, $roles);

  // Get the permissions for the role.

  $permissions = user_role_permissions(array(array_search($role, $roles) => $role));

  // Create the user with the permissions.

  $user = $this->drupalCreateUser(array_keys($permissions[$index]));

  // Assign the role.

  $user->roles[$index] = $role;

  // Return the user we have created.

  return user_save($user);

Nice syntax version here: