[HttpFoundation] Fix AcceptHeader
This commit is contained in:
parent
b126664406
commit
395c00487c
@ -146,7 +146,7 @@ class AcceptHeader
|
|||||||
{
|
{
|
||||||
$this->sort();
|
$this->sort();
|
||||||
|
|
||||||
return !empty($this->items) ? current($this->items) : null;
|
return !empty($this->items) ? $this->items[0] : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -25,6 +25,28 @@ class AcceptHeaderItemTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals($attributes, $item->getAttributes());
|
$this->assertEquals($attributes, $item->getAttributes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function provideFromStringData()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
'text/html',
|
||||||
|
'text/html', array()
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'"this;should,not=matter"',
|
||||||
|
'this;should,not=matter', array()
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
"text/plain; charset=utf-8;param=\"this;should,not=matter\";\tfootnotes=true",
|
||||||
|
'text/plain', array('charset' => 'utf-8', 'param' => 'this;should,not=matter', 'footnotes' => 'true')
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'"this;should,not=matter";charset=utf-8',
|
||||||
|
'this;should,not=matter', array('charset' => 'utf-8')
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider provideToStringData
|
* @dataProvider provideToStringData
|
||||||
*/
|
*/
|
||||||
@ -34,6 +56,20 @@ class AcceptHeaderItemTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals($string, (string) $item);
|
$this->assertEquals($string, (string) $item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function provideToStringData()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
'text/html', array(),
|
||||||
|
'text/html'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'text/plain', array('charset' => 'utf-8', 'param' => 'this;should,not=matter', 'footnotes' => 'true'),
|
||||||
|
'text/plain;charset=utf-8;param="this;should,not=matter";footnotes=true'
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function testValue()
|
public function testValue()
|
||||||
{
|
{
|
||||||
$item = new AcceptHeaderItem('value', array());
|
$item = new AcceptHeaderItem('value', array());
|
||||||
@ -73,40 +109,4 @@ class AcceptHeaderItemTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals('value', $item->getAttribute('test'));
|
$this->assertEquals('value', $item->getAttribute('test'));
|
||||||
$this->assertEquals('value', $item->getAttribute('test', 'default'));
|
$this->assertEquals('value', $item->getAttribute('test', 'default'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function provideFromStringData()
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
array(
|
|
||||||
'text/html',
|
|
||||||
'text/html', array()
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'"this;should,not=matter"',
|
|
||||||
'this;should,not=matter', array()
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
"text/plain; charset=utf-8;param=\"this;should,not=matter\";\tfootnotes=true",
|
|
||||||
'text/plain', array('charset' => 'utf-8', 'param' => 'this;should,not=matter', 'footnotes' => 'true')
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'"this;should,not=matter";charset=utf-8',
|
|
||||||
'this;should,not=matter', array('charset' => 'utf-8')
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function provideToStringData()
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
array(
|
|
||||||
'text/html', array(),
|
|
||||||
'text/html'
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'text/plain', array('charset' => 'utf-8', 'param' => 'this;should,not=matter', 'footnotes' => 'true'),
|
|
||||||
'text/plain;charset=utf-8;param="this;should,not=matter";footnotes=true'
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,12 @@ use Symfony\Component\HttpFoundation\AcceptHeaderItem;
|
|||||||
|
|
||||||
class AcceptHeaderTest extends \PHPUnit_Framework_TestCase
|
class AcceptHeaderTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
|
public function testFirst()
|
||||||
|
{
|
||||||
|
$header = AcceptHeader::fromString('text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c');
|
||||||
|
$this->assertSame('text/html', $header->first()->getValue());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider provideFromStringData
|
* @dataProvider provideFromStringData
|
||||||
*/
|
*/
|
||||||
@ -30,33 +36,6 @@ class AcceptHeaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals($items, $parsed);
|
$this->assertEquals($items, $parsed);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider provideToStringData
|
|
||||||
*/
|
|
||||||
public function testToString(array $items, $string)
|
|
||||||
{
|
|
||||||
$header = new AcceptHeader($items);
|
|
||||||
$this->assertEquals($string, (string) $header);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider provideFilterData
|
|
||||||
*/
|
|
||||||
public function testFilter($string, $filter, array $values)
|
|
||||||
{
|
|
||||||
$header = AcceptHeader::fromString($string)->filter($filter);
|
|
||||||
$this->assertEquals($values, array_keys($header->all()));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @dataProvider provideSortingData
|
|
||||||
*/
|
|
||||||
public function testSorting($string, array $values)
|
|
||||||
{
|
|
||||||
$header = AcceptHeader::fromString($string);
|
|
||||||
$this->assertEquals($values, array_keys($header->all()));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function provideFromStringData()
|
public function provideFromStringData()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
@ -68,20 +47,13 @@ class AcceptHeaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function provideFilterData()
|
/**
|
||||||
|
* @dataProvider provideToStringData
|
||||||
|
*/
|
||||||
|
public function testToString(array $items, $string)
|
||||||
{
|
{
|
||||||
return array(
|
$header = new AcceptHeader($items);
|
||||||
array('fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4', '/fr.*/', array('fr-FR', 'fr')),
|
$this->assertEquals($string, (string) $header);
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function provideSortingData()
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
'quality has priority' => array('*;q=0.3,ISO-8859-1,utf-8;q=0.7', array('ISO-8859-1', 'utf-8', '*')),
|
|
||||||
'order matters when q is equal' => array('*;q=0.3,ISO-8859-1;q=0.7,utf-8;q=0.7', array('ISO-8859-1', 'utf-8', '*')),
|
|
||||||
'order matters when q is equal2' => array('*;q=0.3,utf-8;q=0.7,ISO-8859-1;q=0.7', array('utf-8', 'ISO-8859-1', '*')),
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function provideToStringData()
|
public function provideToStringData()
|
||||||
@ -93,4 +65,38 @@ class AcceptHeaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
array(array(new AcceptHeaderItem('this;should,not=matter')), 'this;should,not=matter'),
|
array(array(new AcceptHeaderItem('this;should,not=matter')), 'this;should,not=matter'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider provideFilterData
|
||||||
|
*/
|
||||||
|
public function testFilter($string, $filter, array $values)
|
||||||
|
{
|
||||||
|
$header = AcceptHeader::fromString($string)->filter($filter);
|
||||||
|
$this->assertEquals($values, array_keys($header->all()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function provideFilterData()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4', '/fr.*/', array('fr-FR', 'fr')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider provideSortingData
|
||||||
|
*/
|
||||||
|
public function testSorting($string, array $values)
|
||||||
|
{
|
||||||
|
$header = AcceptHeader::fromString($string);
|
||||||
|
$this->assertEquals($values, array_keys($header->all()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function provideSortingData()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'quality has priority' => array('*;q=0.3,ISO-8859-1,utf-8;q=0.7', array('ISO-8859-1', 'utf-8', '*')),
|
||||||
|
'order matters when q is equal' => array('*;q=0.3,ISO-8859-1;q=0.7,utf-8;q=0.7', array('ISO-8859-1', 'utf-8', '*')),
|
||||||
|
'order matters when q is equal2' => array('*;q=0.3,utf-8;q=0.7,ISO-8859-1;q=0.7', array('utf-8', 'ISO-8859-1', '*')),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user