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.