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/Policy.robot
2020-06-16 19:40:59 +08:00

91 lines
5.4 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 ProcessPolicyBody.robot
Library Collections
Resource ../Common.robot
*** Variables ***
${url} /policy/compile
*** Keywords ***
#拼接字典类型数据为get请求的字符串
Dictionary-To-QueryParams
[Documentation]
... 接收get参数字典转换为请求字符串
[Arguments] ${params}
${paramsString} = Set Variable ${EMPTY}
FOR ${key} IN @{params}
${value} = Get From Dictionary ${params} ${key}
${paramStr} = Catenate SEPARATOR=\= ${key} ${value}
${len} = Get Length ${paramsString}
${paramsString} = Run Keyword If ${len} != 0 Catenate SEPARATOR=& ${paramsString} ${paramStr}
... ELSE Set Variable ${paramStr}
END
Log To Console ${paramsString}
[Return] ${paramsString}
#get查询策略传入字典对象该方法将字典对象自动拼接成get请求查询条件
QueryPolicies
[Documentation]
... 查询策略params为参数字典version为接口版本号
[Arguments] ${params} ${version}
Log To Console Call QueryPolicies
Dictionary Should Contain Key ${params} policyType
${paramsStr} Dictionary-To-QueryParams ${params}
${response} BaseGetRequestForV2 ${url} ${paramsStr} ${version}
${rescode} Set Variable ${response['code']}
[Return] ${rescode} ${response}
AddPolicies
[Documentation]
... 新增策略
... returnData是否返回数据这里需要设置为1
... policyList策略列表支持dict与list两种形式
... version接口版本号
... 支持v1版本接口与v2版本接口
... v1版本特殊参数说明
... referenceObject=${265}|TSG_FIELD_HTTP_HOST,${266}|TSG_FIELD_SSL_SNI&TSG_FIELD_SSL_SAN
... 为字符串类型,每条引用的策略对象信息以','分隔
... [objectId]|[protocolFileds],... 多个protocolFileds用'&'连接
... appObjectIdArray==${2},${3}
... 为字符串类型,以','分隔
... v2版本特殊参数说明
... v2版本中无referenceObject取而代之的是sourcedestinationfilterList
... source= ${265}|TSG_FIELD_HTTP_HOST,${266}|TSG_FIELD_SSL_SNI&TSG_FIELD_SSL_SAN
... destination= ${265}|TSG_FIELD_HTTP_HOST,${266}|TSG_FIELD_SSL_SNI&TSG_FIELD_SSL_SAN
... filterList= ${265}|${257}:TSG_FIELD_HTTP_HOST,${266}|${299}:TSG_FIELD_SSL_SNI&TSG_FIELD_SSL_SAN
... filterList由多个数字用|分隔加上对上对应的protocolFiled,
... 一个filter中的protocolFiled是确定的一个protocolFiled对应多个objectId
... appIdObjects==${2},${3}
[Arguments] ${returnData} ${policyList} ${version}
Log To Console Call AddPolicies
${returnData}= Run Keyword If '${returnData}' == '${EMPTY}' Set Variable 1
... ELSE Set Variable ${returnData}
#控制台打印参数
#Log To Console ${policyList}
#必选参数判定
Should Not Be Empty ${policyList}
${dictType} = Evaluate type(${policyList})
${body} Run Keyword If "${dictType}" == "<class 'list'>" WxPolicyListOperation ${returnData} ${policyList} add ${version}
... ELSE IF "${dictType}" == "<class 'dict'>" WxPolicyOperation ${returnData} ${policyList} add ${version}
... ELSE Set Variable ${EMPTY}
#${body} Set Variable {"opAction":"add","policyList":{"policyName":"wx-test","policyType":"tsg_security","action":"deny","userTags":"","doBlacklist":0,"doLog":1,"policyDesc":"","effectiveRange":{"tag_sets":[[]]},"userRegion":{"protocol":"SSL","method":"drop"},"source":[{"objectId":3101,"protocolField":"TSG_SECURITY_SOURCE_ADDR"}],"destination":[],"filterList":[{"filter":[{"objectId":3404,"protocolField":"TSG_FIELD_SSL_CN"}]}],"appIdObjects":[3],"isValid":0,"scheduleId":[]}}
${response} BasePostRequestForV2 ${url} ${body} ${version}
${policyIds} Run Keyword If "${returnData}" == "1" WxGet-PolicyIds ${response}
... ELSE Create List
${rescode} Set Variable ${response['code']}
[Return] ${rescode} ${policyIds}
UpdatePolicies
[Arguments] ${returnData} ${policyList} ${version} ${opAction}
Log To Console Call UpdatePolicies
${returnData}= Run Keyword If '${returnData}' == '${EMPTY}' Set Variable 1
... ELSE Set Variable ${returnData}
#必选参数判定
Should Not Be Empty ${policyList}
${dictType} = Evaluate type(${policyList})
${body} Run Keyword If "${dictType}" == "<class 'list'>" WxPolicyListOperation ${returnData} ${policyList} ${opAction} ${version}
... ELSE IF "${dictType}" == "<class 'dict'>" WxPolicyOperation ${returnData} ${policyList} ${opAction} ${version}
... ELSE Set Variable ${EMPTY}
${response} BaseEditRequestForV2 ${url} ${body} ${version}
${rescode} Set Variable ${response['code']}
[Return] ${rescode}