Explorar o código

[HttpFoundation] fix cookie path default value to / and added some new unit tests to cover the class

Hugo Hamon %!s(int64=14) %!d(string=hai) anos
pai
achega
ad56bd8e47

+ 5 - 5
src/Symfony/Component/HttpFoundation/Cookie.php

@@ -24,9 +24,9 @@ class Cookie
     protected $expire;
     protected $expire;
     protected $path;
     protected $path;
     protected $secure;
     protected $secure;
-    protected $httponly;
+    protected $httpOnly;
 
 
-    public function __construct($name, $value = null, $expire = 0, $path = null, $domain = null, $secure = false, $httponly = true)
+    public function __construct($name, $value = null, $expire = 0, $path = '/', $domain = null, $secure = false, $httpOnly = true)
     {
     {
         // from PHP source code
         // from PHP source code
         if (preg_match("/[=,; \t\r\n\013\014]/", $name)) {
         if (preg_match("/[=,; \t\r\n\013\014]/", $name)) {
@@ -47,7 +47,7 @@ class Cookie
         $this->expire = (integer) $expire;
         $this->expire = (integer) $expire;
         $this->path = $path;
         $this->path = $path;
         $this->secure = (Boolean) $secure;
         $this->secure = (Boolean) $secure;
-        $this->httponly = (Boolean) $httponly;
+        $this->httpOnly = (Boolean) $httpOnly;
     }
     }
 
 
     public function getName()
     public function getName()
@@ -80,9 +80,9 @@ class Cookie
         return $this->secure;
         return $this->secure;
     }
     }
 
 
-    public function isHttponly()
+    public function isHttpOnly()
     {
     {
-        return $this->httponly;
+        return $this->httpOnly;
     }
     }
 
 
     /**
     /**

+ 50 - 0
tests/Symfony/Tests/Component/HttpFoundation/CookieTest.php

@@ -17,6 +17,7 @@ use Symfony\Component\HttpFoundation\Cookie;
  * CookieTest
  * CookieTest
  *
  *
  * @author John Kary <john@johnkary.net>
  * @author John Kary <john@johnkary.net>
+ * @author Hugo Hamon <hugo.hamon@sensio.com>
  */
  */
 class CookieTest extends \PHPUnit_Framework_TestCase
 class CookieTest extends \PHPUnit_Framework_TestCase
 {
 {
@@ -79,4 +80,53 @@ class CookieTest extends \PHPUnit_Framework_TestCase
 
 
         $this->assertSame($value, $cookie->getValue(), '->getValue() returns the proper value');
         $this->assertSame($value, $cookie->getValue(), '->getValue() returns the proper value');
     }
     }
+
+    public function testGetPath()
+    {
+        $cookie = new Cookie('foo', 'bar');
+
+        $this->assertSame('/', $cookie->getPath(), '->getPath() returns / as the default path');
+    }
+
+    public function testGetExpires()
+    {
+        $cookie = new Cookie('foo', 'bar', 3600);
+
+        $this->assertEquals(3600, $cookie->getExpire(), '->getExpire() returns the expire date');
+    }
+
+    public function testGetDomain()
+    {
+        $cookie = new Cookie('foo', 'bar', 3600, '/', '.myfoodomain.com');
+
+        $this->assertEquals('.myfoodomain.com', $cookie->getDomain(), '->getDomain() returns the domain name on which the cookie is valid');
+    }
+
+    public function testIsSecure()
+    {
+        $cookie = new Cookie('foo', 'bar', 3600, '/', '.myfoodomain.com', true);
+
+        $this->assertTrue($cookie->isSecure(), '->isSecure() returns whether the cookie is transmitted over HTTPS');
+    }
+
+    public function testIsHttpOnly()
+    {
+        $cookie = new Cookie('foo', 'bar', 3600, '/', '.myfoodomain.com', false, true);
+
+        $this->assertTrue($cookie->isHttpOnly(), '->isHttpOnly() returns whether the cookie is only transmitted over HTTP');
+    }
+
+    public function testCookieIsNotCleared()
+    {
+        $cookie = new Cookie('foo', 'bar', time()+3600*24);
+
+        $this->assertFalse($cookie->isCleared(), '->isCleared() returns false if the cookie did not expire yet');
+    }
+
+    public function testCookieIsCleared()
+    {
+        $cookie = new Cookie('foo', 'bar', time()-20);
+
+        $this->assertTrue($cookie->isCleared(), '->isCleared() returns true if the cookie has expired');
+    }
 }
 }