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/ProcessObjectBody.robot

318 lines
22 KiB
Plaintext
Raw Normal View History

*** Settings ***
Library json
Library Collections
Resource ../../../03-Variable/BifangApiVariable.txt
Resource ../../../03-Variable/PolicyObjectDefault.txt
Resource ../../tsg_common/ManageObjectBody.robot
*** Variables ***
*** Keywords ***
ObjectListOperation
[Documentation]
... 描述入口opAction参数可为'add','update','disable','enable'
... 参数returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。
... objectList: 必传,字典类型。字典内可选参数信息:
... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
... 多个对象处理
[Arguments] ${returnData} ${objectList} ${opAction}
Log Call ObjectListOperation
${objectListJson} Set Variable [
FOR ${object} IN @{objectList}
${json} ObjectOrganize ${object} ${opAction}
${objectListJson} Set Variable ${objectListJson}${json},
END
${objectListJson}= Replace String Using Regexp ${objectListJson} ,$ ]
# 转为json结构并返回
${dict} Create Dictionary opAction=${opAction} returnData=${returnData} objectList=replace:objectList
${bodyJson} json.Dumps ${dict} ensure_ascii=False
${json} Replace String ${bodyJson} "replace:objectList" ${objectListJson}
Log Object_Request_Body-${json}
[Return] ${json}
ObjectOperation
[Documentation]
... 描述入口opAction参数可为'add','update','disable','enable'
... 参数returnData: 必传,是否返回请求数据。可选${0}(不返回)/${1}(返回)。
... object: 必传,字典类型。字典内可选参数信息:
... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
... 单个策略处理
[Arguments] ${returnData} ${object} ${opAction}
Log Call ObjectOperation
${json} ObjectOrganize ${object} ${opAction}
# 转为json结构并返回
${dict} Create Dictionary opAction=${opAction} returnData=${returnData} objectList=replace:objectList
${bodyJson} json.Dumps ${dict} ensure_ascii=False
${json} Replace String ${bodyJson} "replace:objectList" ${json}
Log Object_Request_Body-${json}
[Return] ${json}
2020-07-23 16:21:20 +08:00
listorone
[Arguments] ${object}
${addItemList} Evaluate str('addItemList'in${object}.keys())
log ${addItemList}
${subObjectIds} Evaluate str('subObjectIds'in${object}.keys())
log ${subObjectIds}
${objectparm} set variable ${addItemList} ${subObjectIds}
should contain x times ${objectparm} True 1
# Should Not Be Empty ${object}[addItemList] or Should Not Be Empty ${object}[subObjectIds]
ObjectOrganize
[Documentation]
... 描述入口opAction参数可为'add','update','disable','enable'
... object: 必传,字典类型。字典内可选参数信息:
... 其它参数默认值见../../03-Variable/PolicyObjectDefault.txt
... 单个策略转换为json
[Arguments] ${object} ${opAction}
Log Call ObjectOrganize
${emptyList} Create List
${returnDict} Create Dictionary
# 断言必传参数
# Should Not Be Empty ${object}[objectType]
# Set To Dictionary ${returnDict} objectType=${object}[objectType]
#新增时addItemList不能为空
2020-07-23 16:21:20 +08:00
Run Keyword If "${opAction}"=="add" listorone ${object}
Run Keyword If "${opAction}"=="update" Should Not Be Empty ${object}[objectId]
Run Keyword If "${opAction}"=="enable" Should Not Be Empty ${object}[objectId]
Run Keyword If "${opAction}"=="disable" Should Not Be Empty ${object}[objectId]
${return} ${objectId} Run Keyword And Ignore Error Get From Dictionary ${object} objectId
Run Keyword If "${return}"=="FAIL" or "${objectId}"=="${EMPTY}" Set To Dictionary ${returnDict} objectId=${EMPTY}
... ELSE Set To Dictionary ${returnDict} objectId=${objectId}
${return} ${objectType} Run Keyword And Ignore Error Get From Dictionary ${object} objectType
${objectTypeV} Run Keyword If "${return}"!="FAIL" and "${objectType}"!="${EMPTY}" Evaluate '${objectType}'.lower()
... ELSE Evaluate '${Default_ObjectType}'.lower()
Set To Dictionary ${returnDict} objectType=${objectTypeV}
#enable disable直接返回json
Run Keyword And Return If "${opAction}"=="enable" or "${opAction}"=="disable" ManageEnableAndDisable ${object} ${returnDict} ${opAction}
# 取可选参数,为传入设置默认值
Set To Dictionary ${returnDict} objectType=${objectTypeV}
${return} ${objectSubType} Run Keyword And Ignore Error Get From Dictionary ${object} objectSubType
Run Keyword If "${return}"!="FAIL" and "${objectSubType}"!="${EMPTY}" Set To Dictionary ${returnDict} objectSubType=${objectSubType}
... ELSE Set To Dictionary ${returnDict} objectSubType=${Default_ObjectSubType}
${return} ${isValid} Run Keyword And Ignore Error Get From Dictionary ${object} isValid
Run Keyword If "${return}"=="FAIL" or "${isValid}"=="${EMPTY}" Set To Dictionary ${returnDict} isValid=${Default_IsValid}
... ELSE Set To Dictionary ${returnDict} isValid=${isValid}
${return} ${isInitialize} Run Keyword And Ignore Error Get From Dictionary ${object} isInitialize
Run Keyword If "${return}"=="FAIL" or "${isInitialize}"=="${EMPTY}" Set To Dictionary ${returnDict} isInitialize=${Default_IsInitialize}
... ELSE Set To Dictionary ${returnDict} isInitialize=${isInitialize}
${return} ${isExclusion} Run Keyword And Ignore Error Get From Dictionary ${object} isExclusion
Run Keyword If "${return}"=="FAIL" or "${isExclusion}"=="${EMPTY}" Set To Dictionary ${returnDict} isExclusion=${Default_IsExclusion}
... ELSE Set To Dictionary ${returnDict} isExclusion=${isExclusion}
${return} ${objectName} Run Keyword And Ignore Error Get From Dictionary ${object} objectName
Run Keyword If "${return}"=="FAIL" or "${objectName}"=="${EMPTY}" Set To Dictionary ${returnDict} objectName=${Default_ObjectName}
... ELSE Set To Dictionary ${returnDict} objectName=${objectName}
${return} ${objectDesc} Run Keyword And Ignore Error Get From Dictionary ${object} objectDesc
Run Keyword If "${return}"!="FAIL" and "${objectDesc}"!="${EMPTY}" Set To Dictionary ${returnDict} objectDesc=${objectDesc}
... ELSE Set To Dictionary ${returnDict} objectDesc=${Default_ObjectDesc}
${return} ${subObjectIds} Run Keyword And Ignore Error Get From Dictionary ${object} subObjectIds
2020-07-23 16:21:20 +08:00
Run Keyword If "${return}"!="FAIL" and "${subObjectIds}"!="${EMPTY}" and "${subObjectIds}"!="${None}" Set To Dictionary ${returnDict} subObjectIds=${subObjectIds}
... ELSE Set Variable ${emptyList}
${return} ${iconColor} Run Keyword And Ignore Error Set Variable ${object['iconColor']}
Run Keyword If "${return}"!="FAIL" Set To Dictionary ${returnDict} iconColor=${iconColor}
2020-07-23 16:21:20 +08:00
#补充ip learning对象
${return} ${fromFqdns} Run Keyword And Ignore Error Get From Dictionary ${object} fromFqdns
Run Keyword If "${return}"!="FAIL" Set To Dictionary ${returnDict} fromFqdns=${fromFqdns}
#... ELSE Set To Dictionary ${returnDict} fromFqdns=${emptyList}
log ${fromFqdns}
${return} ${fromProtocol} Run Keyword And Ignore Error Get From Dictionary ${object} fromProtocol
Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} fromProtocol=${fromProtocol}
#... ELSE Set To Dictionary ${returnDict} fromProtocol=${Default_fromProtocol}
${return} ${learningDepth} Run Keyword And Ignore Error Get From Dictionary ${object} learningDepth
Run Keyword If "${return}"!="FAIL" and "${learningDepth}"!="${EMPTY}" Set To Dictionary ${returnDict} learningDepth=${learningDepth}
#... ELSE Set To Dictionary ${returnDict} learningDepth=${Default_learningDepth}
${return} ${agingTime} Run Keyword And Ignore Error Get From Dictionary ${object} agingTime
Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} agingTime=${agingTime}
#... ELSE Set To Dictionary ${returnDict} agingTime=${Default_agingTime}
${return} ${voteClientNum} Run Keyword And Ignore Error Get From Dictionary ${object} voteClientNum
Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} voteClientNum=${voteClientNum}
#... ELSE Set To Dictionary ${returnDict} voteClientNum=${Default_voteClientNum}
${return} ${learnedIpLimit} Run Keyword And Ignore Error Get From Dictionary ${object} learnedIpLimit
Run Keyword If "${return}"!="FAIL" and "${fromProtocol}"!="${EMPTY}" Set To Dictionary ${returnDict} learnedIpLimit=${learnedIpLimit}
#... ELSE Set To Dictionary ${returnDict} learnedIpLimit=${Default_learnedIpLimit}
# 处理AddItemList
${return} ${addItemList} Run Keyword And Ignore Error Get From Dictionary ${object} addItemList
Run Keyword If "${return}"!="FAIL" and "${addItemList}"!="${EMPTY}" ManageAddItemListNew ${addItemList} ${returnDict} ${objectTypeV} ${objectSubType}
# 处理UpdateItemList
${return} ${updateItemList} Run Keyword And Ignore Error Get From Dictionary ${object} updateItemList
Run Keyword If "${opAction}"=="update" and "${return}"!="FAIL" and "${updateItemList}"!="${EMPTY}" ManageUpdateItemList ${updateItemList} ${returnDict} ${objectTypeV} ${objectSubType}
# 处理deleteItemIds
${return} ${deleteItemIds} Run Keyword And Ignore Error Get From Dictionary ${object} deleteItemIds
Run Keyword If "${opAction}"=="update" and "${return}"!="FAIL" and "${deleteItemIds}"!="${EMPTY}" ManageDeleteItemIds ${deleteItemIds} ${returnDict}
# 转为json结构并返回
${json} json.Dumps ${returnDict} ensure_ascii=False
Log Object-${json}
[Return] ${json}
ManageEnableAndDisable
[Documentation]
... 启用与禁用时调用
[Arguments] ${object} ${returnDict} ${opAction}
Run Keyword If "${opAction}"=="enable" Set To Dictionary ${returnDict} isValid=1
Run Keyword If "${opAction}"=="disable" Set To Dictionary ${returnDict} isValid=0
${json} json.Dumps ${returnDict} ensure_ascii=False
Log Object-${json}
[Return] ${json}
ManageAddItemListNew
# 处理addItemList数组
[Arguments] ${addItemList} ${returnDict} ${type} ${subType}
Log Call ManageAddItemListNew
${itemList} Create List
FOR ${item} IN @{addItemList}
${itemNew} Run Keyword If '${type}'=='ip' ManageIpItem ${item} ${subType} add
... ELSE IF '${type}'=='url' or '${type}'=='fqdn' or '${type}'=='keywords' or '${type}'=='subscriberid' or '${type}'=='fqdn_category' or '${type}'=='account' or '${type}'=='app_id'
... ManageStrItem ${item} ${type} add
... ELSE IF '${type}'=='file_type' ManageFileItem ${item} ${type} add
... ELSE IF '${type}'=='http_signature' ManageExtensionStrItem ${item} ${type} add
... ELSE IF '${type}'=='file_size' or '${type}'=='file_integrity_rate' ManageNumberItem ${item} ${type} add
... ELSE Fail
Append To List ${itemList} ${itemNew}
END
Set To Dictionary ${returnDict} addItemList=${itemList}
ManageUpdateItemList
[Documentation]
... 处理updateItemList
[Arguments] ${updateItemList} ${returnDict} ${type} ${subType}
${itemList} Create List
FOR ${item} IN @{updateItemList}
${itemId} Get From Dictionary ${item} itemId
${itemNew} Run Keyword If '${type}'=='ip' ManageIpItem ${item} ${subType} update
... ELSE IF '${type}'=='url' or '${type}'=='fqdn' or '${type}'=='keywords' or '${type}'=='subscriberid' or '${type}'=='fqdn_category' or '${type}'=='account' or '${type}'=='app_id'
... ManageStrItem ${item} ${type} update
... ELSE IF '${type}'=='file_type' ManageFileItem ${item} ${type} update
... ELSE IF '${type}'=='http_signature' ManageExtensionStrItem ${item} ${type} update
... ELSE IF '${type}'=='file_size' or '${type}'=='file_integrity_rate' ManageNumberItem ${item} ${type} update
... ELSE Fail
Set To Dictionary ${itemNew} itemId=${itemId}
#由于接口更新时是否内置字段会导致40014001策略对象单元不可改是否为内置isInitialize参数状态这里去掉是否内置字段
Remove From Dictionary ${itemNew} isInitialize
Append To List ${itemList} ${itemNew}
END
Set To Dictionary ${returnDict} updateItemList=${itemList}
ManageIpItem
[Documentation]
... ip item处理
[Arguments] ${item} ${subType} ${action}
Log Call ManageIpItem
${return} ${isSession} Run Keyword And Ignore Error Get From Dictionary ${item} isSession
${isSession} Run Keyword If "${return}"!="FAIL" Set Variable ${isSession} ELSE Set Variable ${EMPTY}
Run Keyword If "${action}"=="add" Should Not Be Empty ${isSession}
${return} ${ip} Run Keyword And Ignore Error Get From Dictionary ${item} ip
${ip} Run Keyword If "${return}"!="FAIL" Set Variable ${ip} ELSE Set Variable ${EMPTY}
Run Keyword If "${action}"=="add" Should Not Be Empty ${ip}
${return} ${port} Run Keyword And Ignore Error Get From Dictionary ${item} port
Run Keyword If "${action}"=="add" Should Not Be Empty ${port}
2021-01-26 11:22:24 +08:00
#Run Keyword If "${action}"=="add" Dictionary Should Contain Key ${item} direction
#${return} ${direction} Run Keyword And Ignore Error Get From Dictionary ${item} direction
#${direction} Run Keyword If "${return}"!="FAIL" Set Variable ${direction} ELSE Set Variable ${EMPTY}
#Run Keyword If "${action}"=="add" Dictionary Should Contain Key ${item} protocol
${return} ${protocol} Run Keyword And Ignore Error Get From Dictionary ${item} protocol
${protocol} Run Keyword If "${return}"!="FAIL" Set Variable ${protocol} ELSE Set Variable ${EMPTY}
${return} ${isInitialize} Run Keyword And Ignore Error Set Variable ${item['isInitialize']}
${isInitialize} Run Keyword If "${return}"!="FAIL" Set Variable ${isInitialize}
... ELSE Set Variable ${EMPTY}
${return} ${itemName} Run Keyword And Ignore Error Set Variable ${item['itemName']}
${itemName} Run Keyword If "${return}"!="FAIL" Set Variable ${itemName}
... ELSE Set Variable ${EMPTY}
${return} ${itemDesc} Run Keyword And Ignore Error Set Variable ${item['itemDesc']}
${itemDesc} Run Keyword If "${return}"!="FAIL" Set Variable ${itemDesc}
... ELSE Set Variable ${EMPTY}
${itemNew} Create Dictionary
Run Keyword If "${isSession}"!="${EMPTY}" Set To Dictionary ${itemNew} isSession=${isSession}
Run Keyword If "${ip}"!="${EMPTY}" Set To Dictionary ${itemNew} ip=${ip}
Run Keyword If "${port}"!="${EMPTY}" Set To Dictionary ${itemNew} port=${port}
2021-01-26 11:22:24 +08:00
#Run Keyword If "${direction}"!="${EMPTY}" Set To Dictionary ${itemNew} direction=${direction}
Run Keyword If "${protocol}"!="${EMPTY}" Set To Dictionary ${itemNew} protocol=${protocol}
Run Keyword If "${isInitialize}"!="${EMPTY}" Set To Dictionary ${itemNew} isInitialize=${isInitialize}
Run Keyword If "${itemName}"!="${EMPTY}" Set To Dictionary ${itemNew} itemName=${itemName}
Run Keyword If "${itemDesc}"!="${EMPTY}" Set To Dictionary ${itemNew} itemDesc=${itemDesc}
[Return] ${itemNew}
ManageStrItem
[Documentation]
... 字符串item处理
[Arguments] ${item} ${type} ${action}
Log Call ManageStrItem
${return} ${keywordArray} Run Keyword And Ignore Error Set Variable ${item['keywordArray']}
${keywordArray} Run Keyword If "${return}"!="FAIL" Set Variable ${keywordArray} ELSE Set Variable ${EMPTY}
Run Keyword If "${action}"=="add" Should Not Be Empty ${keywordArray}
${array} Evaluate re.split('[,]', '${keywordArray}') re
Run Keyword If "${action}"=="add" Dictionary Should Contain Key ${item} isHexbin
${return} ${isHexbin} Run Keyword And Ignore Error Get From Dictionary ${item} isHexbin
${isHexbin} Run Keyword If "${return}"!="FAIL" Set Variable ${isHexbin}
... ELSE Set Variable ${EMPTY}
${return} ${isInitialize} Run Keyword And Ignore Error Set Variable ${item['isInitialize']}
${isInitialize} Run Keyword If "${return}"!="FAIL" Set Variable ${isInitialize}
... ELSE Set Variable ${EMPTY}
${return} ${itemName} Run Keyword And Ignore Error Set Variable ${item['itemName']}
${itemName} Run Keyword If "${return}"!="FAIL" Set Variable ${itemName}
... ELSE Set Variable ${EMPTY}
${return} ${itemDesc} Run Keyword And Ignore Error Set Variable ${item['itemDesc']}
${itemDesc} Run Keyword If "${return}"!="FAIL" Set Variable ${itemDesc}
... ELSE Set Variable ${EMPTY}
${itemNew} Create Dictionary
Run Keyword If "${keywordArray}"!="${EMPTY}" Set To Dictionary ${itemNew} keywordArray=${array}
Run Keyword If "${isHexbin}"!="${EMPTY}" Set To Dictionary ${itemNew} isHexbin=${isHexbin}
Run Keyword If "${isInitialize}"!="${EMPTY}" Set To Dictionary ${itemNew} isInitialize=${isInitialize}
Run Keyword If "${itemName}"!="${EMPTY}" Set To Dictionary ${itemNew} itemName=${itemName}
Run Keyword If "${itemDesc}"!="${EMPTY}" Set To Dictionary ${itemNew} itemDesc=${itemDesc}
[Return] ${itemNew}
ManageFileItem
[Documentation]
... 接口未说明,待接口说明字段类型之后再完善
[Arguments] ${item} ${type} ${action}
Log Call ManageFileItem
[Return] ${item}
ManageExtensionStrItem
[Documentation]
... http_signature参数说明
[Arguments] ${item} ${type} ${action}
Log Call ManageExtensionStrItem
${return} ${district} Run Keyword And Ignore Error Get From Dictionary ${item} district
${district} Run Keyword If "${return}"!="FAIL" Set Variable ${district} ELSE Set Variable ${EMPTY}
Run Keyword If "${action}"=="add" Should Not Be Empty ${district}
${itemNew} ManageStrItem ${item} ${type} ${action}
Run Keyword If "${district}"!="${EMPTY}" Set To Dictionary ${itemNew} district=${district}
[Return] ${itemNew}
ManageNumberItem
[Documentation]
... 接口未说明,待接口说明字段类型之后再完善
[Arguments] ${item} ${type} ${action}
Log Call ManageNumberItem
[Return] ${item}
ManageDeleteItemIds
[Documentation]
... 处理deleteItemIds
... ${1},${2},${3} -> [1,2,3]
[Arguments] ${deleteItemIds} ${returnDict}
${list} Evaluate re.split('[,]', '${deleteItemIds}') re
${list1} Create List
FOR ${var} IN @{list}
${var} Run Keyword If '${var}'.isdigit() Evaluate int('${var}')
... ELSE Set Variable ${var}
Append To List ${list1} ${var}
END
Set To Dictionary ${returnDict} deleteItemIds=${list1}
Get-ObjectIds
[Documentation]
... 获取结果中的对象ID
[Arguments] ${value}
Log Call Get-ObjectIds
${objectIds} Create List
${objectIdsTemp} Set Variable ${EMPTY}
${return} ${data} Run Keyword And Ignore Error Get From Dictionary ${value} data
Return From Keyword If "${return}"=="FAIL" ${objectIdsTemp}
FOR ${object} IN @{value['data']['objectList']}
Append To List ${objectIds} ${object['objectId']}
END
${json} json.Dumps ${objectIds} ensure_ascii=False
${json} Remove String ${json} [
${json} Remove String ${json} ]
[Return] ${json}