*** Settings *** Resource ../../03-Variable/BifangApiVariable.txt Resource ../tsg_common/ManagePolicyBody.robot Resource ../tsg_common/ManageObjectBody.robot Resource ../../02-Keyword/tsg_bfapi/policy_file_interface/FunctionalKeywords.robot Resource ../../02-Keyword/tsg_bfapi/policy_object/Object.robot Library REST http://${host}:${port} Library Collections Library RequestsLibrary Resource Common.robot *** Keywords *** AddLocalIPObject #创建对象IP log to_AddLocalIPObject # ${localIP} set variable {"opAction":"add","returnData":1,"objectList":{"objectType":"ip","objectSubType":"endpoint","isValid":1,"isInitialize":0,"isExclusion":0,"objectName":"autotestLocalIPObject_${testClentIP}","objectDesc":"LocalIPObject_${testClentIP}自动化测试机IP","subObjectIds":[],"addItemList":[{"addrType":4,"protocol":0,"direction":0,"isSession":"endpoint","clientIp1":"${testClentIP}","clientIp2":"${testClentIP}","clientIpFormat":"range","clientPortFormat":"range","clientPort1":0,"clientPort2":0,"serverIpFormat":"range","serverIp1":"","serverIp2":"","serverPortFormat":"range","serverPort1":0,"serverPort2":0}],"updateItemList":[],"deleteItemIds":[]}} # ${rescodeip} ${objidip} AddObject ${localIP} # ${localSubIP} set variable {"opAction":"add","returnData":1,"objectList":{"objectType":"subscriberid","objectSubType":"","isValid":1,"isInitialize":0,"isExclusion":0,"objectName":"test57","objectDesc":"${testSubscriberID}","subObjectIds":[],"addItemList":[{"keywordArray":["${testSubscriberID}"],"itemId":"","isHexbin":0}],"updateItemList":[],"deleteItemIds":[]}} # ${rescodesub} ${subiid} AddObject ${localSubIP} # 创建对象-IP # Create Dictionary # ${objectDict} Create Dictionary # ... objectType=ip # ... objectSubType=${Default_ObjectSubType} # ... isInitialize=${Default_IsInitialize} # ... isExclusion=${Default_IsExclusion} # ... objectName=autotest_localIP_${testClentIP} # ... objectDesc=${Default_ObjectDesc} # ... subObjectIds=${Default_SubObjectIds} # ... isValid=${1} # ... addItemList=range|${testClentIP}|${testClentIP}|0/0&${Default_AddItem_ServerIpFormat}|${Default_AddItem_ServerIp1}|${Default_AddItem_ServerIp2}|${Default_AddItem_ServerPort}|${Default_AddItem_IsInitialize}|${Default_AddItem_ItemName}|${Default_AddItem_ItemDesc} # ${rescode} ${objectId} AddObject2 ${1} ${objectDict} # #log ${rescodeip} # log LocalIP:${objectId} Comment 创建IP #object为IP→endpoint时的addItemList单个对象 ${addItemList1} Create Dictionary isSession=endpoint ip=${testClentIP}-${testClentIP} port=0-0 direction=0 protocol=0 isInitialize=0 #可以添加多个 ${addItemLists} Create list ${addItemList1} #objectList对象 ${objectDict} Create Dictionary objectType=ip objectSubType=endpoint isValid=${1} addItemList=${addItemLists} ${rescode} ${objectId1} AddObjects ${1} ${objectDict} SET GLOBAL VARIABLE ${testClentID} ${objectId1} log to_AddLocalSubidObject ${objectDict} Create Dictionary ... objectType=subscriberid ... objectSubType=subscriberid ... isInitialize=${Default_IsInitialize} ... isExclusion=${Default_IsExclusion} ... objectName=autotest_localSubId_${testSubscriberID} ... objectDesc=${Default_ObjectDesc} ... subObjectIds=${Default_SubObjectIds} ... isValid=${1} ... addItemList=${testSubscriberID}|${Default_AddItem_IsHexbin}|${Default_AddItem_IsInitialize}|${Default_AddItem_ItemName}|${Default_AddItem_ItemDesc} ${rescode} ${subiid} AddObject2 ${1} ${objectDict} #log ${subiid} log LocalSubIP:${subiid} SET GLOBAL VARIABLE ${testClentSubID} ${subiid} DelLocalIPObject log to_DelLocalIPObject ${emptyList} Create List ${objectId1} Create List [${testClentID},${testClentSubID}] DeletePolicyAndGroupObject ${emptyList} ${objectId1} SET GLOBAL VARIABLE ${testClentID} ${EMPTY} SET GLOBAL VARIABLE ${testClentSubID} ${EMPTY} #${response} BaseDeleteRequest /${version}/policy/object {"objectIds":[${testClentID}]} #${response_code} Get From Dictionary ${response} code #Should Be Equal As Strings ${response} {'code': 200, 'msg': 'Success', 'success': True} #SET GLOBAL VARIABLE ${testClentID} ${EMPTY} #${response} BaseDeleteRequest /${version}/policy/object {"objectIds":[${testClentSubID}]} #SET GLOBAL VARIABLE ${testClentSubID} ${EMPTY} AddObject [Arguments] ${body} #addIPobject################################################################################# ${response} BasePostRequest /${version}/policy/object body=${body} log 11111111111111${response} ${objectId} Set Variable ${response['data']['objectList'][0]['objectId']} ${rescodeReturn} Set Variable ${response['code']} [Return] ${rescodeReturn} ${objectId} AddObject2 [Arguments] ${returnData} ${objectList} ${body} ObjectParamsOpertion ${returnData} ${objectList} add ${response} BasePostRequest /${version}/policy/object body=${body} ${objectId} Set Variable ${response['data']['objectList'][0]['objectId']} ${rescodeReturn} Set Variable ${response['code']} [Return] ${rescodeReturn} ${objectId} AddWanVpn [Arguments] ${wan_vpnList} ${body} WanVpn ${wan_vpnList} ${response} BasePostRequest /${version}/policy/profile/wannat/vpn/account ${body} log ${response} ${rescodeReturn} Set Variable ${response['code']} [Return] ${rescodeReturn} DeleteWanVpn [Arguments] ${vpnlist} #删除Vpn ${body} Create Dictionary ids=${vpnlist} log 删除vpn ${response} BaseDeleteRequest /${version}/policy/profile/wannat/vpn/account ${body} ${response_code} Get From Dictionary ${response} code Should Be Equal As Strings ${response_code} 200 ${response} Convert to String ${response} log ${response} Add&EditWanIpPood [Arguments] ${must_parameter} ${wan_nat_ip_iplist} ${body} WanNatIpPood ${must_parameter} ${wan_nat_ip_iplist} log ${body} # ${body1} Set Variable {"refuseCode":true,"opAction":"add","returnData":0,"list":[{"ipList":[{"flag":"add","ip":"192.168.50.60","status":1597124967143,"isError":false,"testIp":"192.168.50.60","testIpRelativeLocation":"internal","testResult":[{"serverIp":"192.168.32.92","serverRelativeLocation":"external","serverGeoLocation":"UA","reachable":"pass"},{"serverIp":"192.168.32.91","serverRelativeLocation":"internal","serverGeoLocation":"Hongkang","reachable":"pass"}],"linkInfo":{"todo1":"fake-result","todo2":"test-API-only","todo3":"not-get-from-galaxy"},"relative_location":"internal","reachableCollect":"success"}],"profileName":"12313123123"}]} ${response} run keyword if '${must_parameter}[profileId]'=="" BasePostRequest /${version}/policy/profile/wannat/ippool ${body} ... ELSE BaseEditRequestOK /${version}/policy/profile/wannat/ippool ${body} log ${response} ${response_code} Set Variable ${response['code']} ${response_id} Set Variable ${response['data']['list'][0]['profileId']} # log 11111111111111111111222222222222222 # log ${response_id} Should Be Equal As Strings ${response_code} 200 ${response} Convert to String ${response} log ${response} [Return] ${response_id} DeleteWanIpPood [Arguments] ${vpnlist} #删除Vpn ${body} Create Dictionary profileIds=${vpnlist} log 删除vpn ${response} BaseDeleteRequest /${version}/policy/profile/wannat/ippool ${body} ${response_code} Get From Dictionary ${response} code Should Be Equal As Strings ${response_code} 200 ${response} Convert to String ${response} log ${response} Add&Edit_PacketCapture [Arguments] ${PacketCapture_data} ${location} ${isp} ${body} PacketCapture ${PacketCapture_data} ${location} ${isp} log ${body} # ${body1} Set Variable {"refuseCode":true,"opAction":"add","returnData":0,"list":[{"ipList":[{"flag":"add","ip":"192.168.50.60","status":1597124967143,"isError":false,"testIp":"192.168.50.60","testIpRelativeLocation":"internal","testResult":[{"serverIp":"192.168.32.92","serverRelativeLocation":"external","serverGeoLocation":"UA","reachable":"pass"},{"serverIp":"192.168.32.91","serverRelativeLocation":"internal","serverGeoLocation":"Hongkang","reachable":"pass"}],"linkInfo":{"todo1":"fake-result","todo2":"test-API-only","todo3":"not-get-from-galaxy"},"relative_location":"internal","reachableCollect":"success"}],"profileName":"12313123123"}]} ${response} run keyword if '${PacketCapture_data}[policyId]'=="" BasePostRequest /${version}/troubleshooting/packetcapture/policy ${body} ... ELSE BaseEditRequestOK /${version}/troubleshooting/packetcapture/policy ${body} log ${response} ${response_code} Set Variable ${response['code']} ${response_id} Set Variable ${response['data']['packetCaptureList'][0]['policyId']} # log 11111111111111111111222222222222222 # log ${response_id} Should Be Equal As Strings ${response_code} 200 ${response} Convert to String ${response} log ${response} [Return] ${response_id} DeletePacketCapture [Arguments] ${vpnlist} #删除Vpn ${body} Create Dictionary profileIds=${vpnlist} log 删除vpn ${response} BaseDeleteRequest /${version}/troubleshooting/packetcapture/policy ${body} ${response_code} Get From Dictionary ${response} code Should Be Equal As Strings ${response_code} 200 ${response} Convert to String ${response} log ${response} EditObject [Arguments] ${objectList} ${opAction} ${body} ObjectParamsOpertion ${0} ${objectList} ${opAction} ${response} BaseEditRequest /${version}/policy/object ${body} ${rescodeReturn} Set Variable ${response['code']} [Return] ${rescodeReturn} DeleteObjectbak [Arguments] ${objectids} ${body} String {"objectIds":[${objectids}]} DELETE /policy/object body=${body} headers=${headers} Object response body log DeleteObject log dxytestOUtputstart Output response body log dxytestOUtputstart ${rescode} Integer $.code ${rescodeReturn} Get From List ${rescode} 0 [Return] ${rescodeReturn} AddPolicy [Arguments] ${body} # ${response} BasePostRequest /${version}/policy/compile body=${body} ${response} BasePostRequest /${version2}/policy/compile body=${body} #log ${response} ${policyId} Set Variable ${response['data']['policyList'][0]['policyId']} ${rescode} Set Variable ${response['code']} [Return] ${rescode} ${policyId} QueryPolicy [Arguments] ${body} ${response} BaseGetRequest /${version}/policy/compile body=${body} #log ${response} ${rescode} Set Variable ${response['code']} [Return] ${rescode} ${response} QueryObject #hbn [Arguments] ${body} ${response} BaseGetRequest /${version}/policy/object body=${body} log ${response} ${rescode} Set Variable ${response['code']} [Return] ${rescode} ${response} AddPolicy2 [Arguments] ${returnData} ${policyList} ${body} PolicyParamsOpertion ${returnData} ${policyList} add ${response} BasePostRequest /${version}/policy/compile body=${body} ${policyId} Set Variable ${response['data']['policyList'][0]['policyId']} ${rescode} Set Variable ${response['code']} [Return] ${rescode} ${policyId} AddPolicy2006 [Arguments] ${returnData} ${policyList} ${objectDict} Jsoneditmanu ${policyall} ${policyList} #${body} Convert To String ${objectDict} ${body} json.Dumps ${objectDict} #${body} PolicyParamsOpertion ${returnData} ${policyList} add ${response} BasePostRequest /${version}/policy/compile body=${body} ${policyId} Set Variable ${response['data']['policyList'][0]['policyId']} ${rescode} Set Variable ${response['code']} [Return] ${rescode} ${policyId} EditPolicy [Arguments] ${policyList} ${opAction} #add:表示新增 #update:表示修改策略内容,包括策略名称,策略动作,策略动作参数,引用的策略文件,引用的策略对象等有修改时 #disable:表示停用,只修改isValid属性为0 #enable:表示启用,只修改isValid属性为1 ${body} PolicyParamsOpertion ${0} ${policyList} ${opAction} ${response} BaseEditRequest /${version}/policy/compile ${body} ${rescode} Set Variable ${response['code']} [Return] ${rescode} ${response} DeletePolicybak [Arguments] ${policyids} ${body} String {"policyType":"tsg_security","policyIds":[${policyids}]} DELETE /${version}/policy/compile body=${body} headers=${headers} Object response body log DeletePolicy Output response body ${rescode} Integer $.code ${rescodeReturn} Get From List ${rescode} 0 [Return] ${rescodeReturn} DeletePolicy [Arguments] ${body} #删除策略 log toDeletePolicy_DeletePolicyDeletePolicy ${response} BaseDeleteRequest /${version}/policy/compile ${body} #{"policyType":"tsg_security","policyIds":[${policyids}]} ${response_code} Get From Dictionary ${response} code Should Be Equal As Strings ${response_code} 200 ${response} Convert to String ${response} log ${response} #Should Be Equal As Strings ${response} {'code': 200, 'msg': 'Success', 'success': True} DeleteObject [Arguments] ${objectids} #删除对象 log todeleteobj ${response} BaseDeleteRequest /${version}/policy/object {"objectIds":[${objectids}]} ${response_code} Get From Dictionary ${response} code #log aaaaaaaaaa:${response_code} Should Be Equal As Strings ${response_code} 200 #Integer ${response_code} 200 ${response} Convert to String ${response} log ${response} #Should Be Equal As Strings ${response} {'code': 200, 'msg': 'Success', 'success': True} DeleteProfile [Arguments] ${typeUrl} ${profileIds} #删除对象 log DeleteProfile ${response} BaseDeleteRequest /${version}/policy/profile/${typeUrl} {"profileIds":[${profileIds}]} ${response_code} Get From Dictionary ${response} code #log aaaaaaaaaa:${response_code} Should Be Equal As Strings ${response_code} 200 #Integer ${response_code} 200 ${response} Convert to String ${response} log ${response} #Should Be Equal As Strings ${response} {'code': 200, 'msg': 'Success', 'success': True} # DeleteProfile_defeated # [Arguments] ${typeUrl} ${profileIds} # #删除对象 # log DeleteProfile # ${response} BaseDeleteRequest /${version}/policy/profile/${typeUrl} {"profileIds":[${profileIds}]} # ${response_code} Get From Dictionary ${response} code # #log aaaaaaaaaa:${response_code} # Should Be Equal As Strings ${response_code} 40090030 # #Integer ${response_code} 200 # ${response} Convert to String ${response} # log ${response} # #Should Be Equal As Strings ${response} {'code': 200, 'msg': 'Success', 'success': True} DeleteProfiles [Arguments] ${profiles} FOR ${profile} IN @{profiles} Run Keyword If "${profile}"!="" and ${profile}!="${EMPTY}" DeleteProfile ${profile}[typeUrl] ${profile}[profileIds] END DeletePolicyAndObject [Arguments] ${policyids} ${objectids} #删除和对象 #2020-09-01修改,引用DeletePolicyAndGroupObject,避免分别维护并兼容之前用例 ${objectId1} Create List [${objectids}] DeletePolicyAndGroupObject ${policyIds} ${objectId1} #删除策略 #log toDeletePolicy_DeletePolicyAndObject #${listlenth}= Get Length ${policyids} #FOR ${var} IN RANGE ${listlenth} #log dxytest111111 #log ${var} #DeletePolicy ${policyids}[${var}] #Should Contain ${commandreturn} ${ca} #END #删除对象 #log todeleteobj_DeletePolicyAndObject #Run Keyword If "${objectids}"=="${EMPTY}" log no obj to del # ... ELSE DeleteObject ${objectids} DeletePolicyAndGroupObject [Arguments] ${policyids} ${objectids} #引用此关键字,${objectids}参数必须是双层列表,eg:['[1]','[2,3]','[4,5,6,7]'] #删除和对象 #删除策略 log toDeletePolicy_DeletePolicyAndObject ${listlenth}= Get Length ${policyids} Run Keyword If "${listlenth}"=="0" log no Policys to del ... ELSE DeletePolicys ${policyids} #删除对象 log todeleteobj_DeletePolicyAndObject log ${objectids} Run Keyword If "${objectids}"=="${EMPTY}" log no Objects to del ... ELSE IF ${objectids}==['[]'] log no Objects to del ... ELSE DeleteGroupObjects ${objectids} DeletePolicys [Arguments] ${policyids} ${listlenth}= Get Length ${policyids} FOR ${var} IN RANGE ${listlenth} log ${var} DeletePolicy ${policyids}[${var}] END DeleteGroupObjects [Arguments] ${objectids} FOR ${var} IN @{objectids} log ${var} DeleteGroupObject ${var} END DeleteGroupObject [Arguments] ${objectids} #删除对象 log todeleteobj ${response} BaseDeleteRequest /${version}/policy/object {"objectIds":${objectids}} ${response_code} Get From Dictionary ${response} code Should Be Equal As Strings ${response_code} 200 ${response} Convert to String ${response} log ${response} DeletePolicyAndObjectAndProfile [Arguments] ${policyids} ${objectids} ${profiles} DeletePolicyAndObject ${policyids} ${objectids} DeleteProfiles ${profiles} DeleteAfterCase [Arguments] ${policyids} ${objectids} Run Keyword If '${testPart}'=='all' or '${testPart}'=='3' DeletePolicyAndObject ${policyids} ${objectids} DeletePolicyAndObject1 [Arguments] ${policyids} ${objectids} ${url} ${profiledId} #删除策略 log toDeletePolicy_DeletePolicyAndObject ${listlenth}= Get Length ${policyids} FOR ${var} IN RANGE ${listlenth} log ${var} DeletePolicy ${policyids}[${var}] END #删除对象 log todeleteobj_DeletePolicyAndObject Run Keyword If "${objectids}"=="${EMPTY}" log no obj to del ... ELSE DeleteObject ${objectids} #删除文件 log todeleteobj_DeletePolicyAndObject Run Keyword If "${profiledId}"=="${EMPTY}" log no file to del ... ELSE DeletePolicyFile1 ${url} ${profiledId} DeletePolicyAndObjectAndVpn [Arguments] ${policyids} ${objectids} ${wan_vpn} #删除策略 log toDeletePolicy_DeletePolicyAndObject ${listlenth}= Get Length ${policyids} FOR ${var} IN RANGE ${listlenth} log ${var} DeletePolicy ${policyids}[${var}] END #删除对象 log todeleteobj_DeletePolicyAndObject Run Keyword If "${objectids}"=="${EMPTY}" log no obj to del ... ELSE DeleteObject ${objectids} #删除文件 log todeleteobj_DeletePolicyAndObject Run Keyword If "${profiledId}"=="${EMPTY}" log no file to del ... ELSE DeletePolicyFile1 ${url} ${profiledId} # 删除VPN log todelete_wan_vpn Run Keyword If "${wan_vpn}"=="${EMPTY}" log no vpn to del ... ELSE DeleteWanVpn ${wan_vpn} DeletePolicyAndObjectAndIPpoor [Arguments] ${policyids} ${objectids} ${wan_ippoor} #删除策略 log toDeletePolicy_DeletePolicyAndObject ${listlenth}= Get Length ${policyids} FOR ${var} IN RANGE ${listlenth} log ${var} DeletePolicy ${policyids}[${var}] END #删除对象 log todeleteobj_DeletePolicyAndObject Run Keyword If "${objectids}"=="${EMPTY}" log no obj to del ... ELSE DeleteObject ${objectids} #删除文件 log todeleteobj_DeletePolicyAndObject Run Keyword If "${profiledId}"=="${EMPTY}" log no file to del ... ELSE DeletePolicyFile1 ${url} ${profiledId} # 删除VPN log todelete_wan_vpn Run Keyword If "${wan_ippoor}"=="${EMPTY}" log no vpn to del ... ELSE DeleteWanIpPood ${wan_ippoor}