+++ /dev/null
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-
-namespace Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler;
-
-use PHPUnit\Framework\TestCase;
-use Symfony\Component\HttpFoundation\Session\Storage\Handler\LegacyPdoSessionHandler;
-
-/**
- * @group legacy
- * @group time-sensitive
- * @requires extension pdo_sqlite
- */
-class LegacyPdoSessionHandlerTest extends TestCase
-{
- private $pdo;
-
- protected function setUp()
- {
- parent::setUp();
- $this->pdo = new \PDO('sqlite::memory:');
- $this->pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
- $sql = 'CREATE TABLE sessions (sess_id VARCHAR(128) PRIMARY KEY, sess_data TEXT, sess_time INTEGER)';
- $this->pdo->exec($sql);
- }
-
- public function testIncompleteOptions()
- {
- $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('InvalidArgumentException');
- $storage = new LegacyPdoSessionHandler($this->pdo, array());
- }
-
- public function testWrongPdoErrMode()
- {
- $pdo = new \PDO('sqlite::memory:');
- $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_SILENT);
- $pdo->exec('CREATE TABLE sessions (sess_id VARCHAR(128) PRIMARY KEY, sess_data TEXT, sess_time INTEGER)');
-
- $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('InvalidArgumentException');
- $storage = new LegacyPdoSessionHandler($pdo, array('db_table' => 'sessions'));
- }
-
- public function testWrongTableOptionsWrite()
- {
- $storage = new LegacyPdoSessionHandler($this->pdo, array('db_table' => 'bad_name'));
- $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('RuntimeException');
- $storage->write('foo', 'bar');
- }
-
- public function testWrongTableOptionsRead()
- {
- $storage = new LegacyPdoSessionHandler($this->pdo, array('db_table' => 'bad_name'));
- $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('RuntimeException');
- $storage->read('foo');
- }
-
- public function testWriteRead()
- {
- $storage = new LegacyPdoSessionHandler($this->pdo, array('db_table' => 'sessions'));
- $storage->write('foo', 'bar');
- $this->assertEquals('bar', $storage->read('foo'), 'written value can be read back correctly');
- }
-
- public function testMultipleInstances()
- {
- $storage1 = new LegacyPdoSessionHandler($this->pdo, array('db_table' => 'sessions'));
- $storage1->write('foo', 'bar');
-
- $storage2 = new LegacyPdoSessionHandler($this->pdo, array('db_table' => 'sessions'));
- $this->assertEquals('bar', $storage2->read('foo'), 'values persist between instances');
- }
-
- public function testSessionDestroy()
- {
- $storage = new LegacyPdoSessionHandler($this->pdo, array('db_table' => 'sessions'));
- $storage->write('foo', 'bar');
- $this->assertCount(1, $this->pdo->query('SELECT * FROM sessions')->fetchAll());
-
- $storage->destroy('foo');
-
- $this->assertCount(0, $this->pdo->query('SELECT * FROM sessions')->fetchAll());
- }
-
- public function testSessionGC()
- {
- $storage = new LegacyPdoSessionHandler($this->pdo, array('db_table' => 'sessions'));
-
- $storage->write('foo', 'bar');
- $storage->write('baz', 'bar');
-
- $this->assertCount(2, $this->pdo->query('SELECT * FROM sessions')->fetchAll());
-
- $storage->gc(-1);
- $this->assertCount(0, $this->pdo->query('SELECT * FROM sessions')->fetchAll());
- }
-
- public function testGetConnection()
- {
- $storage = new LegacyPdoSessionHandler($this->pdo, array('db_table' => 'sessions'), array());
-
- $method = new \ReflectionMethod($storage, 'getConnection');
- $method->setAccessible(true);
-
- $this->assertInstanceOf('\PDO', $method->invoke($storage));
- }
-}