Fixed wrong dash.
[civicrm-core.git] / tests / phpunit / CRM / Utils / TypeTest.php
CommitLineData
f942c321
DL
1<?php
2
aba1cd8b
EM
3/**
4 * Class CRM_Utils_TypeTest
acb109b7 5 * @group headless
aba1cd8b 6 */
f942c321
DL
7class 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}