*** 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,取而代之的是source,destination,filterList ... 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}" == "" WxPolicyListOperation ${returnData} ${policyList} add ${version} ... ELSE IF "${dictType}" == "" 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}" == "" WxPolicyListOperation ${returnData} ${policyList} ${opAction} ${version} ... ELSE IF "${dictType}" == "" WxPolicyOperation ${returnData} ${policyList} ${opAction} ${version} ... ELSE Set Variable ${EMPTY} ${response} BaseEditRequestForV2 ${url} ${body} ${version} ${rescode} Set Variable ${response['code']} [Return] ${rescode}