diff --git a/features/backend/events_resources/event.feature b/features/backend/events_resources/event.feature index 183bc91f3..10808acc7 100644 --- a/features/backend/events_resources/event.feature +++ b/features/backend/events_resources/event.feature @@ -1,8 +1,17 @@ @ProcessMakerMichelangelo @RestAPI -Feature: Testing events +Feature: Events Resources - @1: TEST FOR POST EVENT /---------------------------------------------------------------------- - Scenario: Create a event + @1: TEST FOR GET EVENTS /---------------------------------------------------------------------- + Scenario: List all the events (result 0 events) + Given that I have a valid access_token + And I request "project/251815090529619a99a2bf4013294414/events" + Then the response status code should be 200 + And the response charset is "UTF-8" + And the response has 0 record + + + @2: TEST FOR POST EVENT /---------------------------------------------------------------------- + Scenario: Create a new event Given that I have a valid access_token And POST this data: """ @@ -24,8 +33,15 @@ Feature: Testing events Then the response status code should be 201 And store "evn_uid" in session array + @3: TEST FOR GET EVENTS /---------------------------------------------------------------------- + Scenario: List all the events (result 1 event) + Given that I have a valid access_token + And I request "project/251815090529619a99a2bf4013294414/events" + Then the response status code should be 200 + And the response charset is "UTF-8" + And the response has 1 record - @2: TEST FOR PUT EVENT /----------------------------------------------------------------------- + @4: TEST FOR PUT EVENT /----------------------------------------------------------------------- Scenario: Update a event Given that I have a valid access_token And PUT this data: @@ -51,8 +67,8 @@ Feature: Testing events And the type is "object" - @3: TEST FOR GET EVENT /----------------------------------------------------------------------- - Scenario: Get a event + @5: TEST FOR GET EVENT /----------------------------------------------------------------------- + Scenario: Get a event (with change in "evn_description") Given that I have a valid access_token And that I want to get a resource with the key "evn_uid" stored in session array And I request "project/251815090529619a99a2bf4013294414/event" @@ -62,11 +78,19 @@ Feature: Testing events And that "evn_description" is set to "change description" - @4: TEST FOR DELETE EVENT /----------------------------------------------------------------------- + @6: TEST FOR DELETE EVENT /----------------------------------------------------------------------- Scenario: Delete a event Given that I have a valid access_token And that I want to delete a resource with the key "evn_uid" stored in session array And I request "project/251815090529619a99a2bf4013294414/event" Then the response status code should be 200 And the response charset is "UTF-8" - And the type is "object" \ No newline at end of file + And the type is "object" + + @7: TEST FOR GET EVENTS /---------------------------------------------------------------------- + Scenario: List all the events (result 0 events) + Given that I have a valid access_token + And I request "project/251815090529619a99a2bf4013294414/events" + Then the response status code should be 200 + And the response charset is "UTF-8" + And the response has 0 record \ No newline at end of file diff --git a/features/bootstrap/RestContext.php b/features/bootstrap/RestContext.php index faa40a073..95c2fc495 100644 --- a/features/bootstrap/RestContext.php +++ b/features/bootstrap/RestContext.php @@ -1100,13 +1100,12 @@ class RestContext extends BehatContext public function theResponseHasRecords($quantityOfRecords) { $data = $this->_data; - if (!is_array($data)) { - throw new Exception("the Response data is not an array!\n\n" ); - } - $currentRecordsCount=count($data); - if($currentRecordsCount!=$quantityOfRecords){ + if (!is_array($data)) { + throw new Exception("the Response data is not an array!\n\n" ); + } + $currentRecordsCount=count($data); + if($currentRecordsCount!=$quantityOfRecords){ throw new Exception('Records quantity not match ' . $quantityOfRecords . ' (actual: ' . $currentRecordsCount . ")\n\n"); - } + } } - } diff --git a/workflow/engine/src/BusinessModel/Event.php b/workflow/engine/src/BusinessModel/Event.php index db552640d..c5dfa7b96 100644 --- a/workflow/engine/src/BusinessModel/Event.php +++ b/workflow/engine/src/BusinessModel/Event.php @@ -21,6 +21,11 @@ class Event */ public function getEvents($sProcessUID, $filter = '', $sEventUID = '') { + $oProcess = new \Process(); + if (!($oProcess->processExists($sProcessUID))) { + throw (new \Exception( 'This process doesn\'t exist!' )); + } + $sDelimiter = \DBAdapter::getStringDelimiter(); $oCriteria = new \Criteria('workflow'); $oCriteria->addSelectColumn(\EventPeer::EVN_UID); @@ -88,6 +93,12 @@ class Event if ( ($sProcessUID == '') || (count($dataEvent) == 0) ) { return false; } + + $oProcess = new \Process(); + if (!($oProcess->processExists($sProcessUID))) { + throw (new \Exception( 'This process doesn\'t exist!' )); + } + $dataEvent = array_change_key_case($dataEvent, CASE_UPPER); if ( $create && (isset($dataEvent['ENV_UID'])) ) { diff --git a/workflow/engine/src/BusinessModel/ProcessPermissions.php b/workflow/engine/src/BusinessModel/ProcessPermissions.php index 308905ba5..930c30a45 100644 --- a/workflow/engine/src/BusinessModel/ProcessPermissions.php +++ b/workflow/engine/src/BusinessModel/ProcessPermissions.php @@ -15,8 +15,6 @@ class ProcessPermissions /** * Get list for ProcessPermissions * @var string $sProcessUID. Uid for Process - * @var string $filter. - * @var string $sEventUID. Uid for Process * * @access public * @author Brayan Pereyra (Cochalo) @@ -24,14 +22,16 @@ class ProcessPermissions * * @return array */ - public function getProcessPermissions($sProcessUID) + public function getProcessPermissions($sProcessUID, $sPermissionUid = '') { G::LoadClass('case'); Cases::verifyTable(); $aObjectsPermissions = array(); - //$aObjectsPermissions[] = array('OP_UID' => 'char', 'TASK_TARGET' => 'char', 'GROUP_USER' => 'char', 'TASK_SOURCE' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT' => 'char', 'PARTICIPATED' => 'char', 'ACTION' => 'char', 'OP_CASE_STATUS' => 'char'); $oCriteria = new \Criteria('workflow'); $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); + if ($sPermissionUid != '') { + $oCriteria->add(ObjectPermissionPeer::OP_UID, $sPermissionUid); + } $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $oDataset->next(); @@ -155,6 +155,12 @@ class ProcessPermissions $aObjectsPermissions[] = array_merge($aRow, array('OP_UID' => $aRow['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow['OP_CASE_STATUS'])); $oDataset->next(); } + + if ($sPermissionUid != '' && empty($aObjectsPermissions)) { + throw (new \Exception( 'This row doesn\'t exist!' )); + } else if ($sPermissionUid != '' && !empty($aObjectsPermissions)) { + return current($aObjectsPermissions); + } return $aObjectsPermissions; } } diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php index b56cce121..0553f949d 100644 --- a/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php @@ -35,5 +35,28 @@ class ProcessPermissions extends Api throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); } } + + /** + * @param string $projectUid {@min 1} {@max 32} + * @param string $objectPermissionUid {@min 1} {@max 32} + * + * @access public + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + * + * @return array + * + * @url GET /:projectUid/process-permission/:objectPermissionUid + */ + public function doGetProcessPermission($projectUid, $objectPermissionUid) + { + try { + $processPermissions = new \BusinessModel\ProcessPermissions(); + $response = $processPermissions->getProcessPermissions($projectUid, $objectPermissionUid); + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } }