CRM-15988 - Fix inconsistent handling of api entity names
authorColeman Watts <coleman@civicrm.org>
Thu, 19 Feb 2015 15:48:43 +0000 (10:48 -0500)
committerColeman Watts <coleman@civicrm.org>
Thu, 19 Feb 2015 17:52:04 +0000 (12:52 -0500)
api/api.php
api/v3/utils.php
tests/phpunit/api/v3/ContactTest.php
tests/phpunit/api/v3/EventTest.php
tests/phpunit/api/v3/UtilsTest.php

index 1ba09c7b3bfbbd394be5f64f1e0b0b9d69f0181e..fa1d345e8b7a72fbca4b907a79610f94bbfb70a5 100644 (file)
@@ -77,7 +77,7 @@ function _civicrm_api3_api_getfields(&$apiRequest) {
   }
   $getFieldsParams = array('action' => $apiRequest['action']);
   $entity = $apiRequest['entity'];
-  if ($entity == 'profile' && array_key_exists('profile_id', $apiRequest['params'])) {
+  if ($entity == 'Profile' && array_key_exists('profile_id', $apiRequest['params'])) {
     $getFieldsParams['profile_id'] = $apiRequest['params']['profile_id'];
   }
   $fields = civicrm_api3($entity, 'getfields', $getFieldsParams);
@@ -171,11 +171,9 @@ function _civicrm_api_replace_variables(&$params, &$parentResult, $separator = '
  *
  * @return string
  *   Entity name in underscore separated format.
- *
- * @fixme Why isn't this called first thing in civicrm_api wrapper?
  */
 function _civicrm_api_get_entity_name_from_camel($entity) {
-  if ($entity == strtolower($entity)) {
+  if (!$entity || $entity === strtolower($entity)) {
     return $entity;
   }
   else {
index 988016a1f38fec78f83d9bdab1c2ecf257c2e5c5..b41db295d88f5e58f4313f654f8cd2934802bd83 100644 (file)
@@ -266,7 +266,7 @@ function civicrm_api3_create_success($values = 1, $params = array(), $entity = N
   }
   if ($deprecated) {
     // Metadata-level deprecations or wholesale entity deprecations.
-    if ($entity == 'entity' || $action == 'getactions' || is_string($deprecated)) {
+    if ($entity == 'Entity' || $action == 'getactions' || is_string($deprecated)) {
       $result['deprecated'] = $deprecated;
     }
     // Action-specific deprecations
@@ -310,7 +310,7 @@ function _civicrm_api3_get_DAO($name) {
     $name = substr($name, 13, $last - 13);
   }
 
-  $name = _civicrm_api_get_camel_name($name, 3);
+  $name = _civicrm_api_get_camel_name($name);
 
   if ($name == 'Individual' || $name == 'Household' || $name == 'Organization') {
     $name = 'Contact';
@@ -746,6 +746,8 @@ function _civicrm_api3_apply_filters_to_dao($filterField, $filterValue, &$dao) {
  *   options extracted from params
  */
 function _civicrm_api3_get_options_from_params(&$params, $queryObject = FALSE, $entity = '', $action = '') {
+  // Entity should be l-case so it can be concatenated into field names
+  $entity = _civicrm_api_get_entity_name_from_camel($entity);
   $is_count = FALSE;
   $sort = CRM_Utils_Array::value('sort', $params, 0);
   $sort = CRM_Utils_Array::value('option.sort', $params, $sort);
index f9d97e93942c1f60e20e9bc486ebc8b20ed70a05..a8a7f03eb9b13040496ce3394837e6fe6a270ff7 100644 (file)
@@ -1746,7 +1746,7 @@ class api_v3_ContactTest extends CiviUnitTestCase {
     $config = CRM_Core_Config::singleton();
     $config->userPermissionClass->permissions = array('access CiviCRM');
     $result = $this->callAPIFailure('contact', 'create', $params);
-    $this->assertEquals('API permission check failed for contact/create call; insufficient permission: require access CiviCRM and add contacts', $result['error_message'], 'lacking permissions should not be enough to create a contact');
+    $this->assertEquals('API permission check failed for Contact/create call; insufficient permission: require access CiviCRM and add contacts', $result['error_message'], 'lacking permissions should not be enough to create a contact');
 
     $config->userPermissionClass->permissions = array('access CiviCRM', 'add contacts', 'import contacts');
     $this->callAPISuccess('contact', 'create', $params, NULL, 'overfluous permissions should be enough to create a contact');
@@ -1773,7 +1773,7 @@ class api_v3_ContactTest extends CiviUnitTestCase {
 
     $config->userPermissionClass->permissions = array('access CiviCRM');
     $result = $this->callAPIFailure('contact', 'update', $params);
-    $this->assertEquals('API permission check failed for contact/update call; insufficient permission: require access CiviCRM and edit all contacts', $result['error_message'], 'lacking permissions should not be enough to update a contact');
+    $this->assertEquals('API permission check failed for Contact/update call; insufficient permission: require access CiviCRM and edit all contacts', $result['error_message'], 'lacking permissions should not be enough to update a contact');
 
     $config->userPermissionClass->permissions = array(
       'access CiviCRM',
index 05094f7a6ed924a857d0f343cbe49f7545e62291..a6f6d210cf15d6482952a3fd8b070f4ca63a1548 100644 (file)
@@ -518,7 +518,7 @@ class api_v3_EventTest extends CiviUnitTestCase {
     $config = &CRM_Core_Config::singleton();
     $config->userPermissionClass->permissions = array('access CiviCRM');
     $result = $this->callAPIFailure('event', 'create', $params);
-    $this->assertEquals('API permission check failed for event/create call; insufficient permission: require access CiviCRM and access CiviEvent and edit all events', $result['error_message'], 'lacking permissions should not be enough to create an event');
+    $this->assertEquals('API permission check failed for Event/create call; insufficient permission: require access CiviCRM and access CiviEvent and edit all events', $result['error_message'], 'lacking permissions should not be enough to create an event');
 
     $config->userPermissionClass->permissions = array(
       'access CiviEvent',
index 46d2caf419da199d0c0fa579b707310bb0049876..c2ffbbb88cb3bde3f054884a77715eb6e0a0ae69 100644 (file)
@@ -83,7 +83,7 @@ class api_v3_UtilsTest extends CiviUnitTestCase {
     catch (Exception $e) {
       $message = $e->getMessage();
     }
-    $this->assertEquals($message, 'API permission check failed for contact/create call; insufficient permission: require access CiviCRM and add contacts', 'lacking permissions should throw an exception');
+    $this->assertEquals($message, 'API permission check failed for Contact/create call; insufficient permission: require access CiviCRM and add contacts', 'lacking permissions should throw an exception');
 
     $config->userPermissionClass->permissions = array('access CiviCRM', 'add contacts', 'import contacts');
     $this->assertTrue($this->runPermissionCheck('contact', 'create', $check), 'overfluous permissions should return true');