[HttpFoundation][BrowserKit] fixed path when converting a cookie to a string
An empty path has a different meaning than a /; it means that the path is the one from the current URI.
This commit is contained in:
parent
c884151e16
commit
36d057b69e
@ -95,7 +95,7 @@ class Cookie
|
||||
$cookie .= '; domain='.$this->domain;
|
||||
}
|
||||
|
||||
if ('/' !== $this->path) {
|
||||
if ($this->path) {
|
||||
$cookie .= '; path='.$this->path;
|
||||
}
|
||||
|
||||
|
@ -211,7 +211,7 @@ class ClientTest extends \PHPUnit_Framework_TestCase
|
||||
$client->setNextResponse(new Response('<html><a href="/foo">foo</a></html>', 200, array('Set-Cookie' => 'foo=bar; path=/; secure')));
|
||||
$client->request('GET', 'https://www.example.com/foo/foobar');
|
||||
|
||||
$this->assertTrue($client->getCookieJar()->get('foo','/','www.example.com')->isSecure());
|
||||
$this->assertTrue($client->getCookieJar()->get('foo', '/', 'www.example.com')->isSecure());
|
||||
}
|
||||
|
||||
public function testClick()
|
||||
|
@ -26,14 +26,14 @@ class CookieTest extends \PHPUnit_Framework_TestCase
|
||||
public function getTestsForToFromString()
|
||||
{
|
||||
return array(
|
||||
array('foo=bar'),
|
||||
array('foo=bar; path=/'),
|
||||
array('foo=bar; path=/foo'),
|
||||
array('foo=bar; domain=google.com'),
|
||||
array('foo=bar; domain=example.com; secure', 'https://example.com/'),
|
||||
array('foo=bar; httponly'),
|
||||
array('foo=bar; domain=google.com; path=/'),
|
||||
array('foo=bar; domain=example.com; path=/; secure', 'https://example.com/'),
|
||||
array('foo=bar; path=/; httponly'),
|
||||
array('foo=bar; domain=google.com; path=/foo; secure; httponly', 'https://google.com/'),
|
||||
array('foo=bar=baz'),
|
||||
array('foo=bar%3Dbaz'),
|
||||
array('foo=bar=baz; path=/'),
|
||||
array('foo=bar%3Dbaz; path=/'),
|
||||
);
|
||||
}
|
||||
|
||||
@ -67,17 +67,17 @@ class CookieTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
public function testFromStringWithCapitalization()
|
||||
{
|
||||
$this->assertEquals('Foo=Bar', (string) Cookie::fromString('Foo=Bar'));
|
||||
$this->assertEquals('foo=bar; expires=Fri, 31 Dec 2010 23:59:59 GMT', (string) Cookie::fromString('foo=bar; Expires=Fri, 31 Dec 2010 23:59:59 GMT'));
|
||||
$this->assertEquals('foo=bar; domain=www.example.org; httponly', (string) Cookie::fromString('foo=bar; DOMAIN=www.example.org; HttpOnly'));
|
||||
$this->assertEquals('Foo=Bar; path=/', (string) Cookie::fromString('Foo=Bar'));
|
||||
$this->assertEquals('foo=bar; expires=Fri, 31 Dec 2010 23:59:59 GMT; path=/', (string) Cookie::fromString('foo=bar; Expires=Fri, 31 Dec 2010 23:59:59 GMT'));
|
||||
$this->assertEquals('foo=bar; domain=www.example.org; path=/; httponly', (string) Cookie::fromString('foo=bar; DOMAIN=www.example.org; HttpOnly'));
|
||||
}
|
||||
|
||||
public function testFromStringWithUrl()
|
||||
{
|
||||
$this->assertEquals('foo=bar; domain=www.example.com', (string) Cookie::FromString('foo=bar', 'http://www.example.com/'));
|
||||
$this->assertEquals('foo=bar; domain=www.example.com; path=/', (string) Cookie::FromString('foo=bar', 'http://www.example.com/'));
|
||||
$this->assertEquals('foo=bar; domain=www.example.com; path=/foo', (string) Cookie::FromString('foo=bar', 'http://www.example.com/foo/bar'));
|
||||
$this->assertEquals('foo=bar; domain=www.example.com', (string) Cookie::FromString('foo=bar; path=/', 'http://www.example.com/foo/bar'));
|
||||
$this->assertEquals('foo=bar; domain=www.myotherexample.com', (string) Cookie::FromString('foo=bar; domain=www.myotherexample.com', 'http://www.example.com/'));
|
||||
$this->assertEquals('foo=bar; domain=www.example.com; path=/', (string) Cookie::FromString('foo=bar; path=/', 'http://www.example.com/foo/bar'));
|
||||
$this->assertEquals('foo=bar; domain=www.myotherexample.com; path=/', (string) Cookie::FromString('foo=bar; domain=www.myotherexample.com', 'http://www.example.com/'));
|
||||
}
|
||||
|
||||
public function testFromStringThrowsAnExceptionIfCookieIsNotValid()
|
||||
|
@ -91,7 +91,7 @@ class Cookie
|
||||
}
|
||||
}
|
||||
|
||||
if ('/' !== $this->path) {
|
||||
if ($this->path) {
|
||||
$str .= '; path='.$this->path;
|
||||
}
|
||||
|
||||
|
@ -117,12 +117,12 @@ class CookieTest extends \PHPUnit_Framework_TestCase
|
||||
public function testToString()
|
||||
{
|
||||
$cookie = new Cookie('foo', 'bar', strtotime('Fri, 20-May-2011 15:25:52 GMT'), '/', '.myfoodomain.com', true);
|
||||
$this->assertEquals('foo=bar; expires=Fri, 20-May-2011 15:25:52 GMT; domain=.myfoodomain.com; secure; httponly', $cookie->__toString(), '->__toString() returns string representation of the cookie');
|
||||
$this->assertEquals('foo=bar; expires=Fri, 20-May-2011 15:25:52 GMT; path=/; domain=.myfoodomain.com; secure; httponly', $cookie->__toString(), '->__toString() returns string representation of the cookie');
|
||||
|
||||
$cookie = new Cookie('foo', null, 1, '/admin/', '.myfoodomain.com');
|
||||
$this->assertEquals('foo=deleted; expires=' . gmdate("D, d-M-Y H:i:s T", time()-31536001) . '; path=/admin/; domain=.myfoodomain.com; httponly', $cookie->__toString(), '->__toString() returns string representation of a cleared cookie if value is NULL');
|
||||
|
||||
$cookie = new Cookie('foo', 'bar', 0, '/', '');
|
||||
$this->assertEquals('foo=bar; httponly', $cookie->__toString());
|
||||
$this->assertEquals('foo=bar; path=/; httponly', $cookie->__toString());
|
||||
}
|
||||
}
|
||||
|
@ -69,11 +69,11 @@ class ResponseHeaderBagTest extends \PHPUnit_Framework_TestCase
|
||||
$bag = new ResponseHeaderBag(array());
|
||||
$bag->setCookie(new Cookie('foo', 'bar'));
|
||||
|
||||
$this->assertContains("Set-Cookie: foo=bar; httponly", explode("\r\n", $bag->__toString()));
|
||||
$this->assertContains("Set-Cookie: foo=bar; path=/; httponly", explode("\r\n", $bag->__toString()));
|
||||
|
||||
$bag->clearCookie('foo');
|
||||
|
||||
$this->assertContains("Set-Cookie: foo=deleted; expires=".gmdate("D, d-M-Y H:i:s T", time() - 31536001)."; httponly", explode("\r\n", $bag->__toString()));
|
||||
$this->assertContains("Set-Cookie: foo=deleted; expires=".gmdate("D, d-M-Y H:i:s T", time() - 31536001)."; path=/; httponly", explode("\r\n", $bag->__toString()));
|
||||
}
|
||||
|
||||
public function testReplace()
|
||||
@ -113,7 +113,7 @@ class ResponseHeaderBagTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertContains("Set-Cookie: foo=bar; path=/path/foo; domain=foo.bar; httponly", $headers);
|
||||
$this->assertContains("Set-Cookie: foo=bar; path=/path/foo; domain=foo.bar; httponly", $headers);
|
||||
$this->assertContains("Set-Cookie: foo=bar; path=/path/bar; domain=bar.foo; httponly", $headers);
|
||||
$this->assertContains("Set-Cookie: foo=bar; httponly", $headers);
|
||||
$this->assertContains("Set-Cookie: foo=bar; path=/; httponly", $headers);
|
||||
|
||||
$cookies = $bag->getCookies(ResponseHeaderBag::COOKIES_ARRAY);
|
||||
$this->assertTrue(isset($cookies['foo.bar']['/path/foo']['foo']));
|
||||
|
Reference in New Issue
Block a user