Fix clear(). Add test cases.

This commit is contained in:
Mark Scherer 2015-01-28 23:54:32 +01:00
parent 35e0dc2bbd
commit 611889235a
2 changed files with 16 additions and 5 deletions

View file

@ -374,7 +374,7 @@ class CakeSession {
*
* @param string|null $name The name of the session variable (or a path as sent to Set.extract)
* @return mixed The value of the session variable, null if session not available,
* session not started, or provided name not found in the session.
* session not started, or provided name not found in the session, false on failure.
*/
public static function read($name = null) {
if (empty($name) && $name !== null) {
@ -478,11 +478,14 @@ class CakeSession {
* @return void
*/
public static function clear($renew = true) {
$_SESSION = null;
if ($renew) {
self::$id = null;
self::renew();
if (!$renew) {
$_SESSION = array();
return;
}
$_SESSION = null;
self::$id = null;
self::renew();
}
/**

View file

@ -413,6 +413,14 @@ class CakeSessionTest extends CakeTestCase {
TestCakeSession::clear(false);
$this->assertFalse(TestCakeSession::check('Delete.me'));
$this->assertFalse(TestCakeSession::check('Delete'));
TestCakeSession::write('Some.string', 'value');
TestCakeSession::clear(false);
$this->assertNull(TestCakeSession::read('Some'));
TestCakeSession::write('Some.string.array', array('values'));
TestCakeSession::clear(false);
$this->assertFalse(TestCakeSession::read());
}
/**