function SessionTestCase::testHashedSessionIds

Test hashing of session ids in the database.

File

modules/simpletest/tests/session.test, line 252

Class

SessionTestCase
@file Provides SimpleTests for core session handling functionality.

Code

function testHashedSessionIds() {
    $user = $this->drupalCreateUser(array(
        'access content',
    ));
    $this->drupalLogin($user);
    $this->drupalGet('session-test/is-logged-in');
    $this->assertResponse(200, 'User is logged in.');
    $this->drupalGet('session-test/id');
    $matches = array();
    preg_match('/\\s*session_id:(.*)\\n/', $this->drupalGetContent(), $matches);
    $this->assertTrue(!empty($matches[1]), 'Found session ID after logging in.');
    $session_id = $matches[1];
    $this->drupalGet('session-test/id-from-cookie');
    $matches = array();
    preg_match('/\\s*session_id:(.*)\\n/', $this->drupalGetContent(), $matches);
    $this->assertTrue(!empty($matches[1]), 'Found session ID from cookie.');
    $cookie_session_id = $matches[1];
    $this->assertEqual($session_id, $cookie_session_id, 'Session id and cookie session id are the same.');
    $sql = 'SELECT s.sid FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE u.uid = :uid';
    $db_session = db_query($sql, array(
        ':uid' => $user->uid,
    ))
        ->fetchObject();
    $this->assertNotEqual($db_session->sid, $cookie_session_id, 'Session id in the database is not the same as in the session cookie.');
    $this->assertEqual($db_session->sid, drupal_hash_base64($cookie_session_id), 'Session id in the database is the cookie session id hashed.');
}

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