Merge branch 'sprint/master_lanzongjun_unit_test2' into 'master'

finish unit test job

See merge request easycorp/zentaopms!3294
This commit is contained in:
王怡栋
2022-05-09 08:37:05 +00:00
15 changed files with 627 additions and 2 deletions
+305
View File
@@ -0,0 +1,305 @@
<?php
class jobTest
{
public function __construct()
{
global $tester;
$this->objectModel = $tester->loadModel('job');
}
/**
* Test get job by id.
*
* @param int $id
* @access public
* @return object
*/
public function getByIdTest($id)
{
$object = $this->objectModel->getById($id);
if(dao::isError()) return dao::getError();
return $object;
}
/**
* Test get job list.
*
* @param string $orderBy
* @param int $pager
* @access public
* @return object
*/
public function getListTest($orderBy = 'id_desc', $pager = null)
{
$objects = $this->objectModel->getList($orderBy, $pager);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get list by repo id.
*
* @param int $repoID
* @access public
* @return object
*/
public function getListByRepoIDTest($repoID)
{
return $this->objectModel->getListByRepoID($repoID);
}
/**
* Test get job pairs.
*
* @param int $repoID
* @param string $engine
* @access public
* @return object
*/
public function getPairsTest($repoID, $engine = '')
{
$objects = $this->objectModel->getPairs($repoID, $engine);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get job list by trigger type.
*
* @param string $triggerType
* @param array $repoIdList
* @access public
* @return object
*/
public function getListByTriggerTypeTest($triggerType, $repoIdList = array())
{
$objects = $this->objectModel->getListByTriggerType($triggerType, $repoIdList);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Test get trigger config.
*
* @param int $id
* @access public
* @return object
*/
public function getTriggerConfigTest($id)
{
$job = $this->objectModel->getById($id);
$object = $this->objectModel->getTriggerConfig($job);
if(dao::isError()) return dao::getError();
return $object;
}
/**
* Test get trigger group.
*
* @param string $triggerType
* @param array $repoIdList
* @access public
* @return array
*/
public function getTriggerGroupTest($triggerType, $repoIdList)
{
$array = $this->objectModel->getTriggerGroup($triggerType, $repoIdList);
if(dao::isError()) return dao::getError();
$group = array();
if($triggerType == 'tag') $group = isset($array[1]) ? $array[1] : array();
if($triggerType == 'commit') $group = isset($array[2]) ? $array[2] : array();
return $group;
}
/**
* Test create object.
*
* @param array $params
* @access public
* @return object
*/
public function createObject($params)
{
$createFields['name'] = '这是一个JOB3';
$createFields['engine'] = 'gitlab';
$createFields['repo'] = '1';
$createFields['reference'] = 'test_case';
$createFields['product'] = '1';
$createFields['frame'] = 'phpunit';
$createFields['triggerType'] = 'commit';
foreach($createFields as $field => $defaultValue) $_POST[$field] = $defaultValue;
foreach($params as $key => $value) $_POST[$key] = $value;
$objectID = $this->objectModel->create();
unset($_POST);
if(dao::isError()) return dao::getError();
$object = $this->objectModel->getByID($objectID);
return $object;
}
/**
* Test update object.
*
* @param int $jobId
* @param array $params
* @access public
* @return string
*/
public function updateObject($jobId, $params = array())
{
global $tester;
$object = $tester->dbh->query("SELECT * FROM " . TABLE_JOB ." WHERE id = $jobId")->fetch();
foreach($object as $field => $value)
{
if(in_array($field, array_keys($params)))
{
$_POST[$field] = $params[$field];
}
else
{
$_POST[$field] = $value;
}
}
$_POST['jkServer'] = 3;
$_POST['jkTask'] = 'dave';
$result = $this->objectModel->update($jobId);
unset($_POST);
if(dao::isError()) return dao::getError()[0];
return $result ? 'Job更新成功' : 'Job更新失败';
}
/**
* Test exec job.
*
* @param int $id
* @param array $extraParam
* @access public
* @return object
*/
public function execTest($id, $extraParam = array())
{
$object = $this->objectModel->exec($id, $extraParam);
if(dao::isError()) return dao::getError();
return $object;
}
/**
* Test exec jenkins pipeline.
*
* @param int $jobID
* @param object $repo
* @param int $compileID
* @param array $extraParam
* @access public
* @return object
*/
public function execJenkinsPipelineTest($jobID, $repo, $compileID, $extraParam = array())
{
$job = $this->objectModel->getById($jobID);
$object = $this->objectModel->execJenkinsPipeline($job, $repo, $compileID, $extraParam);
if(dao::isError()) return dao::getError();
return $object;
}
/**
* Test exec gitlab pipeline.
*
* @param int $jobID
* @access public
* @return object
*/
public function execGitlabPipelineTest($jobID)
{
$job = $this->objectModel->getById($jobID);
$object = $this->objectModel->execGitlabPipeline($job);
if(dao::isError()) return dao::getError();
return $object;
}
/**
* Test get last tag by repo.
*
* @param int $repoId
* @param int $jobId
* @access public
* @return string
*/
public function getLastTagByRepoTest($jobId)
{
global $tester;
$job = $this->objectModel->getById($jobId);
$repo = $tester->loadModel('repo')->getRepoById($job->repo);
$object = $this->objectModel->getLastTagByRepo($repo, $job);
if(dao::isError()) return dao::getError();
return $object;
}
/**
* Test get sonarqube by RepoID.
*
* @param array $repoIDList
* @param int $jobID
* @param bool $showDeleted
* @access public
* @return array
*/
public function getSonarqubeByRepoTest($repoIDList, $jobID = 0, $showDeleted = false)
{
$array = $this->objectModel->getSonarqubeByRepo($repoIDList, $jobID, $showDeleted);
if(dao::isError()) return dao::getError();
return $array;
}
/**
* Test get job pairs by sonarqube projectkeys.
*
* @param int $sonarqubeID
* @param array $projectKeys
* @param bool $emptyShowAll
* @param bool $showDeleted
* @access public
* @return array
*/
public function getJobBySonarqubeProjectTest($sonarqubeID, $projectKeys = array(), $emptyShowAll = false, $showDeleted = false)
{
$array = $this->objectModel->getJobBySonarqubeProject($sonarqubeID, $projectKeys, $emptyShowAll, $showDeleted);
if(dao::isError()) return dao::getError();
return $array;
}
}
+37
View File
@@ -0,0 +1,37 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel->create();
cid=1
pid=1
测试创建job name为空的情况 >> 『名称』不能为空。
测试创建job engine为空的情况 >> 『构建引擎』不能为空。
测试创建job triggerType为空的情况 >> 『触发方式』不能为空
测试创建job name为《这是一个job007》的情况 >> 这是一个job007
测试创建job engine为gitlab的情况 >> gitlab
测试创建job triggerType为tag的情况 >> tag
*/
$job_name = array('name' => '这是一个job007');
$job_engine = array('engine' => 'gitlab');
$job_triggerType = array('triggerType' => 'tag');
$job_name_blank = array('name' => '');
$job_engine_blank = array('engine' => '');
$job_triggerType_blank = array('triggerType' => '');
$job = new jobTest();
r($job->createObject($job_name_blank)) && p('name:0') && e('『名称』不能为空。'); // 测试创建job name为空的情况
r($job->createObject($job_engine_blank)) && p('engine:0') && e('『构建引擎』不能为空。'); // 测试创建job engine为空的情况
r($job->createObject($job_triggerType_blank)) && p('triggerType:0') && e('『触发方式』不能为空'); // 测试创建job triggerType为空的情况
r($job->createObject($job_name)) && p('name') && e('这是一个job007'); // 测试创建job name为《这是一个job007》的情况
r($job->createObject($job_engine)) && p('engine') && e('gitlab'); // 测试创建job engine为gitlab的情况
r($job->createObject($job_triggerType)) && p('triggerType') && e('tag'); // 测试创建job triggerType为tag的情况
system("./ztest init");
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel->create();
cid=1
pid=1
测试执行job id为1的情况 >> 1
*/
$jobID = 1;
$job = new jobTest();
r($job->execTest($jobID)) && p('id')&& e('1'); // 测试执行job id为1的情况
system("./ztest init");
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel->getById();
cid=1
pid=1
查询id为1的job的engine >> jenkins
查询id为1的job的frame >> sonarqube
*/
$jobIDList = array('1', '1000001');
$job = new jobTest();
r($job->getByIdTest($jobIDList[0])) && p('engine') && e('jenkins'); // 查询id为1的job的engine
r($job->getByIdTest($jobIDList[0])) && p('frame') && e('sonarqube'); // 查询id为1的job的frame
r($job->getByIdTest($jobIDList[1])) && p('engine') && e(NULL); // 查询id为1000001的job的name
r($job->getByIdTest($jobIDList[1])) && p('frame') && e(NULL); // 查询id为1000001的job的account
system("./ztest init");
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel->getJobBySonarqubeProject();
cid=1
pid=1
根据sonarqube project查询job >> 1
*/
$sonarqubeID = 2;
$projectKeys = array('zentaopms');
$job = new jobTest();
r($job->getJobBySonarqubeProjectTest($sonarqubeID, $projectKeys)) && p('zentaopms') && e('1'); // 根据sonarqube project查询job
system("./ztest init");
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel->getLastTagByRepo();
cid=1
pid=1
查询id为1的job的last tag >> tag_test1
*/
$jobID = 1;
$job = new jobTest();
r($job->getLastTagByRepoTest($jobID)) && p() && e('tag_test1'); // 查询id为1的job的last tag
system("./ztest init");
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel->getList();
cid=1
pid=1
测试获取列表的个数,目前只有两个 >> 2
测试获取列表某个job的名称信息 >> 这是一个Job1
*/
$job = new jobTest();
$list = $job->getListTest();
r(count($list)) && p() && e('2'); //测试获取列表的个数,目前只有两个
r($list) && p('1:name') && e('这是一个Job1'); //测试获取列表某个job的名称信息
system("./ztest init");
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel::getListByRepoId();
cid=1
pid=1
获取repo为1的name >> 这是一个Job1
获取repo为100001的name >> 0
*/
$job = new jobTest();
$repoIdList = array('1', '100001');
r($job->getListByRepoIDTest($repoIdList[0])) && p('1:name') && e('这是一个Job1'); // 获取repo为1的name
r($job->getListByRepoIDTest($repoIdList[1])) && p('100001:name') && e('0'); // 获取repo为100001的name
system("./ztest init");
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel::getListByTriggerType();
cid=1
pid=1
获取trigger type为tag的repo为1的name >> 这是一个Job1
获取trigger type为commit的repo为2的name >> 这是一个Job2
*/
$job = new jobTest();
$triggerType = array('tag', 'commit');
$repoIdList = array('1', '2', '100001');
r($job->getListByTriggerTypeTest($triggerType[0], $repoIdList)) && p('1:name') && e('这是一个Job1'); // 获取trigger type为tag的repo为1的name
r($job->getListByTriggerTypeTest($triggerType[1], $repoIdList)) && p('2:name') && e('这是一个Job2'); // 获取trigger type为commit的repo为2的name
system("./ztest init");
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel::getParis();
cid=1
pid=1
获取repo为1且engine为jenkins的name >> 这是一个Job1
*/
$job = new jobTest();
$repoID = '1';
$engine = 'jenkins';
r($job->getPairsTest($repoID, $engine)) && p('1') && e('这是一个Job1'); // 获取repo为1且engine为jenkins的name
system("./ztest init");
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel->getSonarqubeByRepo();
cid=1
pid=1
根据repo查询sonarqube >> 这是一个Job1
*/
$repoIDList = array('1', '2');
$job = new jobTest();
r($job->getSonarqubeByRepoTest($repoIDList)) && p('1:name') && e('这是一个Job1'); // 根据repo查询sonarqube
system("./ztest init");
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel::getTriggerConfig();
cid=1
pid=1
获取job为1的trigger config >> 目录改动(/module/caselib)
获取job为100001的trigger config >> 0
*/
$job = new jobTest();
$jobIdList = array('1', '100001');
r($job->getTriggerConfigTest($jobIdList[0])) && p() && e('目录改动(/module/caselib)'); // 获取job为1的trigger config
r($job->getTriggerConfigTest($jobIdList[1])) && p() && e('0'); // 获取job为100001的trigger config
system("./ztest init");
+24
View File
@@ -0,0 +1,24 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel::getTriggerGroup();
cid=1
pid=1
获取trigger type为tag且repo id为1的name >> 这是一个Job1
获取trigger type为commit且repo id为2的name >> 这是一个Job2
*/
$job = new jobTest();
$triggerTypeList = array('tag', 'commit');
$repoIdList = array('1', '2');
r($job->getTriggerGroupTest($triggerTypeList['0'], $repoIdList)) && p('1:name') && e('这是一个Job1'); // 获取trigger type为tag且repo id为1的name
r($job->getTriggerGroupTest($triggerTypeList['1'], $repoIdList)) && p('2:name') && e('这是一个Job2'); // 获取trigger type为commit且repo id为2的name
system("./ztest init");
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/job.class.php';
su('admin');
/**
title=jobModel->update();
cid=1
pid=1
测试更新job名称 >> Job更新成功
测试更新job引擎异常 >> SonarQube工具/框架仅在构建引擎为JenKins的情况下使用
*/
$jobID = 1;
$job_upName = array('name' => '这是一个job11');
$job_upEngine = array('engine' => 'gitlab');
$job = new jobTest();
r($job->updateObject($jobID, $job_upName)) && p() && e('Job更新成功'); //测试更新job名称
r($job->updateObject($jobID, $job_upEngine)) && p() && e('SonarQube工具/框架仅在构建引擎为JenKins的情况下使用'); //测试更新job引擎异常
system("./ztest init");
+10 -2
View File
@@ -79,9 +79,15 @@ switch($argv[1])
case 'jenkins':
ztfRun('model/jenkins');
break;
case 'job':
ztfRun('model/job');
break;
case 'kanban':
ztfRun('model/kanban');
break;
case 'message':
ztfRun('model/message');
break;
case 'model':
ztfRun('model');
break;
@@ -118,6 +124,8 @@ switch($argv[1])
case 'report':
ztfRun('model/report');
break;
case 'sso':
ztfRun('model/sso');
case 'setting':
ztfRun('model/setting');
break;
@@ -139,8 +147,8 @@ switch($argv[1])
case 'todo':
ztfRun('model/todo');
break;
case 'message':
ztfRun('model/message');
case 'tutorial':
ztfRun('model/tutorial');
break;
case 'tree':
ztfRun('model/tree');