Browse Source

Merge pull request #2482 from zoghal/2.5-cookie-fix2

fix CookieComponent - when write null or empty string
Mark Story 12 years ago
parent
commit
bf96ea36d9

+ 1 - 1
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==.";

+ 30 - 0
lib/Cake/Test/Case/Controller/Component/CookieComponentTest.php

@@ -202,6 +202,36 @@ class CookieComponentTest extends CakeTestCase {
 	}
 
 /**
+ * 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.
  *
  * @return void