54 lines
1.7 KiB
PHP
54 lines
1.7 KiB
PHP
<?php
|
|
namespace Ratchet\Session\Storage;
|
|
use Ratchet\Session\Serialize\PhpHandler;
|
|
use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
|
|
use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
|
|
use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler;
|
|
|
|
class VirtualSessionStoragePDOTest extends \PHPUnit_Framework_TestCase {
|
|
/**
|
|
* @var VirtualSessionStorage
|
|
*/
|
|
protected $_virtualSessionStorage;
|
|
|
|
protected $_pathToDB;
|
|
|
|
public function setUp() {
|
|
if (!extension_loaded('PDO') || !extension_loaded('pdo_sqlite')) {
|
|
return $this->markTestSkipped('Session test requires PDO and pdo_sqlite');
|
|
}
|
|
|
|
$schema = <<<SQL
|
|
CREATE TABLE `sessions` (
|
|
`sess_id` VARBINARY(128) NOT NULL PRIMARY KEY,
|
|
`sess_data` BLOB NOT NULL,
|
|
`sess_time` INTEGER UNSIGNED NOT NULL,
|
|
`sess_lifetime` MEDIUMINT NOT NULL
|
|
);
|
|
SQL;
|
|
$this->_pathToDB = tempnam(sys_get_temp_dir(), 'SQ3');;
|
|
$dsn = 'sqlite:' . $this->_pathToDB;
|
|
|
|
$pdo = new \PDO($dsn);
|
|
$pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
|
|
$pdo->exec($schema);
|
|
$pdo = null;
|
|
|
|
$sessionHandler = new PdoSessionHandler($dsn);
|
|
$serializer = new PhpHandler();
|
|
$this->_virtualSessionStorage = new VirtualSessionStorage($sessionHandler, 'foobar', $serializer);
|
|
$this->_virtualSessionStorage->registerBag(new FlashBag());
|
|
$this->_virtualSessionStorage->registerBag(new AttributeBag());
|
|
}
|
|
|
|
public function tearDown() {
|
|
unlink($this->_pathToDB);
|
|
}
|
|
|
|
public function testStartWithDSN() {
|
|
$this->_virtualSessionStorage->start();
|
|
|
|
$this->assertTrue($this->_virtualSessionStorage->isStarted());
|
|
}
|
|
}
|