/** * Regenerates id that represents this storage. * * @param boolean $destroy Destroy session when regenerating? * * @return boolean True if session regenerated, false if error * */ public function regenerate($destroy = false) { if (self::$sessionIdRegenerated) { return; } $currentId = session_id(); parent::regenerate($destroy); $newId = session_id(); $this->sessionRead($newId); return $this->sessionWrite($newId, $this->sessionRead($currentId)); }
ob_start(); $_test_dir = realpath(dirname(__FILE__) . '/../../'); require_once $_test_dir . '/../lib/vendor/lime/lime.php'; sfConfig::set('sf_symfony_lib_dir', realpath($_test_dir . '/../lib')); $t = new lime_test(8, new lime_output_color()); // initialize the storage try { $storage = new sfSessionStorage(); $t->pass('->__construct() does not throw an exception when not provided with options'); } catch (InvalidArgumentException $e) { $t->fail('->__construct() Startup failure'); } $storage = new sfSessionStorage(); $t->ok($storage instanceof sfStorage, '->__construct() is an instance of sfStorage'); $storage->write('test', 123); $t->is($storage->read('test'), 123, '->read() can read data that has been written to storage'); // regenerate() $oldSessionData = 'foo:bar'; $key = md5($oldSessionData); $storage->write($key, $oldSessionData); $session_id = session_id(); $storage->regenerate(false); $t->is($storage->read($key), $oldSessionData, '->regenerate(false) regenerated the session with a different session id - this class by default doesn\'t regen the id'); $t->isnt(session_id(), $session_id, '->regenerate(false) regenerated the session with a different session id'); $storage->regenerate(true); $t->is($storage->read($key), $oldSessionData, '->regenerate(true) regenerated the session with a different session id and destroyed data'); $t->isnt(session_id(), $session_id, '->regenerate(true) regenerated the session with a different session id'); $storage->remove($key); $t->is($storage->read($key), null, '->remove() removes data from the storage'); // shutdown the storage $storage->shutdown();