This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
dongxiaoyan-tsg-autotest/02-Keyword/tsg_bfapi/policy_object/Object.robot
wangxin 3e390386c3 fix:(v1版本接口分隔符)引用对象使用变量分隔符
feat:(策略对象)1.策略对象相关性查询;2.App ID对象树查询;
2020-07-01 12:03:01 +08:00

218 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

*** Settings ***
Library Collections
Library RequestsLibrary
Resource ../../../03-Variable/BifangApiVariable.txt
Resource ../../../02-Keyword/tsg_bfapi/policy_file_interface/FunctionalKeywords.robot
Resource ProcessObjectBody.robot
Library Collections
Resource ../Common.robot
*** Variables ***
${objectUrl} /policy/object
*** Keywords ***
AddObjects
[Documentation]
... 新增策略对象
... objectList,策略对象,可为list类型与dict类型
... returnData是否返回数据固定为1
[Arguments] ${returnData} ${objectList}
${returnData}= Run Keyword If '${returnData}' == '${EMPTY}' Set Variable 1
... ELSE Set Variable ${returnData}
#必选参数判定
Should Not Be Empty ${objectList}
${dictType} = Evaluate type(${objectList})
${body} Run Keyword If "${dictType}" == "<class 'list'>" ObjectListOperation ${returnData} ${objectList} add
... ELSE IF "${dictType}" == "<class 'dict'>" ObjectOperation ${returnData} ${objectList} add
... ELSE Set Variable ${EMPTY}
${response} BasePostRequestForV2 ${objectUrl} ${body} ${version}
${objectIds} Run Keyword If "${returnData}" == "1" Get-ObjectIds ${response}
... ELSE Create List
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${rescode} ${objectIds}
UpdateObjects
[Documentation]
... 更新策略对象
... objectList,策略对象,可为list类型与dict类型
... returnData是否返回数据固定为1
... opAction可为updateenable,disable
[Arguments] ${returnData} ${objectList} ${opAction}
${returnData}= Run Keyword If '${returnData}' == '${EMPTY}' Set Variable 1
... ELSE Set Variable ${returnData}
#必选参数判定
Should Not Be Empty ${objectList}
${dictType} = Evaluate type(${objectList})
${body} Run Keyword If "${dictType}" == "<class 'list'>" ObjectListOperation ${returnData} ${objectList} ${opAction}
... ELSE IF "${dictType}" == "<class 'dict'>" ObjectOperation ${returnData} ${objectList} ${opAction}
... ELSE Set Variable ${EMPTY}
${response} BaseEditRequestForV2 ${objectUrl} ${body} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${rescode}
GetObjectItems
[Documentation]
... 获取策略对象中的item,策略对象单元
... 当updateItemList中有需要传入数据时
... 调用此关键字
[Arguments] ${params}
#必选参数判定
Should Not Be Empty ${params}
${paramsStr} Dictionary-To-QueryParams ${params}
${response} BaseFormRequest /policy/items ${paramsStr} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
${data} Set Variable ${response['data']}
${itemIds} Create List
FOR ${item} IN @{data['list']}
Append To List ${itemIds} ${item['itemId']}
END
[Return] ${rescode} ${itemIds} ${data['list']}
GetObjectItems1
[Documentation]
... 获取策略对象中的item,策略对象单元
... 当updateItemList中有需要传入数据时
... 调用此关键字
[Arguments] ${params}
#必选参数判定
Should Not Be Empty ${params}
${paramsStr} Dictionary-To-QueryParams ${params}
${response} BaseFormRequest /policy/items ${paramsStr} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
${data} Set Variable ${response['data']}
[Return] ${rescode} ${data}
DeleteObjects
[Documentation]
... 删除策略对象
... params传入的删除字典
... 结构为[1,2,3]
[Arguments] ${objectIds}
${type} Evaluate isinstance(${objectIds},list)
Should Be True ${type}
${dict} Create Dictionary objectIds=${objectIds}
${json} json.Dumps ${dict} ensure_ascii=False
${response} BaseDeleteRequest /${version}${objectUrl} ${json}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${rescode}
ImportObject
[Documentation]
... 策略对象导入
... filePath文件路径
... fileName文件名称
... objectType对象类型
... objectSubType对象子类型
... objectName对象名称
... jira CHON-12导入限制需求支持
[Arguments] ${filePath} ${fileName} ${objectType} ${objectSubType} ${objectName}
Directory Should Exist ${path}
File Should Exist ${path}/${filePath}/${fileName}
File Should Not Be Empty ${path}/${filePath}/${fileName}
${size} Get File Size ${path}/${filePath}/${fileName}
Should Not Be Empty ${objectType}
#获取Item 的总数
${total} GetItemNum ${objectType} ${objectSubType}
#获取导入文件中的总行数
${lines} CountLines ${path}/${filePath}/${fileName}
#总数超过一定数据量测试不通过
${total1} Evaluate ${total}+${lines}
#jira CHON-12导入限制需求支持
Run Keyword If "${objectType}"=="url" and ${total1}>1000000 Fail 当前已经存在item个数${total},待导入个数${lines},总数超过100万条
... ELSE IF ${total1}>100000 Fail 当前已经存在item个数${total},待导入个数${lines},总数超过10万条
${objectSubType} Run Keyword If "${objectType}"=="ip" and "${objectSubType}"=="${EMPTY}" Set Variable endpoint
... ELSE Set Variable ${objectSubType}
${subfix} Fetch From Right ${fileName} .
${binFile} Run Keyword If "${subfix}"=="txt" Evaluate (r'${fileName}',open(r"${path}/${filePath}/${fileName}",'rb'),'text/plain')
... ELSE IF "${subfix}"=="csv" Evaluate (r'${fileName}',open(r"${path}/${filePath}/${fileName}",'rb'),'application/vnd.ms-excel')
... ELSE ${EMPTY}
${data} Create Dictionary objectType=${objectType}
Run Keyword If "${objectSubType}"!="${EMPTY}" Set To Dictionary ${data} objectSubType=${objectSubType}
Run Keyword If "${objectName}"!="${EMPTY}" Set To Dictionary ${data} objectName=${objectName}
${file} Create Dictionary file=${binFile}
${response} BaseMultipartPostRequest ${objectUrl}/batch ${data} ${file} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${rescode}
ExportObject
[Documentation]
... 策略对象导出
... objectType ip,url等
... objectSubType 子类型
... objectIds 1,2,3
... objectName 字符串
[Arguments] ${objectType} ${objectSubType} ${objectIds} ${objectName}
Should Not Be Empty ${objectType}
${params} Create Dictionary objectType=${objectType}
Run Keyword If "${objectSubType}"!="${EMPTY}" Set To Dictionary ${params} objectSubType=${objectSubType}
Run Keyword If "${objectIds}"!="${EMPTY}" Set To Dictionary ${params} objectIds=${objectIds}
Run Keyword If "${objectName}"!="${EMPTY}" Set To Dictionary ${params} objectName=${objectName}
${response} BaseGetRequestReturnBinary ${objectUrl}/batch ${params} ${version}
[Return] ${response}
GetItemNum
[Documentation]
... 获取策略对象单元总数
...
[Arguments] ${objectType} ${objectSubType}
${getTotal} Create Dictionary pageNo=${1} pageSize=${1}
Run Keyword If "${objectType}"=="ip" and "${objectSubType}"=="endpoint" Set To Dictionary ${getTotal} itemType=IP
... ELSE IF "${objectType}"=="ip" and "${objectSubType}"=="geo_location" Set To Dictionary ${getTotal} itemType=geo_location
... ELSE IF "${objectType}"=="ip" and "${objectSubType}"=="as_number" Set To Dictionary ${getTotal} itemType=as_number
... ELSE IF "${objectType}"=="url" Set To Dictionary ${getTotal} itemType=URL
... ELSE Set To Dictionary ${getTotal} itemType=${objectType}
${rescode} ${data} GetObjectItems1 ${getTotal}
${total} Set Variable ${data['total']}
Run Keyword If "${objectType}"=="fqdn_category" Set To Dictionary ${getTotal} isInitialize=1
${rescode} ${data} Run Keyword If "${objectType}"=="fqdn_category" GetObjectItems1 ${getTotal}
... ELSE Set Variable ${rescode} ${data}
${total} Run Keyword If "${objectType}"=="fqdn_category" Evaluate ${total} - ${data['total']}
... ELSE Set Variable ${total}
[Return] ${total}
CountLines
[Documentation]
... 获取文件总行数
[Arguments] ${file}
${count} Set Variable ${0}
${openFile} Evaluate enumerate(open(r"${file}",'r'))
FOR ${line} IN @{openFile}
${val} Run Keyword If "${line[0]}"=="0" Set Variable ${line[1]} ELSE Set Variable ${EMPTY}
${match} Get Regexp Matches ${val} ^-->
${len} Get Length ${match}
${count} Run Keyword If "${line[0]}"=="0" and ${len}>0 Set Variable ${count}
... ELSE Evaluate ${count}+1
END
[Return] ${count}
PolicProtocolFields
[Documentation]
... 策略对象生效协议字段查询
... policyType策略类型
... protocol协议
... objectType对象类型
[Arguments] ${policyType} ${protocol} ${objectType}
${dict} Create Dictionary
Run Keyword If "${policyType}"!="${EMPTY}" Set To Dictionary ${dict} policyType=${policyType}
Run Keyword If "${protocol}"!="${EMPTY}" Set To Dictionary ${dict} protocol=${protocol}
Run Keyword If "${objectType}"!="${EMPTY}" Set To Dictionary ${dict} objectType=${objectType}
${parmStr} Dictionary-To-QueryParams ${dict}
${response} BaseFormRequest ${objectUrl}/protocolFields ${parmStr} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}
ObjectReference
[Documentation]
... 策略对象相关性查询
[Arguments] ${objectId}
${response} BaseFormRequest ${objectUrl}/reference objectId=${objectId} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}
AppIdTreeSearch
[Documentation]
... App ID对象树查询
[Arguments] ${referenceObjectId}
${response} BaseFormRequest ${objectUrl}/appId/tree referenceObjectId=${referenceObjectId} ${version}
${rescode} Set Variable ${response['code']}
Should Be Equal As Strings ${rescode} 200
[Return] ${response['data']}