Permalink
Browse files

Fix missing expiry times on cookies.

When writing multiple cookies in a single request with the default
expiry time, cookies after the first should continue to have the default
expiry time used.

Fixes #3965
  • Loading branch information...
1 parent 3f186d6 commit 9efad54e31998ecb64015774b1351260ad0f3110 @markstory markstory committed Aug 7, 2013
@@ -421,7 +421,7 @@ protected function _write($name, $value) {
'httpOnly' => $this->httpOnly
));
- if (!is_null($this->_reset)) {
+ if (!empty($this->_reset)) {
$this->_expires = $this->_reset;
$this->_reset = null;
}
@@ -204,6 +204,24 @@ public function testWriteSimple() {
}
/**
+ * test that two write() calls use the expiry.
+ *
+ * @return void
+ */
+ public function testWriteMultipleShareExpiry() {
+ $this->Cookie->write('key1', 'value1', false);
+ $this->Cookie->write('key2', 'value2', false);
+
+ $name = $this->Cookie->name . '[key1]';
+ $result = $this->Controller->response->cookie($name);
+ $this->assertWithinMargin(time() + 10, $result['expire'], 2, 'Expiry time is wrong');
+
+ $name = $this->Cookie->name . '[key2]';
+ $result = $this->Controller->response->cookie($name);
+ $this->assertWithinMargin(time() + 10, $result['expire'], 2, 'Expiry time is wrong');
+ }
+
+/**
* test write with distant future cookies
*
* @return void

0 comments on commit 9efad54

Please sign in to comment.