123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?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));
- }
- }
|