* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Tests\Component\HttpFoundation\SessionStorage; use Symfony\Component\HttpFoundation\SessionStorage\PdoSessionStorage; class PdoSessionStorageTest extends \PHPUnit_Framework_TestCase { private $pdo; protected function setUp() { $this->pdo = new \PDO("sqlite::memory:"); $sql = "CREATE TABLE sessions (sess_id VARCHAR(255) PRIMARY KEY, sess_data TEXT, sess_time INTEGER)"; $this->pdo->exec($sql); } public function testMultipleInstances() { $storage1 = new PdoSessionStorage($this->pdo, array(), array('db_table' => 'sessions')); $storage1->sessionWrite('foo', 'bar'); $storage2 = new PdoSessionStorage($this->pdo, array(), array('db_table' => 'sessions')); $this->assertEquals('bar', $storage2->sessionRead('foo'), 'values persist between instances'); } public function testSessionDestroy() { $storage = new PdoSessionStorage($this->pdo, array(), array('db_table' => 'sessions')); $storage->sessionWrite('foo', 'bar'); $this->assertEquals(1, count($this->pdo->query('SELECT * FROM sessions')->fetchAll())); $storage->sessionDestroy('foo'); $this->assertEquals(0, count($this->pdo->query('SELECT * FROM sessions')->fetchAll())); } public function testSessionGC() { $storage = new PdoSessionStorage($this->pdo, array(), array('db_table' => 'sessions')); $storage->sessionWrite('foo', 'bar'); $storage->sessionWrite('baz', 'bar'); $this->assertEquals(2, count($this->pdo->query('SELECT * FROM sessions')->fetchAll())); $storage->sessionGC(-1); $this->assertEquals(0, count($this->pdo->query('SELECT * FROM sessions')->fetchAll())); } }