Commit 02489d31 authored by jiaxu.yan's avatar jiaxu.yan

feat: gql修改文档

parent 92e32b67
......@@ -43,13 +43,17 @@ fragment ProjectBasicObject on Project {
status
}
# 新建文件检测项目
mutation NewFileTestProject(
fragment ProjectBasicObject on Project {
id
name
description
status
}
mutation FastTestProject(
$name: String!
$lawId: ID!
$principalUserId: ID!
$systemTypeId: ID!
$systemTypeName: String!
$systemId: ID!
$caseIdList: [ID!]!
$fileList: [ID!]!
) {
projectMutation: teamProject(id: "team_items;1") {
......@@ -57,11 +61,9 @@ mutation NewFileTestProject(
input: {
testMethod: File
name: $name
lawId: $lawId
caseIdList: $caseIdList
principalUserId: $principalUserId
autoPartsId: $systemTypeId
systemId: $systemId
systemType: $systemTypeName
fileList: $fileList
}
) {
......
......@@ -13,7 +13,7 @@
</template>
<script>
import { NewFileTestProject } from '@/api/graphql/client.graphql'
import { FastTestProject } from '@/api/graphql/client.graphql'
export default {
name: 'Index',
data() {
......@@ -32,14 +32,12 @@ export default {
this.$apollo
.mutate({
// fetchPolicy: 'no-cache',
mutation: NewFileTestProject,
mutation: FastTestProject,
variables: {
name: 'test106',
name: 'test108',
lawId: 'law_items;106',
principalUserId: 'user_items;2',
systemTypeId: 'autoParts;1',
systemTypeName: 'Linux',
systemId: 'system;1',
caseIdList: 'system;1',
fileList: ['file_management_items;2']
}
})
......
# 车联网安全检测平台 API V202401
# 车联网安全检测平台 API V202403
## 目录
- [快速开始](#_quick_start)
......@@ -7,6 +7,7 @@
- 检测项目
- [新建文件检测项目](#NewFileTestProject)
- [新建终端检测项目](#NewClientTestProject)
- [快速新建检测项目](#FastTestProject)
- [查询操作系统列表](#GetSystemList)
- [查询检测终端列表](#GetClientList)
- [查询安卓设备列表](#GetAndroidDeviceList)
......@@ -61,6 +62,7 @@
- [StepPluginResult](#StepPluginResult)
- [错误码](#error_code)
- [示例脚本](#example)
- [更新日志](#changelog)
## <a id="_quick_start"></a>快速开始
该文档假设你已经熟悉了HTTP协议,了解JSON格式。
......@@ -225,8 +227,6 @@ curl -X POST \
| name | String! | 是 | 项目名称 |
| lawId | String! | 是 | 用例集id,示例:"law_items;1",可参考[查询用例集列表](#GetSuiteList)中返回的id |
| principalUserId | String! | 是 | 负责人id,示例:"user_items;1",可参考[查询用户列表](#GetUserList)中返回的id |
| systemTypeId | String! | 是 | 系统类型id,示例:"autoParts;1",可参考[查询操作系统列表](#GetSystemList)中返回的systemTypeId |
| systemTypeName | String! | 是 | 系统类型名称,示例:"Linux",可参考[查询操作系统列表](#GetSystemList)中返回的systemTypeName |
| systemId | String! | 是 | 系统id,示例:"system;123",可参考[查询操作系统列表](#GetSystemList)中返回的systemId |
| fileList | [ID!]! | 是 | 待检测文件列表,示例:["file_management_items;1","file_management_items;2"],可参考[查询文件列表](#GetFileList)中返回的id |
......@@ -258,7 +258,7 @@ curl -X POST \
```json
{
"query": "fragment ProjectBasicObject on Project{id name description status}mutation NewFileTestProject($name:String!$lawId:ID!$principalUserId:ID!$systemTypeId:ID!$systemTypeName:String!$systemId:ID!$fileList:[ID!]!){projectMutation:teamProject(id:\"team_items;1\"){project:createProject(input:{testMethod:File name:$name lawId:$lawId principalUserId:$principalUserId autoPartsId:$systemTypeId systemId:$systemId systemType:$systemTypeName fileList:$fileList}){...ProjectBasicObject}}}",
"query": "fragment ProjectBasicObject on Project{id name description status}mutation NewFileTestProject($name:String!$lawId:ID!$principalUserId:ID!$systemId:ID!$fileList:[ID!]!){projectMutation:teamProject(id:\"team_items;1\"){project:createProject(input:{testMethod:File name:$name lawId:$lawId principalUserId:$principalUserId systemId:$systemId fileList:$fileList}){...ProjectBasicObject}}}",
"variables": {}
}
```
......@@ -291,10 +291,10 @@ fragment ProjectBasicObject on Project {
status
}
mutation NewFileTestProject($name: String!, $lawId: ID!, $principalUserId: ID!, $systemTypeId: ID!, $systemTypeName: String!, $systemId: ID!, $fileList: [ID!]!) {
mutation NewFileTestProject($name: String!, $lawId: ID!, $principalUserId: ID!, $systemId: ID!, $fileList: [ID!]!) {
projectMutation: teamProject(id: &quot;team_items;1&quot;) {
project: createProject(
input: {testMethod: File, name: $name, lawId: $lawId, principalUserId: $principalUserId, autoPartsId: $systemTypeId, systemId: $systemId, systemType: $systemTypeName, fileList: $fileList}
input: {testMethod: File, name: $name, lawId: $lawId, principalUserId: $principalUserId, systemId: $systemId, fileList: $fileList}
) {
...ProjectBasicObject
}
......@@ -314,8 +314,6 @@ mutation NewFileTestProject($name: String!, $lawId: ID!, $principalUserId: ID!,
| name | String! | 是 | 项目名称 |
| lawId | String! | 是 | 用例集id,示例:"law_items;1",可参考[查询用例集列表](#GetSuiteList)中返回的id |
| principalUserId | String! | 是 | 负责人id,示例:"user_items;1",可参考[查询用户列表](#GetUserList)中返回的id |
| systemTypeId | String! | 是 | 系统类型id,示例:"autoParts;1",可参考[查询操作系统列表](#GetSystemList)中返回的systemTypeId |
| systemTypeName | String! | 是 | 系统类型名称,示例:"Linux",可参考[查询操作系统列表](#GetSystemList)中返回的systemTypeName |
| systemId | String! | 是 | 系统id,示例:"system;123",可参考[查询操作系统列表](#GetSystemList)中返回的systemTypeId |
| clientId | String! | 是 | 终端id,示例:"fffff40e-80cc-45f2-9186-fdae87ca327d",可参考[检测设备状态](#DetectDevice)接口中返回的clientId |
| deviceId | String! | 是 | 设备id,示例:"LX-60C1FFFF",可参考[检测设备状态](#DetectDevice)接口中返回的deviceId |
......@@ -354,7 +352,7 @@ mutation NewFileTestProject($name: String!, $lawId: ID!, $principalUserId: ID!,
```json
{
"query": "fragment ProjectBasicObject on Project{id name description status}mutation NewClientTestProject($name:String!$lawId:ID!$principalUserId:ID!$systemTypeId:ID!$systemTypeName:String!$systemId:ID!$clientId:String!$deviceId:String!$connectType:String!$ip:String!$port:Int!$username:String!$password:String$certUrl:String){projectMutation:teamProject(id:\"team_items;1\"){project:createProject(input:{testMethod:Client name:$name lawId:$lawId principalUserId:$principalUserId autoPartsId:$systemTypeId systemId:$systemId systemType:$systemTypeName clientId:$clientId deviceId:$deviceId linuxConnectType:$connectType linuxConnectIP:$ip linuxConnectPort:$port linuxConnectUser:$username linuxConnectPassword:$password linuxConnectCertificateUrl:$certUrl}){...ProjectBasicObject}}}",
"query": "fragment ProjectBasicObject on Project{id name description status}mutation NewClientTestProject($name:String!$lawId:ID!$principalUserId:ID!$systemId:ID!$clientId:String!$deviceId:String!$connectType:String!$ip:String!$port:Int!$username:String!$password:String$certUrl:String){projectMutation:teamProject(id:\"team_items;1\"){project:createProject(input:{testMethod:Client name:$name lawId:$lawId principalUserId:$principalUserId systemId:$systemId clientId:$clientId deviceId:$deviceId linuxConnectType:$connectType linuxConnectIP:$ip linuxConnectPort:$port linuxConnectUser:$username linuxConnectPassword:$password linuxConnectCertificateUrl:$certUrl}){...ProjectBasicObject}}}",
"variables": {}
}
```
......@@ -387,10 +385,97 @@ fragment ProjectBasicObject on Project {
status
}
mutation NewClientTestProject($name: String!, $lawId: ID!, $principalUserId: ID!, $systemTypeId: ID!, $systemTypeName: String!, $systemId: ID!, $clientId: String!, $deviceId: String!, $connectType: String!, $ip: String!, $port: Int!, $username: String!, $password: String, $certUrl: String) {
mutation NewClientTestProject($name: String!, $lawId: ID!, $principalUserId: ID!, $systemId: ID!, $clientId: String!, $deviceId: String!, $connectType: String!, $ip: String!, $port: Int!, $username: String!, $password: String, $certUrl: String) {
projectMutation: teamProject(id: &quot;team_items;1&quot;) {
project: createProject(
input: {testMethod: Client, name: $name, lawId: $lawId, principalUserId: $principalUserId, autoPartsId: $systemTypeId, systemId: $systemId, systemType: $systemTypeName, clientId: $clientId, deviceId: $deviceId, linuxConnectType: $connectType, linuxConnectIP: $ip, linuxConnectPort: $port, linuxConnectUser: $username, linuxConnectPassword: $password, linuxConnectCertificateUrl: $certUrl}
input: {testMethod: Client, name: $name, lawId: $lawId, principalUserId: $principalUserId, systemId: $systemId, clientId: $clientId, deviceId: $deviceId, linuxConnectType: $connectType, linuxConnectIP: $ip, linuxConnectPort: $port, linuxConnectUser: $username, linuxConnectPassword: $password, linuxConnectCertificateUrl: $certUrl}
) {
...ProjectBasicObject
}
}
}
</code></pre>
</details>
### <a id="FastTestProject"></a>快速新建检测项目
快速创建新的检测项目,无需输入用例集,系统将会自动根据输入的用例id列表生成(虚拟)用例集
#### 请求参数
| 名称 | 类型 | 是否必填 | 描述 |
| ---- | ---- | ------ | ---- |
| name | String! | 是 | 项目名称 |
| principalUserId | String! | 是 | 负责人id,示例:"user_items;1",可参考[查询用户列表](#GetUserList)中返回的id |
| systemId | String! | 是 | 系统id,示例:"system;123",可参考[查询操作系统列表](#GetSystemList)中返回的systemId |
| caseIdList | [ID!]! | 是 | 用例id列表,示例:["case_items;1","case_items;2"],可参考[查询用例列表](#GetAllCaseList)中返回的id |
| fileList | [ID!]! | 是 | 待检测文件列表,示例:["file_management_items;1","file_management_items;2"],可参考[查询文件列表](#GetFileList)中返回的id |
#### 响应类型
##### <a id="FastTestProject_Mutation"></a>Mutation
| 名称 | 类型 | 描述 |
| ---- | ---- | ----------- |
| projectMutation | [TeamProjectMutation!](#FastTestProject_TeamProjectMutation) | 修改检测项目 |
##### <a id="FastTestProject_TeamProjectMutation"></a>TeamProjectMutation
| 名称 | 类型 | 描述 |
| ---- | ---- | ----------- |
| project | [Project](#FastTestProject_Project) | 创建检测项目 |
##### <a id="FastTestProject_Project"></a>Project
| 名称 | 类型 | 描述 |
| ---- | ---- | ----------- |
| id | String! | 项目ID,示例:"project_items;1" |
| name | String! | 项目名称 |
| description | String! | 项目的描述信息 |
| status | [CommonStatus!](#CommonStatus) | 项目的检测状态,对应未检测、检测中、已完成 |
#### 查询JSON
```json
{
"query": "fragment ProjectBasicObject on Project{id name description status}mutation FastTestProject($name:String!$principalUserId:ID!$systemId:ID!$caseIdList:[ID!]!$fileList:[ID!]!){projectMutation:teamProject(id:\"team_items;1\"){project:createProject(input:{testMethod:File name:$name caseIdList:$caseIdList principalUserId:$principalUserId systemId:$systemId fileList:$fileList}){...ProjectBasicObject}}}",
"variables": {}
}
```
#### 响应JSON示例
```json
{
"data": {
"projectMutation": {
"project": {
"id": "project_items;1",
"name": "创建样例",
"description": "",
"status": "Ready"
}
}
}
}
```
#### 查询
<details>
<summary>展开查看</summary>
<pre><code>
fragment ProjectBasicObject on Project {
id
name
description
status
}
mutation FastTestProject($name: String!, $principalUserId: ID!, $systemId: ID!, $caseIdList: [ID!]!, $fileList: [ID!]!) {
projectMutation: teamProject(id: &quot;team_items;1&quot;) {
project: createProject(
input: {testMethod: File, name: $name, caseIdList: $caseIdList, principalUserId: $principalUserId, systemId: $systemId, fileList: $fileList}
) {
...ProjectBasicObject
}
......@@ -2894,6 +2979,7 @@ query GetCaseDetail($caseId: ID!) {
| offset | Int | 否 | 分页参数,表示偏移量,默认为0 |
| limit | Int | 否 | 分页参数,表示返回数量,默认为50 |
| search | String | 否 | 搜索参数,用于匹配用例名称或序列号 |
| scenario | String | 否 | 测试场景参数,用于获取该场景下的所有用例 |
#### 响应类型
......@@ -2933,7 +3019,7 @@ query GetCaseDetail($caseId: ID!) {
```json
{
"query": "fragment CaseListItem on CaseCustomItemRep{count list:resultList{id serialNumber name description:caseDesc remediation submitUserName submitTime canModify needDevice:isBind classifyName operatingSystemName riskLevelName testMethodName}}query GetCaseList($suiteId:ID$offset:Int=0$limit:Int=50$search:String=\"\"){caseList:getAllCaseList(teamId:\"team_items;1\" suiteId:$suiteId offset:{offset:$offset limit:$limit}search:{retrieveData:[{RetrieveColumn:\"allName\" RetrieveValue:$search}]sortData:[{SortColumn:\"serialNumber\" SortOrder:ASC}]}){...CaseListItem}}",
"query": "fragment CaseListItem on CaseCustomItemRep{count list:resultList{id serialNumber name description:caseDesc remediation submitUserName submitTime canModify needDevice:isBind classifyName operatingSystemName riskLevelName testMethodName}}query GetCaseList($suiteId:ID$offset:Int=0$limit:Int=50$search:String=\"\"$scenario:String){caseList:getAllCaseList(teamId:\"team_items;1\" suiteId:$suiteId offset:{offset:$offset limit:$limit}search:{retrieveData:[{RetrieveColumn:\"allName\" RetrieveValue:$search}]sortData:[{SortColumn:\"serialNumber\" SortOrder:ASC}]}scenario:$scenario){...CaseListItem}}",
"variables": {}
}
```
......@@ -2961,12 +3047,13 @@ fragment CaseListItem on CaseCustomItemRep {
}
}
query GetCaseList($suiteId: ID, $offset: Int = 0, $limit: Int = 50, $search: String = &quot;&quot;) {
query GetCaseList($suiteId: ID, $offset: Int = 0, $limit: Int = 50, $search: String = &quot;&quot;, $scenario: String) {
caseList: getAllCaseList(
teamId: &quot;team_items;1&quot;
suiteId: $suiteId
offset: {offset: $offset, limit: $limit}
search: {retrieveData: [{RetrieveColumn: &quot;allName&quot;, RetrieveValue: $search}], sortData: [{SortColumn: &quot;serialNumber&quot;, SortOrder: ASC}]}
scenario: $scenario
) {
...CaseListItem
}
......@@ -3608,7 +3695,6 @@ query GetUserList($offset: Int! = 0, $limit: Int! = 50, $search: String) {
```bash
#!/bin/bash
# 本脚本用于在车联网安全检测平台创建终端检测项目样例,需要检测终端已连接平台
#
# 脚本依赖于以下参数:
......@@ -3752,19 +3838,15 @@ query GetUserList($offset: Int! = 0, $limit: Int! = 50, $search: String) {
echo -e "\n新建终端检测项目..."
name="检测项目样例$(date +%s)"
lawId=$(echo $law | jq -r .id)
systemTypeId=$(echo $system | jq -r .systemTypeId)
systemTypeName=$(echo $system | jq -r .systemTypeName)
systemId=$(echo $system | jq -r .systemId)
clientId=$(echo $device | jq -r .data.checkDeviceOnline.clientId)
deviceId=$(echo $device | jq -r .data.checkDeviceOnline.deviceId)
payload='{
"query": "fragment ProjectBasicObject on Project{id name description status}mutation NewClientTestProject($name:String!$lawId:ID!$principalUserId:ID!$systemTypeId:ID!$systemTypeName:String!$systemId:ID!$clientId:String!$deviceId:String!$connectType:String!$ip:String!$port:Int!$username:String!$password:String$certUrl:String){projectMutation:teamProject(id:\"team_items;1\"){project:createProject(input:{testMethod:Client name:$name lawId:$lawId principalUserId:$principalUserId autoPartsId:$systemTypeId systemId:$systemId systemType:$systemTypeName clientId:$clientId deviceId:$deviceId linuxConnectType:$connectType linuxConnectIP:$ip linuxConnectPort:$port linuxConnectUser:$username linuxConnectPassword:$password linuxConnectCertificateUrl:$certUrl}){...ProjectBasicObject}}}",
"query": "fragment ProjectBasicObject on Project{id name description status}mutation NewClientTestProject($name:String!$lawId:ID!$principalUserId:ID!$systemId:ID!$clientId:String!$deviceId:String!$connectType:String!$ip:String!$port:Int!$username:String!$password:String$certUrl:String){projectMutation:teamProject(id:\"team_items;1\"){project:createProject(input:{testMethod:Client name:$name lawId:$lawId principalUserId:$principalUserId systemId:$systemId clientId:$clientId deviceId:$deviceId linuxConnectType:$connectType linuxConnectIP:$ip linuxConnectPort:$port linuxConnectUser:$username linuxConnectPassword:$password linuxConnectCertificateUrl:$certUrl}){...ProjectBasicObject}}}",
"variables": {
"name": "'$name'",
"lawId": "'$lawId'",
"principalUserId": "user_items;1",
"systemTypeId": "'$systemTypeId'",
"systemTypeName": "'$systemTypeName'",
"systemId": "'$systemId'",
"clientId": "'$clientId'",
"deviceId": "'$deviceId'",
......@@ -3783,3 +3865,13 @@ query GetUserList($offset: Int! = 0, $limit: Int! = 50, $search: String) {
echo "新建结果:"
echo $project | jq .
```
## <a id="changelog"></a>更新日志
### 202403
#### 新增
* 支持[快速创建项目](#FastTestProject)
#### 调整
* [查询用例列表](#GetCaseList) 新增 `scenario` 参数,用于查询具体测试场景下的用例列表
### 202401
初始版本
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment