8000 [BrowserKit] Remove dependency of CookieJar to Response · symfony/symfony@95b8e29 · GitHub
[go: up one dir, main page]

Skip to content

Commit 95b8e29

Browse files
committed
[BrowserKit] Remove dependency of CookieJar to Response
1 parent 8eea5c3 commit 95b8e29

File tree

2 files changed

+32
-13
lines changed

2 files changed

+32
-13
lines changed

src/Symfony/Component/BrowserKit/CookieJar.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,16 @@ public function clear()
8989
}
9090

9191
/**
92-
* Updates the cookie jar from a Response object.
92+
* Updates the cookie jar from a response Set-Cookie headers.
9393
*
94-
* @param Response $response A Response object
95-
* @param string $uri The base URL
94+
* @param array $setCookies Set-Cookie headers from an HTTP response
95+
* @param string $uri The base URL
9696
*/
97-
public function updateFromResponse(Response $response, $uri = null)
97+
public function updateFromSetCookie(array $setCookies, $uri = null)
9898
{
9999
$cookies = array();
100100

101-
foreach ($response->getHeader('Set-Cookie', false) as $cookie) {
101+
foreach ($setCookies as $cookie) {
102102
foreach (explode(',', $cookie) as $i => $part) {
103103
if (0 === $i || preg_match('/^(?P<token>\s*[0-9A-Za-z!#\$%\&\'\*\+\-\.^_`\|~]+)=/', $part)) {
104104
$cookies[] = ltrim($part);
@@ -113,6 +113,17 @@ publ 10000 ic function updateFromResponse(Response $response, $uri = null)
113113
}
114114
}
115115

116+
/**
117+
* Updates the cookie jar from a Response object.
118+
*
119+
* @param Response $response A Response object
120+
* @param string $uri The base URL
121+
*/
122+
public function updateFromResponse(Response $response, $uri = null)
123+
{
124+
$this->updateFromSetCookie($response->getHeader('Set-Cookie', false), $uri);
125+
}
126+
116127
/**
117128
* Returns not yet expired cookies.
118129
*

src/Symfony/Component/BrowserKit/Tests/CookieJarTest.php

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,25 +63,33 @@ public function testUpdateFromResponse()
6363
$response = new Response('', 200, array('Set-Cookie' => 'foo=foo'));
6464

6565
$cookieJar = new CookieJar();
66-
$cookieJar->set(new Cookie('bar', 'bar'));
6766
$cookieJar->updateFromResponse($response);
6867

68+
$this->assertEquals('foo', $cookieJar->get('foo')->getValue(), '->updateFromResponse() updates cookies from a Response objects');
69+
}
70+
71+
public function testUpdateFromSetCookie()
72+
{
73+
$setCookies = array('foo=foo');
74+
75+
$cookieJar = new CookieJar();
76+
$cookieJar->set(new Cookie('bar', 'bar'));
77+
$cookieJar->updateFromSetCookie($setCookies);
78+
6979
$this->assertInstanceOf('Symfony\Component\BrowserKit\Cookie', $cookieJar->get('foo'));
7080
$this->assertInstanceOf('Symfony\Component\BrowserKit\Cookie', $cookieJar->get('bar'));
71-
$this->assertEquals('foo', $cookieJar->get('foo')->getValue(), '->updateFromResponse() updates cookies from a Response objects');
72-
$this->assertEquals('bar', $cookieJar->get('bar')->getValue(), '->updateFromResponse() keeps existing cookies');
81+
$this->assertEquals('foo', $cookieJar->get('foo')->getValue(), '->updateFromSetCookie() updates cookies from a Set-Cookie header');
82+
$this->assertEquals('bar', $cookieJar->get('bar')->getValue(), '->updateFromSetCookie() keeps existing cookies');
7383
}
7484

75-
public function testUpdateFromResponseWithMultipleCookies()
85+
public function testUpdateFromSetCookieWithMultipleCookies()
7686
{
7787
$timestamp = time() + 3600;
7888
$date = gmdate('D, d M Y H:i:s \G\M\T', $timestamp);
79-
$response = new Response('', 200, array(
80-
'Set-Cookie' => sprintf('foo=foo; expires=%s; domain=.symfony.com; path=/, bar=bar; domain=.blog.symfony.com, PHPSESSID=id; expires=%s', $date, $date)
81-
));
89+
$setCookies = array(sprintf('foo=foo; expires=%s; domain=.symfony.com; path=/, bar=bar; domain=.blog.symfony.com, PHPSESSID=id; expires=%s', $date, $date));
8290

8391
$cookieJar = new CookieJar();
84-
$cookieJar->updateFromResponse($response);
92+
$cookieJar->updateFromSetCookie($setCookies);
8593

8694
$fooCookie = $cookieJar->get('foo', '/', '.symfony.com');
8795
$barCookie = $cookieJar->get('bar', '/', '.blog.symfony.com');

0 commit comments

Comments
 (0)
0