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) * @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, * @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) { public static function read($name = null) {
if (empty($name) && $name !== null) { if (empty($name) && $name !== null) {
@ -478,11 +478,14 @@ class CakeSession {
* @return void * @return void
*/ */
public static function clear($renew = true) { public static function clear($renew = true) {
$_SESSION = null; if (!$renew) {
if ($renew) { $_SESSION = array();
self::$id = null; return;
self::renew();
} }
$_SESSION = null;
self::$id = null;
self::renew();
} }
/** /**

View file

@ -413,6 +413,14 @@ class CakeSessionTest extends CakeTestCase {
TestCakeSession::clear(false); TestCakeSession::clear(false);
$this->assertFalse(TestCakeSession::check('Delete.me')); $this->assertFalse(TestCakeSession::check('Delete.me'));
$this->assertFalse(TestCakeSession::check('Delete')); $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());
} }
/** /**