Пример #1
0
 /**
  * Find a test case by its name
  * 
  * <b>Searching is case sensitive.</b> The test case will only be returned if there is a definite match.
  * If possible also pass the string for the test suite name. 
  *
  * No results will be returned if there are test cases with the same name that match the criteria provided.  
  * 
  * @param struct $args
  * @param string $args["devKey"]
  * @param string $args["testcasename"]
  * @param string $args["testsuitename"] - optional
  * @param string $args["testprojectname"] - optional
  * @param string $args["testcasepathname"] - optional
  *               Full test case path name, starts with test project name
  *               pieces separator -> :: -> default value of getByPathName()
  * @return mixed $resultInfo
  */
 public function getTestCaseIDByName($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_name($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;
 }
Пример #2
0
 /**
  * Find a test case by its name
  * 
  * <b>Searching is case sensitive.</b> The test case will only be returned if there is a definite match.
  * If possible also pass the string for the test suite name. 
  *
  * No results will be returned if there are test cases with the same name that match the criteria provided.  
  * 
  * @param struct $args
  * @param string $args["devKey"]
  * @param string $args["testcasename"]
  * @param string $args["testsuitename"] - optional
  * @param string $args["testprojectname"] - optional
  * @param string $args["testcasepathname"] - optional
  *               Full test case path name, starts with test project name
  *               pieces separator -> :: -> default value of getByPathName()
  * @return mixed $resultInfo
  */
 public function getTestCaseIDByName($args)
 {
     $msg_prefix = "(" . __FUNCTION__ . ") - ";
     $status_ok = true;
     $this->_setArgs($args);
     $result = null;
     $checkFunctions = array('authenticate', 'checkTestCaseName');
     $status_ok = $this->_runChecks($checkFunctions, $msg_prefix) && $this->userHasRight("mgt_view_tc");
     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]) : '';
         }
         // 20091128 - franciscom
         if ($optional[self::$testCasePathNameParamName] != '') {
             $dummy = $testCaseMgr->getByPathName($optional[self::$testCasePathNameParamName]);
             if (!is_null($dummy)) {
                 $result[0] = $dummy;
             }
         } else {
             $result = $testCaseMgr->get_by_name($testCaseName, $optional[self::$testSuiteNameParamName], $optional[self::$testProjectNameParamName]);
         }
         if (0 == sizeof($result)) {
             $status_ok = false;
             $this->errors[] = new IXR_ERROR(NO_TESTCASE_BY_THIS_NAME, $msg_prefix . NO_TESTCASE_BY_THIS_NAME_STR);
             return $this->errors;
         }
     }
     return $status_ok ? $result : $this->errors;
 }