141 lines
3.8 KiB
PHP
141 lines
3.8 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Symfony package.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Symfony\Tests\Component\HttpFoundation;
|
|
|
|
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
|
|
{
|
|
public function invalidNames()
|
|
{
|
|
return array(
|
|
array(''),
|
|
array(",MyName"),
|
|
array(";MyName"),
|
|
array(" MyName"),
|
|
array("\tMyName"),
|
|
array("\rMyName"),
|
|
array("\nMyName"),
|
|
array("\013MyName"),
|
|
array("\014MyName"),
|
|
);
|
|
}
|
|
|
|
public function invalidValues()
|
|
{
|
|
return array(
|
|
array(",MyValue"),
|
|
array(";MyValue"),
|
|
array(" MyValue"),
|
|
array("\tMyValue"),
|
|
array("\rMyValue"),
|
|
array("\nMyValue"),
|
|
array("\013MyValue"),
|
|
array("\014MyValue"),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider invalidNames
|
|
* @expectedException InvalidArgumentException
|
|
* @covers Symfony\Component\HttpFoundation\Cookie::__construct
|
|
*/
|
|
public function testInstantiationThrowsExceptionIfCookieNameContainsInvalidCharacters($name)
|
|
{
|
|
new Cookie($name);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider invalidValues
|
|
* @expectedException InvalidArgumentException
|
|
* @covers Symfony\Component\HttpFoundation\Cookie::__construct
|
|
*/
|
|
public function testInstantiationThrowsExceptionIfCookieValueContainsInvalidCharacters($value)
|
|
{
|
|
new Cookie('MyCookie', $value);
|
|
}
|
|
|
|
/**
|
|
* @expectedException InvalidArgumentException
|
|
*/
|
|
public function testInvalidExpiration()
|
|
{
|
|
$cookie = new Cookie('MyCookie', 'foo','bar');
|
|
}
|
|
|
|
/**
|
|
* @covers Symfony\Component\HttpFoundation\Cookie::getValue
|
|
*/
|
|
public function testGetValue()
|
|
{
|
|
$value = 'MyValue';
|
|
$cookie = new Cookie('MyCookie', $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');
|
|
}
|
|
}
|