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

This commit is contained in:
Hugo Hamon 2011-03-03 14:49:34 +01:00
parent 6790e45911
commit ad56bd8e47
2 changed files with 55 additions and 5 deletions

View File

@ -24,9 +24,9 @@ class Cookie
protected $expire;
protected $path;
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
if (preg_match("/[=,; \t\r\n\013\014]/", $name)) {
@ -47,7 +47,7 @@ class Cookie
$this->expire = (integer) $expire;
$this->path = $path;
$this->secure = (Boolean) $secure;
$this->httponly = (Boolean) $httponly;
$this->httpOnly = (Boolean) $httpOnly;
}
public function getName()
@ -80,9 +80,9 @@ class Cookie
return $this->secure;
}
public function isHttponly()
public function isHttpOnly()
{
return $this->httponly;
return $this->httpOnly;
}
/**

View File

@ -17,6 +17,7 @@ use Symfony\Component\HttpFoundation\Cookie;
* CookieTest
*
* @author John Kary <john@johnkary.net>
* @author Hugo Hamon <hugo.hamon@sensio.com>
*/
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');
}
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');
}
}