cakephp2-php8/lib/Cake/Test/Case/Model/Datasource/Session/DatabaseSessionTest.php

193 lines
4 KiB
PHP
Raw Normal View History

<?php
/**
* DatabaseSessionTest file
*
* PHP 5
*
2012-04-27 02:49:18 +00:00
* CakePHP(tm) Tests <http://book.cakephp.org/2.0/en/development/testing.html>
2012-03-13 02:46:07 +00:00
* Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
2012-03-13 02:46:07 +00:00
* @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package Cake.Test.Case.Model.Datasource.Session
* @since CakePHP(tm) v 2.0
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
*/
App::uses('Model', 'Model');
2010-12-22 03:02:12 +00:00
App::uses('CakeSession', 'Model/Datasource');
App::uses('DatabaseSession', 'Model/Datasource/Session');
2010-12-22 03:02:12 +00:00
class_exists('CakeSession');
class SessionTestModel extends Model {
2012-03-19 01:20:17 +00:00
public $name = 'SessionTestModel';
2012-03-19 01:20:17 +00:00
public $useTable = 'sessions';
2012-03-19 01:20:17 +00:00
}
/**
* Database session test.
*
* @package Cake.Test.Case.Model.Datasource.Session
*/
class DatabaseSessionTest extends CakeTestCase {
protected static $_sessionBackup;
/**
* fixtures
*
* @var string
*/
public $fixtures = array('core.session');
/**
* test case startup
*
* @return void
*/
public static function setupBeforeClass() {
self::$_sessionBackup = Configure::read('Session');
2010-09-06 05:21:58 +00:00
Configure::write('Session.handler', array(
'model' => 'SessionTestModel',
));
Configure::write('Session.timeout', 100);
}
/**
* cleanup after test case.
*
* @return void
*/
public static function teardownAfterClass() {
Configure::write('Session', self::$_sessionBackup);
}
/**
* setUp
*
* @return void
*/
public function setUp() {
parent::setUp();
$this->storage = new DatabaseSession();
}
/**
* tearDown
*
* @return void
*/
public function tearDown() {
unset($this->storage);
2010-09-06 05:21:58 +00:00
ClassRegistry::flush();
parent::tearDown();
2010-09-06 05:21:58 +00:00
}
/**
* test that constructor sets the right things up.
*
* @return void
*/
public function testConstructionSettings() {
2010-09-06 05:21:58 +00:00
ClassRegistry::flush();
$storage = new DatabaseSession();
$session = ClassRegistry::getObject('session');
$this->assertInstanceOf('SessionTestModel', $session);
2010-09-06 05:21:58 +00:00
$this->assertEquals('Session', $session->alias);
$this->assertEquals('test', $session->useDbConfig);
$this->assertEquals('sessions', $session->useTable);
}
/**
* test opening the session
*
* @return void
*/
public function testOpen() {
$this->assertTrue($this->storage->open());
}
/**
* test write()
*
* @return void
*/
public function testWrite() {
$result = $this->storage->write('foo', 'Some value');
$expected = array(
'Session' => array(
'id' => 'foo',
'data' => 'Some value',
)
);
2012-07-19 02:22:57 +00:00
$expires = $result['Session']['expires'];
unset($result['Session']['expires']);
$this->assertEquals($expected, $result);
2012-07-19 02:22:57 +00:00
$expected = time() + (Configure::read('Session.timeout') * 60);
$this->assertWithinMargin($expires, $expected, 1);
}
/**
* testReadAndWriteWithDatabaseStorage method
*
* @return void
*/
public function testWriteEmptySessionId() {
$result = $this->storage->write('', 'This is a Test');
$this->assertFalse($result);
}
2011-12-06 20:52:48 +00:00
/**
* test read()
*
* @return void
*/
public function testRead() {
$this->storage->write('foo', 'Some value');
$result = $this->storage->read('foo');
$expected = 'Some value';
$this->assertEquals($expected, $result);
$result = $this->storage->read('made up value');
$this->assertFalse($result);
}
/**
* test blowing up the session.
*
* @return void
*/
public function testDestroy() {
$this->storage->write('foo', 'Some value');
$this->assertTrue($this->storage->destroy('foo'), 'Destroy failed');
$this->assertFalse($this->storage->read('foo'), 'Value still present.');
}
/**
* test the garbage collector
*
* @return void
*/
public function testGc() {
ClassRegistry::flush();
Configure::write('Session.timeout', 0);
$storage = new DatabaseSession();
$storage->write('foo', 'Some value');
sleep(1);
$storage->gc();
$this->assertFalse($storage->read('foo'));
}
2012-03-19 01:20:17 +00:00
}