예제 #1
0
 protected function tearDown()
 {
     CRM_Utils_Hook::singleton()->reset();
     CRM_Core_DAO_AllCoreTables::init(1);
     parent::tearDown();
 }
 /**
  * @param array $apiRequest
  *   Array(entity=>$,action=>$,params=>$,expectedResults=>$).
  * @param array $rules
  *   Whitelist - list of allowed API calls/patterns.
  * @param bool $expectSuccess
  *   TRUE if the call should succeed.
  *   Success implies that the 'expectedResults' are returned.
  *   Failure implies that the standard error message is returned.
  * @dataProvider restrictionCases
  */
 public function testEach($apiRequest, $rules, $expectSuccess)
 {
     \CRM_Core_DAO_AllCoreTables::init(TRUE);
     $recs = $this->getFixtures();
     \CRM_Core_DAO_AllCoreTables::registerEntityType('Widget', 'CRM_Fake_DAO_Widget', 'fake_widget');
     $widgetProvider = new \Civi\API\Provider\StaticProvider(3, 'Widget', array('id', 'widget_type', 'provider', 'title'), array(), $recs['widget']);
     \CRM_Core_DAO_AllCoreTables::registerEntityType('Sprocket', 'CRM_Fake_DAO_Sprocket', 'fake_sprocket');
     $sprocketProvider = new \Civi\API\Provider\StaticProvider(3, 'Sprocket', array('id', 'sprocket_type', 'widget_id', 'provider', 'title', 'comment'), array(), $recs['sprocket']);
     $whitelist = WhitelistRule::createAll($rules);
     $dispatcher = new EventDispatcher();
     $kernel = new Kernel($dispatcher);
     $kernel->registerApiProvider($sprocketProvider);
     $kernel->registerApiProvider($widgetProvider);
     $dispatcher->addSubscriber(new WhitelistSubscriber($whitelist));
     $dispatcher->addSubscriber(new ChainSubscriber());
     $apiRequest['params']['debug'] = 1;
     $apiRequest['params']['check_permissions'] = 'whitelist';
     $result = $kernel->run($apiRequest['entity'], $apiRequest['action'], $apiRequest['params']);
     if ($expectSuccess) {
         $this->assertAPISuccess($result);
         $this->assertTrue(is_array($apiRequest['expectedResults']));
         $this->assertTreeEquals($apiRequest['expectedResults'], $result['values']);
     } else {
         $this->assertAPIFailure($result);
         $this->assertRegExp('/The request does not match any active API authorizations./', $result['error_message']);
     }
 }
 protected function tearDown()
 {
     parent::tearDown();
     \CRM_Core_DAO_AllCoreTables::init(TRUE);
 }