Exemple #1
0
 public function getTestCaseIDByNameLike($args)
 {
     $msg_prefix = "(" . __FUNCTION__ . ") - ";
     $status_ok = true;
     $this->_setArgs($args);
     $result = null;
     $checkFunctions = array('authenticate', 'checkTestCaseName');
     $status_ok = $this->_runChecks($checkFunctions, $msg_prefix);
     if ($status_ok) {
         $testCaseName = $this->args[self::$testCaseNameParamName];
         $testCaseMgr = new testcase($this->dbObj);
         $keys2check = array(self::$testSuiteNameParamName, self::$testCasePathNameParamName, self::$testProjectNameParamName);
         foreach ($keys2check as $key) {
             $optional[$key] = $this->_isParamPresent($key) ? trim($this->args[$key]) : '';
         }
         if ($optional[self::$testCasePathNameParamName] != '') {
             $dummy = $testCaseMgr->getByPathName($optional[self::$testCasePathNameParamName]);
             if (!is_null($dummy)) {
                 $result[0] = $dummy;
             }
         } else {
             $result = $testCaseMgr->get_by_namelike($testCaseName, $optional[self::$testSuiteNameParamName], $optional[self::$testProjectNameParamName]);
         }
         $match_count = count($result);
         switch ($match_count) {
             case 0:
                 $status_ok = false;
                 $this->errors[] = new IXR_ERROR(NO_TESTCASE_BY_THIS_NAME, $msg_prefix . NO_TESTCASE_BY_THIS_NAME_STR);
                 break;
             case 1:
                 $status_ok = true;
                 break;
             default:
                 // multiple matches.
                 $status_ok = true;
                 break;
         }
     }
     // $this->userHasRight("mgt_view_tc",self::CHECK_PUBLIC_PRIVATE_ATTR);
     // if we have multiple matches, we have issues to check test project access for user
     // requesting operation.
     // what to do ?
     // check access for each result and remove result if user has no access to corresponding
     // test project.
     if ($status_ok) {
         $out = null;
         foreach ($result as $testcase) {
             $this->args[self::$testProjectIDParamName] = $this->tcaseMgr->get_testproject($testcase['id']);
             if ($this->userHasRight("mgt_view_tc", self::CHECK_PUBLIC_PRIVATE_ATTR)) {
                 $out[] = $testcase;
             }
         }
     }
     return $status_ok ? $out : $this->errors;
 }