+ Add compatibility check.

This commit is contained in:
zhujinyong
2021-11-09 15:52:28 +08:00
parent d75156dd74
commit d99765633e
143 changed files with 35457 additions and 17 deletions
+123
View File
@@ -0,0 +1,123 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
/**
title=测试API 获取bug列表
cid=1
pid=1
通过正确的productID获取bug列表的状态码 >> 200
通过错误的productID获取bug列表的状态码 >> 200
通过正确的productID获取bug列表的数量 >> 10
通过错误的productID获取bug列表的数量 >> 0
*/
/**
* Class bugTester
*
* @uses apiTester
* @package api
* @version $id$
*/
class bugTester extends apiTester
{
/**
* Get bug.
*
* @param int $bugID
* @access public
* @return object
*/
function get($bugID)
{
return $this->rest->get("/bugs/$bugID");
}
/**
* Get bugs.
*
* @param int $productID
* @param string $order
* @param int $page
* @param int $limit
* @access public
* @return object
*/
function getList($productID, $order = '', $page = 0, $limit = 0)
{
$vars = array();
if($order) $vars['order'] = $order;
if($page) $vars['page'] = $page;
if($limit) $vars['limit'] = $limit;
$vars = empty($vars) ? '' : '?' . http_build_query($vars);
return $this->rest->get("/products/$productID$vars");
}
/**
* Create bug.
*
* @param array $data
* @access public
* @return object
*/
function create($data)
{
return $this->rest->post("/bugs", $data);
}
/**
* Delete bug.
*
* @param int $bugID
* @access public
* @return object
*/
function delete($bugID)
{
return $this->rest->delete("/bugs/$bugID");
}
}
/* Users. */
$admin = new bugTester('admin');
$noProduct1User = new bugTester('noProduct1User');
/* Test post.*/
$noProductBug = array('title' => 'Bug1');
$noTitleBug = array('product' => 1);
$minFieldBug = array('product' => 1, 'title' => 'Bug1');
$maxFieldBug = array('product' => 1, 'title' => 'Bug2', 'build' => 0);
$wrongProductBug = array('product' => 99999, 'title' => 'Bug1');
$normalBug = array('product' => 1, 'title' => 'Bug2');
$fields = 'bug:title';
r($admin->create($noProductBug)) && c(400) && p('error') && e('product required.'); // 创建最少字段的Bug
r($admin->create($noTitleBug)) && c(400) && p('error') && e('title required.'); // 创建最少字段的Bug
r($admin->create($minFieldBug)) && c(200) && p($fields) && e('Bug1'); // 创建最少字段的Bug
r($admin->create($maxFieldBug)) && c(200) && p($fields) && e('Bug2'); // 创建最多字段的Bug
r($admin->create($wrongProductBug)) && c(400) && p('error') && e('product does not exist.'); // 创建不存在产品的Bug
/* Test get. */
$bug = $admin->create($normalBug);
r($admin->get($bug->id)) && c(200) && p($fields) && e('Bug2');
r($admin->get(9999999) && c(400) && p('error') && e('');
r($noProduct1User->get($bug->id)) && c(403) && p('error') && e('');
r($admin->getList(1)) && c(200) && p('0:title') && e('Bug1');
r($admin->getList(1), 'id_desc') && c(200) && p('0:title') && e('Bug1');
r($admin->getList(1), 'id_desc', 2, 10) && c(200) && p('0:title') && e('Bug1');
/* Test put. */
$modifyBug1 = array('product' => 1, 'title' => 'Bug3');
$modifyBug2 = array('product' => 1, 'title' => 'Bug3');
r($admin->put($modifyBug1)) && c(200) && p($fields) && e('Bug3');
r($admin->put($modifyBug2)) && c(200) && p($fields) && e('Bug3');
/* Test delete*/
r($admin->delete($bug->id)) && c(201) && p() && e('');
r($admin->get($bug->id)) && c(200) && p('bug:deleted') && e('true');
+1
View File
@@ -12,6 +12,7 @@ pid=1
使用正确用户名和密码获取token >> 登录失败,请检查您的用户名或密码是否填写正确。
*/
$pass = $rest->post('/tokens', array('account' => 'admin', 'password' => '123qwe!@#'));
$fail = $rest->post('/tokens', array('account' => 'admin', 'password' => '123'));
+124
View File
@@ -0,0 +1,124 @@
title: zt_bug
desc: Bug表
version: 1.0
fields:
- field: id
range: 1-10000
- field: project
range: 131{2},0{97}
- field: product
range: 1{20}
- field: branch
range: 0
- field: module
range: 0
- field: execution
range: 391,0,391,0{97}
- field: plan
range: 0
- field: story
range: 0
- field: storyVersion
range: 0
- field: task
range: 0
- field: toTask
range: 0
- field: toStory
range: 0
- field: title
fields:
- field: title1
range: BUG{6},`缺陷!@()[]{}|\+=%^&*$#测试bug名称到底可以有多长!@#¥%&*'":.<>。?/();`,bug
- field: title2
range: 1-10000
- field: keywords
range: []
- field: severity
range: 1-4:R
- field: pri
range: 1-4:R
- field: type
range: [codeerror,config,install,security,performance,standard,automation,designdefect,others]
- field: os
range: []{2},[all,ie,ie11,ie10,ie9,ie8,ie7,ie6,chrome,firefox,firefox4,firefox3,firefox2,opera,oprea11,oprea10,opera9,safari,maxthon,uc,other]
- field: browser
range: []
- field: hardware
range: []
- field: found
range: []
- field: steps
range: ["<p>【步骤】</p><br/><p>【结果】</p><br/><p>【期望】</p><br/>","【步骤】进入成果展示<br/>【结果】乱码<br/>【期望】正常显示<br/>"]
- field: status
range: active{50},resolved{30},closed{20}
- field: subStatus
range: []
- field: color
range: [#3da7f5,#75c941,#2dbdb2,#797ec9,#ffaf38,#ff4e3e]
- field: confirmed
range: [0,1]:R
- field: activatedCount
range: 0
- field: mailto
range: []
- field: openedBy
range: admin
- field: openedDate
range: "(-1M)-(+1w):60"
type: timestamp
format: "YYYY-MM-DD hh:mm:ss"
- field: openedBuild
range: 1,0,1,trunk{97}
- field: assignedTo
range: [admin,dev1,test1]{30},[]{20},[admin,dev1,test1]{20},[]{10},closed{20}
- field: assignedDate
range: "(-1M)-(+1w):60"
type: timestamp
format: "YYYY-MM-DD"
- field: deadline
range: "(+2w):60"
type: timestamp
format: "YYYY-MM-DD"
- field: resolvedBy
range: []{50},$assignedTo{30},admin{20}
- field: resolution
range: []{50},bydesign{5},duplicate{5},external{5},fixed{5},notrepro{2},postponed{3},willnotfix{5},fixed{10},bydesign,external,notrepro,postponed,willnotfix,duplicate{5}
- field: resolvedBuild
range: []{55},trunk{15},[]{25},trunk{5}
- field: resolvedDate
range:
- field: closedBy
range: []{80},admin{20}
- field: closedDate
range:
- field: duplicateBug
range: 0{55},1-5,0{40},10-15
- field: linkBug
range:
- field: case
range: 0
- field: caseVersion
range: 0
- field: result
range: 0
- field: repo
range: 0
- field: entry
range:
- field: lines
range:
- field: v1
range:
- field: v2
range:
- field: repoType
range:
- field: testtask
range: 0
- field: lastEditedBy
range:
- field: lastEditedDate
range:
- field: deleted
range: 0{40},1{10},0{50}
+5 -5
View File
@@ -25,9 +25,9 @@ fields:
note: "用户名"
fields:
- field: account1
range: admi,test{100},dev{200},pm{10},po{10},td{2},pd{2},qd{2},top{5},others{10},a,bb,ccc,qwuiadsd?!2as@#%$aasd~aj1!@#1
range: admin,program1User,noprogram1user,product1user,noproduct1user,project1user,noproject1user,test{100},dev{200},pm{10},po{10},td{2},pd{2},qd{2},top{5},others{10},a,bb,ccc,qwuiadsd?!2as@#%$aasd~aj1!@#1
- field: account2
range: n,1-100,1-200,1-10,1-10,1-2,1-2,1-2,1-5,1-10
range: [],1-100,1-200,1-10,1-10,1-2,1-2,1-2,1-5,1-10
- field: password
note: "密码"
range: 123qwe!@#{346}
@@ -43,9 +43,9 @@ fields:
note: "真实姓名"
fields:
- field: realname1
range: admi,测试{100},开发{200},项目经理{10},产品经理{10},研发主管{2},产品主管{2},测试主管{2},高层管理{5},其他{10},短用户名,BB,CCC,非常长非常长的用户名怎么这么长?
range: admin,测试{100},开发{200},项目经理{10},产品经理{10},研发主管{2},产品主管{2},测试主管{2},高层管理{5},其他{10},短用户名,BB,CCC,非常长非常长的用户名怎么这么长?
- field: realname2
range: n,1-100,1-200,1-10,1-10,1-2,1-2,1-2,1-5,1-10
range: [],1-100,1-200,1-10,1-10,1-2,1-2,1-2,1-5,1-10
- field: nickname
note: "昵称"
- field: commiter
@@ -77,7 +77,7 @@ fields:
- field: email2
range: 100-999:R
- field: email3
range: [@qq.com,@163.com,@gmail.com]
range: [@qq.com,@163.com,@gmail.com]
- field: skype
note: "Skype"
range: Skype
+1
View File
@@ -28,3 +28,4 @@ $builder->blockRandom = array('rows' => 120, 'data' => array('block', 'blockr
$builder->projectProduct = array('rows' => 21, 'data' => array('projectproduct'));
$builder->case = array('rows' => 10000, 'data' => array('case'));
$builder->bug = array('rows' => 100, 'data' => array('bug'));
-11
View File
@@ -46,17 +46,6 @@ include $frameworkRoot . 'helper.class.php';
$app = router::createApp('pms', dirname(dirname(__FILE__)), 'router');
$tester = $app->loadCommon();
/* Load rest for api. */
if(!isset($config->webSite)) die("Error: \$config->webSite is not set.\n");
$app->loadClass('requests', true);
include 'rest.php';
$rest = new Rest($config->webSite . '/api.php/v1');
/* Global token for api. */
$token = $rest->post('/tokens', array('account' => 'admin', 'password' => '123qwe!@#'));
if(isset($token->body)) $token = $token->body;
/* Set configs. */
$config->zendataRoot = dirname(dirname(__FILE__)) . '/zendata';
$config->ztfPath = dirname(dirname(__FILE__)) . '/tools/ztf';