You are here

class LegacyPdoSessionHandlerTest in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/http-foundation/Tests/Session/Storage/Handler/LegacyPdoSessionHandlerTest.php \Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler\LegacyPdoSessionHandlerTest

@group legacy

Hierarchy

  • class \Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler\LegacyPdoSessionHandlerTest extends \Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler\PHPUnit_Framework_TestCase

Expanded class hierarchy of LegacyPdoSessionHandlerTest

File

vendor/symfony/http-foundation/Tests/Session/Storage/Handler/LegacyPdoSessionHandlerTest.php, line 19

Namespace

Symfony\Component\HttpFoundation\Tests\Session\Storage\Handler
View source
class LegacyPdoSessionHandlerTest extends \PHPUnit_Framework_TestCase {
  private $pdo;
  protected function setUp() {
    if (!class_exists('PDO') || !in_array('sqlite', \PDO::getAvailableDrivers())) {
      $this
        ->markTestSkipped('This test requires SQLite support in your environment');
    }
    $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
      ->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
      ->setExpectedException('InvalidArgumentException');
    $storage = new LegacyPdoSessionHandler($pdo, array(
      'db_table' => 'sessions',
    ));
  }
  public function testWrongTableOptionsWrite() {
    $storage = new LegacyPdoSessionHandler($this->pdo, array(
      'db_table' => 'bad_name',
    ));
    $this
      ->setExpectedException('RuntimeException');
    $storage
      ->write('foo', 'bar');
  }
  public function testWrongTableOptionsRead() {
    $storage = new LegacyPdoSessionHandler($this->pdo, array(
      'db_table' => 'bad_name',
    ));
    $this
      ->setExpectedException('RuntimeException');
    $storage
      ->read('foo', 'bar');
  }
  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));
  }

}

Members