4 * Class CRM_Utils_TypeTest
7 class CRM_Utils_TypeTest
extends CiviUnitTestCase
{
9 public function setUp() {
14 * @dataProvider validateDataProvider
17 * @param $expectedResult
19 public function testValidate($inputData, $inputType, $expectedResult) {
20 $this->assertTrue($expectedResult === CRM_Utils_Type
::validate($inputData, $inputType, FALSE));
26 public function validateDataProvider() {
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),
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', 'Home-street_address'),
44 array('`Home-street_address`', 'MysqlColumnNameOrAlias', '`Home-street_address`'),
45 array('`Home-street_address', 'MysqlColumnNameOrAlias', NULL),
46 array('table.`Home-street_address`', 'MysqlColumnNameOrAlias', 'table.`Home-street_address`'),
47 array('`table-alias`.`Home-street_address`', 'MysqlColumnNameOrAlias', '`table-alias`.`Home-street_address`'),
48 array('`table-alias`.column', 'MysqlColumnNameOrAlias', '`table-alias`.column'),
49 array('column_name, sleep(5)', 'MysqlColumnNameOrAlias', NULL),
50 array(str_repeat('a', 64), 'MysqlColumnNameOrAlias', str_repeat('a', 64)),
51 array(str_repeat('a', 65), 'MysqlColumnNameOrAlias', NULL),
52 array(str_repeat('a', 64) . '.' . str_repeat('a', 64), 'MysqlColumnNameOrAlias', str_repeat('a', 64) . '.' . str_repeat('a', 64)),
53 array(str_repeat('a', 64) . '.' . str_repeat('a', 65), 'MysqlColumnNameOrAlias', NULL),
54 array(str_repeat('a', 65) . '.' . str_repeat('a', 64), 'MysqlColumnNameOrAlias', NULL),
55 array('asc', 'MysqlOrderByDirection', 'asc'),
56 array('DESC', 'MysqlOrderByDirection', 'desc'),
57 array('DESCc', 'MysqlOrderByDirection', NULL),
58 array('table.civicrm_column_name desc', 'MysqlOrderBy', 'table.civicrm_column_name desc'),
59 array('table.civicrm_column_name desc,other_column, another_column desc', 'MysqlOrderBy', 'table.civicrm_column_name desc,other_column, another_column desc'),
60 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'),
65 * @dataProvider escapeDataProvider
68 * @param $expectedResult
70 public function testEscape($inputData, $inputType, $expectedResult) {
71 $this->assertTrue($expectedResult === CRM_Utils_Type
::escape($inputData, $inputType, FALSE));
77 public function escapeDataProvider() {
80 array('145E+3', 'Int', NULL),
81 array('10', 'Integer', 10),
82 array(-10, 'Int', -10),
83 array(array(), 'Integer', NULL),
84 array('-10foo', 'Int', NULL),
85 array(10, 'Positive', 10),
86 array('145.0E+3', 'Positive', NULL),
87 array('10', 'Positive', 10),
88 array(-10, 'Positive', NULL),
89 array('-10', 'Positive', NULL),
90 array('-10foo', 'Positive', NULL),
91 array(array('10', 20), 'Country', array('10', 20)),
92 array(array('10', '-10foo'), 'Country', NULL),
93 array('', 'Timestamp', ''),
94 array('', 'ContactReference', ''),
95 array('3', 'ContactReference', 3),
96 array('-3', 'ContactReference', NULL),
97 // Escape function is meant for sql, not xss
98 array('<p onclick="alert(\'xss\');">Hello</p>', 'Memo', '<p onclick=\\"alert(\\\'xss\\\');\\">Hello</p>'),
99 array('civicrm_column_name', 'MysqlColumnNameOrAlias', '`civicrm_column_name`'),
100 array('table.civicrm_column_name', 'MysqlColumnNameOrAlias', '`table`.`civicrm_column_name`'),
101 array('table.civicrm_column_name.toomanydots', 'MysqlColumnNameOrAlias', NULL),
102 array('Home-street_address', 'MysqlColumnNameOrAlias', '`Home-street_address`'),
103 array('`Home-street_address`', 'MysqlColumnNameOrAlias', '`Home-street_address`'),
104 array('`Home-street_address', 'MysqlColumnNameOrAlias', NULL),
105 array('column_name, sleep(5)', 'MysqlColumnNameOrAlias', NULL),
106 array('asc', 'MysqlOrderByDirection', 'asc'),
107 array('DESC', 'MysqlOrderByDirection', 'desc'),
108 array('DESCc', 'MysqlOrderByDirection', NULL),
109 array('table.civicrm_column_name desc', 'MysqlOrderBy', '`table`.`civicrm_column_name` desc'),
110 array('table.civicrm_column_name desc,other_column,another_column desc', 'MysqlOrderBy', '`table`.`civicrm_column_name` desc, `other_column`, `another_column` desc'),
111 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`'),