Commit | Line | Data |
---|---|---|
f942c321 DL |
1 | <?php |
2 | ||
aba1cd8b EM |
3 | /** |
4 | * Class CRM_Utils_TypeTest | |
acb109b7 | 5 | * @group headless |
aba1cd8b | 6 | */ |
f942c321 DL |
7 | class CRM_Utils_TypeTest extends CiviUnitTestCase { |
8 | ||
00be9182 | 9 | public function setUp() { |
f942c321 DL |
10 | parent::setUp(); |
11 | } | |
12 | ||
13 | /** | |
14 | * @dataProvider validateDataProvider | |
1e1fdcf6 EM |
15 | * @param $inputData |
16 | * @param $inputType | |
17 | * @param $expectedResult | |
f942c321 | 18 | */ |
00be9182 | 19 | public function testValidate($inputData, $inputType, $expectedResult) { |
258570f7 | 20 | $this->assertTrue($expectedResult === CRM_Utils_Type::validate($inputData, $inputType, FALSE)); |
f942c321 DL |
21 | } |
22 | ||
e9479dcf EM |
23 | /** |
24 | * @return array | |
25 | */ | |
00be9182 | 26 | public function validateDataProvider() { |
f942c321 DL |
27 | return array( |
28 | array(10, 'Int', 10), | |
29 | array('145E+3', 'Int', NULL), | |
30 | array('10', 'Integer', 10), | |
31 | array(-10, 'Int', -10), | |
32 | array('-10', 'Integer', -10), | |
33 | array('-10foo', 'Int', NULL), | |
34 | array(10, 'Positive', 10), | |
35 | array('145.0E+3', 'Positive', NULL), | |
36 | array('10', 'Positive', 10), | |
37 | array(-10, 'Positive', NULL), | |
38 | array('-10', 'Positive', NULL), | |
39 | array('-10foo', 'Positive', NULL), | |
f19a5565 MM |
40 | array('civicrm_column_name', 'MysqlColumnNameOrAlias', 'civicrm_column_name'), |
41 | array('table.civicrm_column_name', 'MysqlColumnNameOrAlias', 'table.civicrm_column_name'), | |
42 | array('table.civicrm_column_name.toomanydots', 'MysqlColumnNameOrAlias', NULL), | |
43 | array('Home-street_address', 'MysqlColumnNameOrAlias', NULL), | |
44 | array('`Home-street_address`', 'MysqlColumnNameOrAlias', '`Home-street_address`'), | |
45 | array('table.`Home-street_address`', 'MysqlColumnNameOrAlias', 'table.`Home-street_address`'), | |
46 | array('`table-alias`.`Home-street_address`', 'MysqlColumnNameOrAlias', '`table-alias`.`Home-street_address`'), | |
47 | array('`table-alias`.column', 'MysqlColumnNameOrAlias', '`table-alias`.column'), | |
48 | array('column_name, sleep(5)', 'MysqlColumnNameOrAlias', NULL), | |
49 | array(str_repeat('a', 64), 'MysqlColumnNameOrAlias', str_repeat('a', 64)), | |
50 | array(str_repeat('a', 65), 'MysqlColumnNameOrAlias', NULL), | |
51 | array(str_repeat('a', 64) . '.' . str_repeat('a', 64), 'MysqlColumnNameOrAlias', str_repeat('a', 64) . '.' . str_repeat('a', 64)), | |
52 | array(str_repeat('a', 64) . '.' . str_repeat('a', 65), 'MysqlColumnNameOrAlias', NULL), | |
53 | array(str_repeat('a', 65) . '.' . str_repeat('a', 64), 'MysqlColumnNameOrAlias', NULL), | |
0fa4baf0 MM |
54 | array('asc', 'MysqlOrderByDirection', 'asc'), |
55 | array('DESC', 'MysqlOrderByDirection', 'desc'), | |
56 | array('DESCc', 'MysqlOrderByDirection', NULL), | |
57 | array('table.civicrm_column_name desc', 'MysqlOrderBy', 'table.civicrm_column_name desc'), | |
96cb6be9 | 58 | array('table.civicrm_column_name desc,other_column, another_column desc', 'MysqlOrderBy', 'table.civicrm_column_name desc,other_column, another_column desc'), |
a33b83c5 | 59 | array('table.`Home-street_address` asc, `table-alias`.`Home-street_address` desc,`table-alias`.column', 'MysqlOrderBy', 'table.`Home-street_address` asc, `table-alias`.`Home-street_address` desc,`table-alias`.column'), |
f942c321 DL |
60 | ); |
61 | } | |
96025800 | 62 | |
258570f7 CW |
63 | /** |
64 | * @dataProvider escapeDataProvider | |
65 | * @param $inputData | |
66 | * @param $inputType | |
67 | * @param $expectedResult | |
68 | */ | |
69 | public function testEscape($inputData, $inputType, $expectedResult) { | |
70 | $this->assertTrue($expectedResult === CRM_Utils_Type::escape($inputData, $inputType, FALSE)); | |
71 | } | |
72 | ||
73 | /** | |
74 | * @return array | |
75 | */ | |
76 | public function escapeDataProvider() { | |
77 | return array( | |
78 | array(10, 'Int', 10), | |
79 | array('145E+3', 'Int', NULL), | |
80 | array('10', 'Integer', 10), | |
81 | array(-10, 'Int', -10), | |
82 | array(array(), 'Integer', NULL), | |
83 | array('-10foo', 'Int', NULL), | |
84 | array(10, 'Positive', 10), | |
85 | array('145.0E+3', 'Positive', NULL), | |
86 | array('10', 'Positive', 10), | |
87 | array(-10, 'Positive', NULL), | |
88 | array('-10', 'Positive', NULL), | |
89 | array('-10foo', 'Positive', NULL), | |
88ccd161 | 90 | array(array('10', 20), 'Country', array('10', 20)), |
258570f7 CW |
91 | array(array('10', '-10foo'), 'Country', NULL), |
92 | array('', 'Timestamp', ''), | |
93 | array('', 'ContactReference', ''), | |
94 | array('3', 'ContactReference', 3), | |
95 | array('-3', 'ContactReference', NULL), | |
96 | // Escape function is meant for sql, not xss | |
97 | array('<p onclick="alert(\'xss\');">Hello</p>', 'Memo', '<p onclick=\\"alert(\\\'xss\\\');\\">Hello</p>'), | |
f19a5565 MM |
98 | array('civicrm_column_name', 'MysqlColumnNameOrAlias', '`civicrm_column_name`'), |
99 | array('table.civicrm_column_name', 'MysqlColumnNameOrAlias', '`table`.`civicrm_column_name`'), | |
100 | array('table.civicrm_column_name.toomanydots', 'MysqlColumnNameOrAlias', NULL), | |
101 | array('Home-street_address', 'MysqlColumnNameOrAlias', NULL), | |
102 | array('`Home-street_address`', 'MysqlColumnNameOrAlias', '`Home-street_address`'), | |
103 | array('column_name, sleep(5)', 'MysqlColumnNameOrAlias', NULL), | |
0fa4baf0 MM |
104 | array('asc', 'MysqlOrderByDirection', 'asc'), |
105 | array('DESC', 'MysqlOrderByDirection', 'desc'), | |
106 | array('DESCc', 'MysqlOrderByDirection', NULL), | |
107 | array('table.civicrm_column_name desc', 'MysqlOrderBy', '`table`.`civicrm_column_name` desc'), | |
108 | array('table.civicrm_column_name desc,other_column,another_column desc', 'MysqlOrderBy', '`table`.`civicrm_column_name` desc, `other_column`, `another_column` desc'), | |
a33b83c5 | 109 | array('table.`Home-street_address` asc, `table-alias`.`Home-street_address` desc,`table-alias`.column', 'MysqlOrderBy', '`table`.`Home-street_address` asc, `table-alias`.`Home-street_address` desc, `table-alias`.`column`'), |
258570f7 CW |
110 | ); |
111 | } | |
112 | ||
f942c321 | 113 | } |