Fixed tests, checks and naming.
authorMattias Michaux <mattias.michaux@gmail.com>
Thu, 12 May 2016 08:50:08 +0000 (10:50 +0200)
committerMattias Michaux <mattias.michaux@gmail.com>
Thu, 12 May 2016 08:50:08 +0000 (10:50 +0200)
CRM/Utils/Rule.php
CRM/Utils/Type.php
tests/phpunit/CRM/Utils/TypeTest.php

index 3e6dbd0c4eea71227fa0313d07ae6485afd4643a..b6f4f7e6dc202562566d3ab905d18fceaf891acb 100644 (file)
@@ -103,7 +103,7 @@ class CRM_Utils_Rule {
     // Ensure the string contains only valid characters:
     // For column names: alphanumeric and underscores
     // For aliases: backticks, alphanumeric hyphens and underscores.
-    if (!preg_match('^((`[\w-]{1,64}`|\w{1,64})\.)?(`[\w-]{1,64}`|\w{1,64})$/i', $str)) {
+    if (!preg_match('/^((`[\w-]{1,64}`|\w{1,64})\.)?(`[\w-]{1,64}`|\w{1,64})$/i', $str)) {
       return FALSE;
     }
 
index 43fa00a5b29d47248a74dd447c13139be023da10..f49f2127011dfa348f39fd56a7915ec598115461 100644 (file)
@@ -268,7 +268,7 @@ class CRM_Utils_Type {
         }
         break;
 
-      case 'mysqlColumnNameOrAlias':
+      case 'MysqlColumnNameOrAlias':
         if (CRM_Utils_Rule::mysqlColumnNameOrAlias($data)) {
           $data = str_replace('`', '', $data);
           $parts = explode('.', $data);
@@ -397,7 +397,7 @@ class CRM_Utils_Type {
         }
         break;
 
-      case 'mysqlColumnNameOrAlias':
+      case 'MysqlColumnNameOrAlias':
         if (CRM_Utils_Rule::mysqlColumnNameOrAlias($data)) {
           return $data;
         }
@@ -436,7 +436,7 @@ class CRM_Utils_Type {
     $matches = str_replace('`', '', $matches);
 
     // Table name.
-    if (isset($matches[1])) {
+    if (isset($matches[1]) && $matches[1]) {
       $output .= '`' . $matches[1] . '`.';
     }
 
index 781b2d16ab66ae681c776036b3617bd264bb5ecb..0bd51b3ff6970c0db1b4d6de63b441b9f2cd3cc1 100644 (file)
@@ -37,20 +37,20 @@ class CRM_Utils_TypeTest extends CiviUnitTestCase {
       array(-10, 'Positive', NULL),
       array('-10', 'Positive', NULL),
       array('-10foo', 'Positive', NULL),
-      array('civicrm_column_name', 'mysqlColumnNameOrAlias', 'civicrm_column_name'),
-      array('table.civicrm_column_name', 'mysqlColumnNameOrAlias', 'table.civicrm_column_name'),
-      array('table.civicrm_column_name.toomanydots', 'mysqlColumnNameOrAlias', NULL),
-      array('Home-street_address', 'mysqlColumnNameOrAlias', NULL),
-      array('`Home-street_address`', 'mysqlColumnNameOrAlias', '`Home-street_address`'),
-      array('table.`Home-street_address`', 'mysqlColumnNameOrAlias', 'table.`Home-street_address`'),
-      array('`table-alias`.`Home-street_address`', 'mysqlColumnNameOrAlias', '`table-alias`.`Home-street_address`'),
-      array('`table-alias`.column', 'mysqlColumnNameOrAlias', '`table-alias`.column'),
-      array('column_name, sleep(5)', 'mysqlColumnNameOrAlias', NULL),
-      array(str_repeat('a', 64), 'mysqlColumnNameOrAlias', str_repeat('a', 64)),
-      array(str_repeat('a', 65), 'mysqlColumnNameOrAlias', NULL),
-      array(str_repeat('a', 64) . '.' . str_repeat('a', 64), 'mysqlColumnNameOrAlias', str_repeat('a', 64) . '.' . str_repeat('a', 64)),
-      array(str_repeat('a', 64) . '.' . str_repeat('a', 65), 'mysqlColumnNameOrAlias', NULL),
-      array(str_repeat('a', 65) . '.' . str_repeat('a', 64), 'mysqlColumnNameOrAlias', NULL),
+      array('civicrm_column_name', 'MysqlColumnNameOrAlias', 'civicrm_column_name'),
+      array('table.civicrm_column_name', 'MysqlColumnNameOrAlias', 'table.civicrm_column_name'),
+      array('table.civicrm_column_name.toomanydots', 'MysqlColumnNameOrAlias', NULL),
+      array('Home-street_address', 'MysqlColumnNameOrAlias', NULL),
+      array('`Home-street_address`', 'MysqlColumnNameOrAlias', '`Home-street_address`'),
+      array('table.`Home-street_address`', 'MysqlColumnNameOrAlias', 'table.`Home-street_address`'),
+      array('`table-alias`.`Home-street_address`', 'MysqlColumnNameOrAlias', '`table-alias`.`Home-street_address`'),
+      array('`table-alias`.column', 'MysqlColumnNameOrAlias', '`table-alias`.column'),
+      array('column_name, sleep(5)', 'MysqlColumnNameOrAlias', NULL),
+      array(str_repeat('a', 64), 'MysqlColumnNameOrAlias', str_repeat('a', 64)),
+      array(str_repeat('a', 65), 'MysqlColumnNameOrAlias', NULL),
+      array(str_repeat('a', 64) . '.' . str_repeat('a', 64), 'MysqlColumnNameOrAlias', str_repeat('a', 64) . '.' . str_repeat('a', 64)),
+      array(str_repeat('a', 64) . '.' . str_repeat('a', 65), 'MysqlColumnNameOrAlias', NULL),
+      array(str_repeat('a', 65) . '.' . str_repeat('a', 64), 'MysqlColumnNameOrAlias', NULL),
       array('asc', 'MysqlOrderByDirection', 'asc'),
       array('DESC', 'MysqlOrderByDirection', 'desc'),
       array('DESCc', 'MysqlOrderByDirection', NULL),
@@ -95,11 +95,12 @@ class CRM_Utils_TypeTest extends CiviUnitTestCase {
       array('-3', 'ContactReference', NULL),
       // Escape function is meant for sql, not xss
       array('<p onclick="alert(\'xss\');">Hello</p>', 'Memo', '<p onclick=\\"alert(\\\'xss\\\');\\">Hello</p>'),
-      array('civicrm_column_name', 'MysqlColumnName', '`civicrm_column_name`'),
-      array('table.civicrm_column_name', 'MysqlColumnName', '`table`.`civicrm_column_name`'),
-      array('table.civicrm_column_name.toomanydots', 'MysqlColumnName', NULL),
-      array('Home-street_address', 'MysqlColumnName', '`Home-street_address`'),
-      array('column_name, sleep(5)', 'MysqlColumnName', NULL),
+      array('civicrm_column_name', 'MysqlColumnNameOrAlias', '`civicrm_column_name`'),
+      array('table.civicrm_column_name', 'MysqlColumnNameOrAlias', '`table`.`civicrm_column_name`'),
+      array('table.civicrm_column_name.toomanydots', 'MysqlColumnNameOrAlias', NULL),
+      array('Home-street_address', 'MysqlColumnNameOrAlias', NULL),
+      array('`Home-street_address`', 'MysqlColumnNameOrAlias', '`Home-street_address`'),
+      array('column_name, sleep(5)', 'MysqlColumnNameOrAlias', NULL),
       array('asc', 'MysqlOrderByDirection', 'asc'),
       array('DESC', 'MysqlOrderByDirection', 'desc'),
       array('DESCc', 'MysqlOrderByDirection', NULL),