Newer
Older
ubFramework / Portal / docroot / lib / HTTP_Session2 / tests / test-session-doctrine.phpt
@Christopher W. Olsen Christopher W. Olsen on 10 Dec 2017 2 KB Cleaning Up Making It A Sub Module
--TEST--
HTTP_Session2 with phpDoctrine container (and sqlite) write and read
--SKIPIF--
<?php
$skip = true;
if ($skip === true) {
    die('Skip This is an incomplete test.');
}
if (!extension_loaded('pdo')) {
    die('Skip This test needs pdo, please make sure it\'s loaded.');
}
if (!extension_loaded('pdo_sqlite')) {
    die('Skip This test needs pdo_sqlite, please make sure it\'s loaded.');
}
include_once 'Doctrine/lib/Doctrine.php';
if (!class_exists('Doctrine')) {
    die('Skip This test needs phpDoctrine, please make sure it\'s installed.');
}
?>
--FILE--
<?php
$_tmp = dirname(__FILE__) . '/tmp';
$_db  = $_tmp . '/test-doctrine.db';

require_once 'HTTP/Session2.php';

/**
 * This is a hack.
 *
 * @param string $_db Path to the db.
 *
 * @return void
 */
function createDB($db)
{
    require_once 'Doctrine/lib/Doctrine.php';
    spl_autoload_register(array('Doctrine', 'autoload'));

    try {
        $db   = Doctrine_Manager::connection("sqlite:///$db");
        $path = '@include_path@/HTTP/Session2/Container/Doctrine';

        if (strstr($path, '@include_path@')) { // for from VCS
            $path = str_replace(
                '@include_path@',
                realpath(dirname(__FILE__) . '/../'),
                $path
            );
        }
        $sql = Doctrine::generateSqlFromModels($path);
        $db->execute($sql);
    } catch (Doctrine_Exception $e) {
        if (!strstr($e->getMessage(), 'already exists')) {
            die("createDB sql error: {$e->getMessage()} ({$e->getCode()})");
        }
    }
}

if (!file_exists($_tmp)) {
    mkdir($_tmp);
}
createDB($_db);

try {
    HTTP_Session2::useCookies(false);
    HTTP_Session2::setContainer('Doctrine',
        array('dsn' => "sqlite:///{$_db}",
            'table' => 'sessiondata'));

    HTTP_Session2::start('testSession');
    HTTP_Session2::id('sessionTest');

    $nCount = 0;
    while (++$nCount <= 2) {
        $_var = HTTP_Session2::get('test', 'bar');
        if ($_var == 'bar') {
            var_dump("Setting..");
            HTTP_Session2::set('test', 'foobar');
        } else {
            var_dump("Retrieving..");
            var_dump(HTTP_Session2::get('test'));
        }
    }
} catch (Exception $e) {
    die($e->getMessage());
}
--CLEAN--
<?php
$_tmp = dirname(__FILE__) . '/tmp';
include dirname(__FILE__) . '/functions.php';
unlinkRecursive($_tmp);
--EXPECT--
string(9) "Setting.."
string(12) "Retrieving.."
string(6) "foobar"