function DrupalWebTestCase::drupalLogin

Log in a user with the internal browser.

If a user is already logged in, then the current user is logged out before logging in the specified user.

Please note that neither the global $user nor the passed-in user object is populated with data of the logged in user. If you need full access to the user object after logging in, it must be updated manually. If you also need access to the plain-text password of the user (set by drupalCreateUser()), e.g. to log in the same user again, then it must be re-assigned manually. For example:

// Create a user.
$account = $this->drupalCreateUser(array());
$this->drupalLogin($account);
// Load real user object.
$pass_raw = $account->pass_raw;
$account = user_load($account->uid);
$account->pass_raw = $pass_raw;

Parameters

$account: User object representing the user to log in.

See also

drupalCreateUser()

403 calls to DrupalWebTestCase::drupalLogin()
AccessDeniedTestCase::testAccessDenied in modules/system/system.test
ActionLoopTestCase::testActionLoop in modules/simpletest/tests/actions.test
Set up a loop with 3 - 12 recursions, and see if it aborts properly.
ActionsConfigurationTestCase::testActionConfiguration in modules/simpletest/tests/actions.test
Test the configuration of advanced actions through the administration interface.
AggregatorRenderingTestCase::testBlockLinks in modules/aggregator/aggregator.test
Adds a feed block to the page and checks its links.
AggregatorTestCase::setUp in modules/aggregator/aggregator.test
Sets up a Drupal site for running functional and integration tests.

... See full list

File

modules/simpletest/drupal_web_test_case.php, line 1354

Class

DrupalWebTestCase
Test case for typical Drupal tests.

Code

protected function drupalLogin(stdClass $account) {
    if ($this->loggedInUser) {
        $this->drupalLogout();
    }
    $edit = array(
        'name' => $account->name,
        'pass' => $account->pass_raw,
    );
    $this->drupalPost('user', $edit, t('Log in'));
    // If a "log out" link appears on the page, it is almost certainly because
    // the login was successful.
    $pass = $this->assertLink(t('Log out'), 0, t('User %name successfully logged in.', array(
        '%name' => $account->name,
    )), t('User login'));
    if ($pass) {
        $this->loggedInUser = $account;
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.