10158 get vary multiple

This commit is contained in:
Beth Binkovitz 2014-03-04 14:15:32 -06:00 committed by Fabien Potencier
parent 50579442f8
commit 3a4a3cbe30
2 changed files with 21 additions and 3 deletions

View File

@ -987,11 +987,17 @@ class Response
*/
public function getVary()
{
if (!$vary = $this->headers->get('Vary')) {
if (!$vary = $this->headers->get('Vary', null, false)) {
return array();
}
return is_array($vary) ? $vary : preg_split('/[\s,]+/', $vary);
$ret = array();
foreach ($vary as $item) {
$ret = array_merge($ret, preg_split('/[\s,]+/', $item));
}
return $ret;
}
/**

View File

@ -284,6 +284,16 @@ class ResponseTest extends ResponseTestCase
$response = new Response();
$response->headers->set('Vary', 'Accept-Language,User-Agent, X-Foo');
$this->assertEquals(array('Accept-Language', 'User-Agent', 'X-Foo'), $response->getVary(), '->getVary() parses multiple header name values separated by commas');
$response = new Response();
$vary = array(
'Accept-Language',
'User-Agent',
'X-foo',
);
$response->headers->set('Vary', $vary);
$this->assertEquals($response->headers->get('Vary', NULL, FALSE) , $response->getVary(), '->getVary() parses multiple header name values in arrays');
}
public function testSetVary()
@ -296,7 +306,9 @@ class ResponseTest extends ResponseTestCase
$this->assertEquals(array('Accept-Language', 'User-Agent'), $response->getVary(), '->setVary() replace the vary header by default');
$response->setVary('X-Foo', false);
$this->assertEquals(array('Accept-Language', 'User-Agent'), $response->getVary(), '->setVary() doesn\'t change the Vary header if replace is set to false');
$this->assertTrue(in_array('Accept-Language', $response->getVary()), '->setVary() doesn\'t wipe out earlier Vary headers if replace is set to false');
$this->assertTrue(in_array('User-Agent', $response->getVary()), '->setVary() doesn\'t wipe out earlier Vary headers if replace is set to false');
$this->assertTrue(in_array('X-Foo', $response->getVary()), '->setVary() adds new Vary headers when replace is set to false');
}
public function testDefaultContentType()