diff --git a/lib/Cake/Controller/Component/CookieComponent.php b/lib/Cake/Controller/Component/CookieComponent.php index d1aececd2..fd7db6124 100644 --- a/lib/Cake/Controller/Component/CookieComponent.php +++ b/lib/Cake/Controller/Component/CookieComponent.php @@ -472,7 +472,7 @@ class CookieComponent extends Component { if (is_array($value)) { $value = $this->_implode($value); } - if (!$this->_encrypted) { + if (!$this->_encrypted || !$value) { return $value; } $prefix = "Q2FrZQ==."; diff --git a/lib/Cake/Test/Case/Controller/Component/CookieComponentTest.php b/lib/Cake/Test/Case/Controller/Component/CookieComponentTest.php index 25f165c27..ae07a485f 100644 --- a/lib/Cake/Test/Case/Controller/Component/CookieComponentTest.php +++ b/lib/Cake/Test/Case/Controller/Component/CookieComponentTest.php @@ -201,6 +201,36 @@ class CookieComponentTest extends CakeTestCase { $this->assertEquals('value', $result); } +/** + * test write() Encrypted data with null & empty string & boolean value + * + * @return void + */ + public function testWriteWithNullEmptyString() { + $this->Cookie->type('aes'); + $this->Cookie->key = 'qSI232qs*&sXOw!adre@34SAv!@*(XSL#$%)asGb$@11~_+!@#HKis~#^'; + + $this->Cookie->write('Testing'); + $result = $this->Cookie->read('Testing'); + $this->assertNull($result); + + $this->Cookie->write('Testing', ''); + $result = $this->Cookie->read('Testing'); + $this->assertEquals('', $result); + + $this->Cookie->write('Testing', false); + $result = $this->Cookie->read('Testing'); + $this->assertFalse($result); + + $this->Cookie->write('Testing', 1); + $result = $this->Cookie->read('Testing'); + $this->assertEquals(1, $result); + + $this->Cookie->write('Testing', '0'); + $result = $this->Cookie->read('Testing'); + $this->assertEquals('0', $result); + } + /** * test that two write() calls use the expiry. *