From 48e399ac6124766576888055fa17bcc321c2438a Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Fri, 31 Jan 2014 18:21:09 +1300 Subject: [PATCH] Add function to set up an ACL for a test --- tests/phpunit/CiviTest/CiviUnitTestCase.php | 61 +++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/tests/phpunit/CiviTest/CiviUnitTestCase.php b/tests/phpunit/CiviTest/CiviUnitTestCase.php index f28677abd2..6dfbaaf018 100644 --- a/tests/phpunit/CiviTest/CiviUnitTestCase.php +++ b/tests/phpunit/CiviTest/CiviUnitTestCase.php @@ -2516,6 +2516,67 @@ AND ( TABLE_NAME LIKE 'civicrm_value_%' ) ); } + /** + * Set up an acl allowing contact to see 2 specified groups + * - $this->_permissionedGroup & $this->_permissionedDisbaledGroup + * + * You need to have precreated these groups & created the user e.g + * $this->createLoggedInUser(); + * $this->_permissionedDisabledGroup = $this->groupCreate(array('title' => 'pick-me-disabled', 'is_active' => 0, 'name' => 'pick-me-disabled')); + * $this->_permissionedGroup = $this->groupCreate(array('title' => 'pick-me-active', 'is_active' => 1, 'name' => 'pick-me-active')); + * + */ + function setupACL() { + CRM_Core_Config::singleton()->userPermissionClass->permissions = array('access CiviCRM'); + $optionGroupID = $this->callAPISuccessGetValue('option_group', array('return' => 'id', 'name' => 'acl_role')); + $optionValue = $this->callAPISuccess('option_value', 'create', array('option_group_id' => $optionGroupID, + 'label' => 'pick me', + 'value' => 55, + )); + + + CRM_Core_DAO::executeQuery(" + TRUNCATE civicrm_acl_cache + "); + + CRM_Core_DAO::executeQuery(" + TRUNCATE civicrm_acl_contact_cache + "); + + + CRM_Core_DAO::executeQuery(" + INSERT INTO civicrm_acl_entity_role ( + `acl_role_id`, `entity_table`, `entity_id` + ) VALUES (55, 'civicrm_group', {$this->_permissionedGroup}); + "); + + CRM_Core_DAO::executeQuery(" + INSERT INTO civicrm_acl ( + `name`, `entity_table`, `entity_id`, `operation`, `object_table`, `object_id`, `is_active` + ) + VALUES ( + 'view picked', 'civicrm_group', $this->_permissionedGroup , 'Edit', 'civicrm_saved_search', {$this->_permissionedGroup}, 1 + ); + "); + + CRM_Core_DAO::executeQuery(" + INSERT INTO civicrm_acl ( + `name`, `entity_table`, `entity_id`, `operation`, `object_table`, `object_id`, `is_active` + ) + VALUES ( + 'view picked', 'civicrm_group', $this->_permissionedGroup, 'Edit', 'civicrm_saved_search', {$this->_permissionedDisabledGroup}, 1 + ); + "); + $this->_loggedInUser = CRM_Core_Session::singleton()->get('userID'); + $this->callAPISuccess('group_contact', 'create', array( + 'group_id' => $this->_permissionedGroup, + 'contact_id' => $this->_loggedInUser, + )); + //flush cache + CRM_ACL_BAO_Cache::resetCache(); + CRM_ACL_API::groupPermission('whatever', 9999, NULL, 'civicrm_saved_search', NULL, NULL, TRUE); + } + /** * Create an instance of the paypal processor * @todo this isn't a great place to put it - but really it belongs on a class that extends -- 2.25.1