forked from zendframework/zend-diactoros
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHeaderSecurityTest.php
109 lines (101 loc) · 3.5 KB
/
HeaderSecurityTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @see http://github.com/zendframework/zend-diactoros for the canonical source repository
* @copyright Copyright (c) 2015 Zend Technologies USA Inc. (http://www.zend.com)
* @license https://github.com/zendframework/zend-diactoros/blob/master/LICENSE.md New BSD License
*/
namespace ZendTest\Diactoros;
use PHPUnit_Framework_TestCase as TestCase;
use Zend\Diactoros\HeaderSecurity;
/**
* Tests for Zend\Diactoros\HeaderSecurity.
*
* Tests are largely derived from those for Zend\Http\Header\HeaderValue in
* Zend Framework, released with the copyright and license below.
*
* @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class HeaderSecurityTest extends TestCase
{
/**
* Data for filter value
*/
public function getFilterValues()
{
return [
["This is a\n test", "This is a test"],
["This is a\r test", "This is a test"],
["This is a\n\r test", "This is a test"],
["This is a\r\n test", "This is a\r\n test"],
["This is a \r\ntest", "This is a test"],
["This is a \r\n\n test", "This is a test"],
["This is a\n\n test", "This is a test"],
["This is a\r\r test", "This is a test"],
["This is a \r\r\n test", "This is a \r\n test"],
["This is a \r\n\r\ntest", "This is a test"],
["This is a \r\n\n\r\n test", "This is a \r\n test"]
];
}
/**
* @dataProvider getFilterValues
* @group ZF2015-04
*/
public function testFiltersValuesPerRfc7230($value, $expected)
{
$this->assertEquals($expected, HeaderSecurity::filter($value));
}
public function validateValues()
{
return [
["This is a\n test", 'assertFalse'],
["This is a\r test", 'assertFalse'],
["This is a\n\r test", 'assertFalse'],
["This is a\r\n test", 'assertTrue'],
["This is a \r\ntest", 'assertFalse'],
["This is a \r\n\n test", 'assertFalse'],
["This is a\n\n test", 'assertFalse'],
["This is a\r\r test", 'assertFalse'],
["This is a \r\r\n test", 'assertFalse'],
["This is a \r\n\r\ntest", 'assertFalse'],
["This is a \r\n\n\r\n test", 'assertFalse'],
["This is a \xFF test", 'assertFalse'],
["This is a \x7F test", 'assertFalse'],
["This is a \x7E test", 'assertTrue'],
];
}
/**
* @dataProvider validateValues
* @group ZF2015-04
*/
public function testValidatesValuesPerRfc7230($value, $assertion)
{
$this->{$assertion}(HeaderSecurity::isValid($value));
}
public function assertValues()
{
return [
["This is a\n test"],
["This is a\r test"],
["This is a\n\r test"],
["This is a \r\ntest"],
["This is a \r\n\n test"],
["This is a\n\n test"],
["This is a\r\r test"],
["This is a \r\r\n test"],
["This is a \r\n\r\ntest"],
["This is a \r\n\n\r\n test"]
];
}
/**
* @dataProvider assertValues
* @group ZF2015-04
*/
public function testAssertValidRaisesExceptionForInvalidValue($value)
{
$this->setExpectedException('InvalidArgumentException');
HeaderSecurity::assertValid($value);
}
}