* Add gitlab unit test

This commit is contained in:
zenggang
2024-01-11 03:30:03 +00:00
parent 00d66338ba
commit a355db9b9a
4 changed files with 157 additions and 15 deletions
-15
View File
@@ -2071,21 +2071,6 @@ class gitlabModel extends model
return false;
}
/**
* 获取项目类型是gitlab的产品。
* Get products which scm is GitLab by projects.
*
* @param array $projectIDs
* @return array
*/
public function getProductsByProjects(array $projectIDs): array
{
return $this->dao->select('path,product')->from(TABLE_REPO)->where('deleted')->eq('0')
->andWhere('SCM')->eq('Gitlab')
->andWhere('path')->in($projectIDs)
->fetchPairs('path', 'product');
}
/**
* 获取项目保护分支。
* Get protect branches of one project.
+7
View File
@@ -388,4 +388,11 @@ class gitlabTest
return $result;
}
public function apiUpdateHookTest(int $gitlabID, int $projectID, int $hookID, object $hook)
{
$result = $this->gitlab->apiUpdateHook($gitlabID, $projectID, $hookID, $hook);
return json_decode($result);
}
}
@@ -0,0 +1,48 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/gitlab.class.php';
su('admin');
/**
title=测试 gitlabModel::apiUpdateHook();
timeout=0
cid=1
- 使用空的projectID更新gitlab群组属性message @404 Project Not Found
- 使用空的hookID更新gitlab群组属性message @404 Not found
- 使用错误gitlabID更新群组 @0
- 通过gitlabID,projectID,分支对象正确更新GitLab分支
- 属性merge_requests_events @~~
- 属性push_events @1
*/
zdTable('pipeline')->gen(5);
$gitlab = $tester->loadModel('gitlab');
$gitlabID = 1;
$projectID = 2;
$hooks = $gitlab->apiGetHooks($gitlabID, $projectID);
foreach($hooks as $hook)
{
if($hook->url == 'http://unittest.com/api.php/v1/gitlab/webhook?repoID=1')
{
$hookID = $hook->id;
break;
}
}
$hook = new stdclass();
$hook->url = 'http://unittest.com/api.php/v1/gitlab/webhook?repoID=1';
$hook->merge_requests_events = 0;
$gitlabTest = new gitlabTest();
r($gitlabTest->apiUpdateHookTest($gitlabID, 0, $hookID, $hook)) && p('message') && e('404 Project Not Found'); //使用空的projectID更新gitlab群组
r($gitlabTest->apiUpdateHookTest($gitlabID, $projectID, 0, $hook)) && p('message') && e('404 Not found'); //使用空的hookID更新gitlab群组
r($gitlabTest->apiUpdateHookTest(0, $projectID, $hookID, $hook)) && p() && e('0'); //使用错误gitlabID更新群组
r($gitlabTest->apiUpdateHookTest($gitlabID, $projectID, $hookID, $hook)) && p('merge_requests_events,push_events') && e('~~,1'); //通过gitlabID,projectID,分支对象正确更新GitLab分支
+102
View File
@@ -0,0 +1,102 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
/**
title=测试 gitlabModel::isClickable();
timeout=0
cid=1
- 计算isDeveloper为true是否能进行浏览分支操作 @1
- 计算isDeveloper为false是否能进行浏览分支操作 @0
- 计算isDeveloper为true是否能进行浏览标签操作 @1
- 计算isDeveloper为false是否能进行浏览标签操作 @0
- 计算hasRepo为true是否能进行项目成员管理操作 @1
- 计算hasRepo为false是否能进行项目成员管理操作 @0
- 计算hasRepo为true是否能进行webhook创建操作 @1
- 计算hasRepo为false是否能进行webhook创建操作 @0
- 计算defaultBranch为true是否能进行分支保护管理操作 @1
- 计算defaultBranch为false是否能进行分支保护管理操作 @0
- 计算defaultBranch为true是否能进行标签保护管理操作 @1
- 计算defaultBranch为false是否能进行标签保护管理操作 @0
- 计算defaultBranch为true是否能进行项目编辑操作 @1
- 计算defaultBranch为false是否能进行项目编辑操作 @0
- 计算defaultBranch为true是否能进行删除项目操作 @1
- 计算defaultBranch为false是否能进行删除项目操作 @0
- 计算isAdmin为true是否能进行编辑群组操作 @1
- 计算isAdmin为false是否能进行编辑群组操作 @0
- 计算isAdmin为true是否能进行删除群组操作 @1
- 计算isAdmin为false是否能进行删除群组操作 @0
- 计算isAdmin为true是否能进行编辑用户操作 @1
- 计算isAdmin为false是否能进行编辑用户操作 @0
- 计算isAdmin为true是否能进行删除用户操作 @1
- 计算isAdmin为false是否能进行删除用户操作 @0
- 计算protected为true是否能进行删除tag操作 @0
- 计算protected为false是否能进行删除tag操作 @1
*/
$gitlabModel = $tester->loadModel('gitlab');
$gitlab1 = new stdclass();
$gitlab1->isDeveloper = true;
$gitlab2 = new stdclass();
$gitlab2->isDeveloper = false;
$gitlab3 = new stdclass();
$gitlab3->hasRepo = true;
$gitlab4 = new stdclass();
$gitlab4->hasRepo = false;
$gitlab5 = new stdclass();
$gitlab5->defaultBranch = true;
$gitlab6 = new stdclass();
$gitlab6->defaultBranch = false;
$gitlab7 = new stdclass();
$gitlab7->isAdmin = true;
$gitlab8 = new stdclass();
$gitlab8->isAdmin = false;
$gitlab9 = new stdclass();
$gitlab9->protected = true;
$gitlab10 = new stdclass();
$gitlab10->protected = false;
r($gitlabModel->isClickable($gitlab1, 'browseBranch')) && p() && e('1'); //计算isDeveloper为true是否能进行浏览分支操作
r($gitlabModel->isClickable($gitlab2, 'browseBranch')) && p() && e('0'); //计算isDeveloper为false是否能进行浏览分支操作
r($gitlabModel->isClickable($gitlab1, 'browseTag')) && p() && e('1'); //计算isDeveloper为true是否能进行浏览标签操作
r($gitlabModel->isClickable($gitlab2, 'browseTag')) && p() && e('0'); //计算isDeveloper为false是否能进行浏览标签操作
r($gitlabModel->isClickable($gitlab3, 'manageProjectMembers')) && p() && e('1'); //计算hasRepo为true是否能进行项目成员管理操作
r($gitlabModel->isClickable($gitlab4, 'manageProjectMembers')) && p() && e('0'); //计算hasRepo为false是否能进行项目成员管理操作
r($gitlabModel->isClickable($gitlab3, 'createWebhook')) && p() && e('1'); //计算hasRepo为true是否能进行webhook创建操作
r($gitlabModel->isClickable($gitlab4, 'createWebhook')) && p() && e('0'); //计算hasRepo为false是否能进行webhook创建操作
r($gitlabModel->isClickable($gitlab5, 'manageBranchPriv')) && p() && e('1'); //计算defaultBranch为true是否能进行分支保护管理操作
r($gitlabModel->isClickable($gitlab6, 'manageBranchPriv')) && p() && e('0'); //计算defaultBranch为false是否能进行分支保护管理操作
r($gitlabModel->isClickable($gitlab5, 'manageTagPriv')) && p() && e('1'); //计算defaultBranch为true是否能进行标签保护管理操作
r($gitlabModel->isClickable($gitlab6, 'manageTagPriv')) && p() && e('0'); //计算defaultBranch为false是否能进行标签保护管理操作
r($gitlabModel->isClickable($gitlab5, 'editProject')) && p() && e('1'); //计算defaultBranch为true是否能进行项目编辑操作
r($gitlabModel->isClickable($gitlab6, 'editProject')) && p() && e('0'); //计算defaultBranch为false是否能进行项目编辑操作
r($gitlabModel->isClickable($gitlab5, 'deleteProject')) && p() && e('1'); //计算defaultBranch为true是否能进行删除项目操作
r($gitlabModel->isClickable($gitlab6, 'deleteProject')) && p() && e('0'); //计算defaultBranch为false是否能进行删除项目操作
r($gitlabModel->isClickable($gitlab7, 'editGroup')) && p() && e('1'); //计算isAdmin为true是否能进行编辑群组操作
r($gitlabModel->isClickable($gitlab8, 'editGroup')) && p() && e('0'); //计算isAdmin为false是否能进行编辑群组操作
r($gitlabModel->isClickable($gitlab7, 'deleteGroup')) && p() && e('1'); //计算isAdmin为true是否能进行删除群组操作
r($gitlabModel->isClickable($gitlab8, 'deleteGroup')) && p() && e('0'); //计算isAdmin为false是否能进行删除群组操作
r($gitlabModel->isClickable($gitlab7, 'editUser')) && p() && e('1'); //计算isAdmin为true是否能进行编辑用户操作
r($gitlabModel->isClickable($gitlab8, 'editUser')) && p() && e('0'); //计算isAdmin为false是否能进行编辑用户操作
r($gitlabModel->isClickable($gitlab7, 'deleteUser')) && p() && e('1'); //计算isAdmin为true是否能进行删除用户操作
r($gitlabModel->isClickable($gitlab8, 'deleteUser')) && p() && e('0'); //计算isAdmin为false是否能进行删除用户操作
r($gitlabModel->isClickable($gitlab9, 'deleteTag')) && p() && e('0'); //计算protected为true是否能进行删除tag操作
r($gitlabModel->isClickable($gitlab10, 'deleteTag')) && p() && e('1'); //计算protected为false是否能进行删除tag操作