1*26d0e837Smanashsarma*** Settings ***
2*26d0e837Smanashsarma
3*26d0e837Smanashsarma
4*26d0e837SmanashsarmaDocumentation     Suite to test certificate via DMTF redfishtool.
5*26d0e837Smanashsarma
6*26d0e837SmanashsarmaLibrary           OperatingSystem
7*26d0e837SmanashsarmaLibrary           String
8*26d0e837SmanashsarmaLibrary           Collections
9*26d0e837Smanashsarma
10*26d0e837SmanashsarmaResource          ../../lib/resource.robot
11*26d0e837SmanashsarmaResource          ../../lib/bmc_redfish_resource.robot
12*26d0e837SmanashsarmaResource          ../../lib/openbmc_ffdc.robot
13*26d0e837SmanashsarmaResource          ../../lib/certificate_utils.robot
14*26d0e837Smanashsarma
15*26d0e837Smanashsarma
16*26d0e837SmanashsarmaSuite Setup       Suite Setup Execution
17*26d0e837Smanashsarma
18*26d0e837Smanashsarma
19*26d0e837Smanashsarma*** Variables ***
20*26d0e837Smanashsarma
21*26d0e837Smanashsarma${root_cmd_args} =  SEPARATOR=
22*26d0e837Smanashsarma...  redfishtool raw -r ${OPENBMC_HOST} -u ${OPENBMC_USERNAME} -p ${OPENBMC_PASSWORD} -S Always
23*26d0e837Smanashsarma
24*26d0e837Smanashsarma
25*26d0e837Smanashsarma*** Test Cases ***
26*26d0e837Smanashsarma
27*26d0e837Smanashsarma
28*26d0e837SmanashsarmaVerify Redfishtool Replace Server Certificate Valid CertKey
29*26d0e837Smanashsarma    [Documentation]  Verify replace server certificate.
30*26d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_Server_Certificate_Valid_CertKey
31*26d0e837Smanashsarma
32*26d0e837Smanashsarma    Verify Redfishtool Replace Certificate  Server  Valid Certificate Valid Privatekey  ok
33*26d0e837Smanashsarma
34*26d0e837Smanashsarma
35*26d0e837SmanashsarmaVerify Redfishtool Replace Client Certificate Valid CertKey
36*26d0e837Smanashsarma    [Documentation]  Verify replace client certificate.
37*26d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_Client_Certificate_Valid_CertKey
38*26d0e837Smanashsarma
39*26d0e837Smanashsarma    Verify Redfishtool Replace Certificate  Client  Valid Certificate Valid Privatekey  ok
40*26d0e837Smanashsarma
41*26d0e837Smanashsarma
42*26d0e837SmanashsarmaVerify Redfishtool Replace CA Certificate Valid Cert
43*26d0e837Smanashsarma    [Documentation]  Verify replace CA certificate.
44*26d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_CA_Certificate_Valid_Cert
45*26d0e837Smanashsarma
46*26d0e837Smanashsarma    Verify Redfishtool Replace Certificate  CA  Valid Certificate  ok
47*26d0e837Smanashsarma
48*26d0e837Smanashsarma
49*26d0e837SmanashsarmaVerify Redfishtool Client Certificate Install Valid CertKey
50*26d0e837Smanashsarma    [Documentation]  Verify client certificate installation.
51*26d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Client_Certificate_Install_Valid_CertKey
52*26d0e837Smanashsarma
53*26d0e837Smanashsarma    Verify Redfishtool Install Certificate  Client  Valid Certificate Valid Privatekey  ok
54*26d0e837Smanashsarma
55*26d0e837Smanashsarma
56*26d0e837SmanashsarmaVerify Redfishtool CA Certificate Install Valid Cert
57*26d0e837Smanashsarma    [Documentation]  Verify CA Certificate installation.
58*26d0e837Smanashsarma    [Tags]  Verify_Redfishtool_CA_Certificate_Install_Valid_Cert
59*26d0e837Smanashsarma
60*26d0e837Smanashsarma    Verify Redfishtool Install Certificate  CA  Valid Certificate  ok
61*26d0e837Smanashsarma
62*26d0e837Smanashsarma
63*26d0e837SmanashsarmaVerify Redfishtool Replace Server Certificate Errors
64*26d0e837Smanashsarma    [Documentation]  Verify error while replacing invalid server certificate.
65*26d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_Server_Certificate_Errors
66*26d0e837Smanashsarma    [Template]  Verify Redfishtool Replace Certificate
67*26d0e837Smanashsarma
68*26d0e837Smanashsarma    Server  Empty Certificate Empty Privatekey  error
69*26d0e837Smanashsarma    Server  Empty Certificate Valid Privatekey  error
70*26d0e837Smanashsarma    Server  Valid Certificate Empty Privatekey  error
71*26d0e837Smanashsarma
72*26d0e837Smanashsarma
73*26d0e837SmanashsarmaVerify Redfishtool Replace Client Certificate Errors
74*26d0e837Smanashsarma    [Documentation]  Verify error while replacing invalid client certificate.
75*26d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_Client_Certificate_Errors
76*26d0e837Smanashsarma    [Template]  Verify Redfishtool Replace Certificate
77*26d0e837Smanashsarma
78*26d0e837Smanashsarma    Client  Empty Certificate Empty Privatekey  error
79*26d0e837Smanashsarma    Client  Empty Certificate Valid Privatekey  error
80*26d0e837Smanashsarma    Client  Valid Certificate Empty Privatekey  error
81*26d0e837Smanashsarma
82*26d0e837Smanashsarma
83*26d0e837SmanashsarmaVerify Redfishtool Replace CA Certificate Errors
84*26d0e837Smanashsarma    [Documentation]  Verify error while replacing invalid CA certificate.
85*26d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_CA_Certificate_Errors
86*26d0e837Smanashsarma    [Template]  Verify Redfishtool Replace Certificate
87*26d0e837Smanashsarma
88*26d0e837Smanashsarma    CA  Empty Certificate  error
89*26d0e837Smanashsarma
90*26d0e837Smanashsarma
91*26d0e837SmanashsarmaVerify Redfishtool Client Certificate Install Errors
92*26d0e837Smanashsarma    [Documentation]  Verify error while installing invalid client certificate.
93*26d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Client_Certificate_Install_Errors
94*26d0e837Smanashsarma    [Template]  Verify Redfishtool Install Certificate
95*26d0e837Smanashsarma
96*26d0e837Smanashsarma    Client  Empty Certificate Empty Privatekey  error
97*26d0e837Smanashsarma    Client  Empty Certificate Valid Privatekey  error
98*26d0e837Smanashsarma    Client  Valid Certificate Empty Privatekey  error
99*26d0e837Smanashsarma
100*26d0e837Smanashsarma
101*26d0e837Smanashsarma*** Keywords ***
102*26d0e837Smanashsarma
103*26d0e837Smanashsarma
104*26d0e837SmanashsarmaIs HTTP error Expected
105*26d0e837Smanashsarma    [Documentation]  Check if the HTTP error is expected.
106*26d0e837Smanashsarma    [Arguments]  ${cmd_output}  ${error_expected}
107*26d0e837Smanashsarma
108*26d0e837Smanashsarma    # Description of argument(s):
109*26d0e837Smanashsarma    # cmd_output      Output of an HTTP operation.
110*26d0e837Smanashsarma    # error_expected  Expected error.
111*26d0e837Smanashsarma
112*26d0e837Smanashsarma    @{words} =  Split String  ${error_expected}  ,
113*26d0e837Smanashsarma    @{errorString}=  Split String  ${cmd_output}  ${SPACE}
114*26d0e837Smanashsarma    Should Contain Any  ${errorString}  @{words}
115*26d0e837Smanashsarma
116*26d0e837Smanashsarma
117*26d0e837SmanashsarmaVerify Redfishtool Install Certificate
118*26d0e837Smanashsarma    [Documentation]  Install and verify certificate using Redfishtool.
119*26d0e837Smanashsarma    [Arguments]  ${cert_type}  ${cert_format}  ${expected_status}  ${delete_cert}=${True}
120*26d0e837Smanashsarma
121*26d0e837Smanashsarma    # Description of argument(s):
122*26d0e837Smanashsarma    # cert_type           Certificate type (e.g. "Client" or "CA").
123*26d0e837Smanashsarma    # cert_format         Certificate file format
124*26d0e837Smanashsarma    # expected_status     Expected status of certificate install Redfishtool
125*26d0e837Smanashsarma    #                     request (i.e. "ok" or "error").
126*26d0e837Smanashsarma    # delete_cert         Certificate will be deleted before installing if this True.
127*26d0e837Smanashsarma
128*26d0e837Smanashsarma    Run Keyword If  '${cert_type}' == 'CA' and '${delete_cert}' == '${True}'
129*26d0e837Smanashsarma    ...  Delete All CA Certificate Via Redfisthtool
130*26d0e837Smanashsarma    ...  ELSE IF  '${cert_type}' == 'Client' and '${delete_cert}' == '${True}'
131*26d0e837Smanashsarma    ...  Redfishtool Delete Certificate Via BMC CLI  ${cert_type}
132*26d0e837Smanashsarma
133*26d0e837Smanashsarma    ${cert_file_path}=  Generate Certificate File Via Openssl  ${cert_format}
134*26d0e837Smanashsarma    ${bytes}=  OperatingSystem.Get Binary File  ${cert_file_path}
135*26d0e837Smanashsarma    ${file_data}=  Decode Bytes To String  ${bytes}  UTF-8
136*26d0e837Smanashsarma
137*26d0e837Smanashsarma    ${certificate_uri}=  Set Variable If
138*26d0e837Smanashsarma    ...  '${cert_type}' == 'Client'  ${REDFISH_LDAP_CERTIFICATE_URI}
139*26d0e837Smanashsarma    ...  '${cert_type}' == 'CA'  ${REDFISH_CA_CERTIFICATE_URI}
140*26d0e837Smanashsarma
141*26d0e837Smanashsarma    ${cert_id}=  Redfishtool Install Certificate File On BMC
142*26d0e837Smanashsarma    ...  ${certificate_uri}  ${expected_status}  data=${file_data}
143*26d0e837Smanashsarma    Logging  Installed certificate id: ${cert_id}
144*26d0e837Smanashsarma
145*26d0e837Smanashsarma    # Adding delay after certificate installation.
146*26d0e837Smanashsarma    Sleep  30s
147*26d0e837Smanashsarma
148*26d0e837Smanashsarma    ${cert_file_content}=  OperatingSystem.Get File  ${cert_file_path}
149*26d0e837Smanashsarma
150*26d0e837Smanashsarma    ${bmc_cert_content}=  Run Keyword If  '${expected_status}' == 'ok'
151*26d0e837Smanashsarma    ...  Redfishtool GetAttribute  ${certificate_uri}/${cert_id}  CertificateString
152*26d0e837Smanashsarma
153*26d0e837Smanashsarma    Run Keyword If  '${expected_status}' == 'ok'  Should Contain  ${cert_file_content}  ${bmc_cert_content}
154*26d0e837Smanashsarma
155*26d0e837Smanashsarma    [Return]  ${cert_id}
156*26d0e837Smanashsarma
157*26d0e837Smanashsarma
158*26d0e837SmanashsarmaDelete All CA Certificate Via Redfisthtool
159*26d0e837Smanashsarma    [Documentation]  Delete all CA certificate via Redfish.
160*26d0e837Smanashsarma
161*26d0e837Smanashsarma    ${cmd_output}=  Redfishtool Get  /redfish/v1/Managers/bmc/Truststore/Certificates
162*26d0e837Smanashsarma    ${json_object}=  To JSON  ${cmd_output}
163*26d0e837Smanashsarma    ${cert_list}=  Set Variable  ${json_object["Members"]}
164*26d0e837Smanashsarma    FOR  ${cert}  IN  @{cert_list}
165*26d0e837Smanashsarma      Redfishtool Delete  ${cert["@odata.id"]}  ${root_cmd_args}  ${HTTP_NO_CONTENT}
166*26d0e837Smanashsarma    END
167*26d0e837Smanashsarma
168*26d0e837Smanashsarma
169*26d0e837SmanashsarmaRedfishtool Delete Certificate Via BMC CLI
170*26d0e837Smanashsarma    [Documentation]  Delete certificate via BMC CLI.
171*26d0e837Smanashsarma    [Arguments]  ${cert_type}
172*26d0e837Smanashsarma
173*26d0e837Smanashsarma    # Description of argument(s):
174*26d0e837Smanashsarma    # cert_type           Certificate type (e.g. "Client" or "CA").
175*26d0e837Smanashsarma
176*26d0e837Smanashsarma    ${certificate_file_path}  ${certificate_service}  ${certificate_uri}=
177*26d0e837Smanashsarma    ...  Run Keyword If  '${cert_type}' == 'Client'
178*26d0e837Smanashsarma    ...    Set Variable  /etc/nslcd/certs/cert.pem  phosphor-certificate-manager@nslcd.service
179*26d0e837Smanashsarma    ...    ${REDFISH_LDAP_CERTIFICATE_URI}
180*26d0e837Smanashsarma    ...  ELSE IF  '${cert_type}' == 'CA'
181*26d0e837Smanashsarma    ...    Set Variable  ${ROOT_CA_FILE_PATH}  phosphor-certificate-manager@authority.service
182*26d0e837Smanashsarma    ...    ${REDFISH_CA_CERTIFICATE_URI}
183*26d0e837Smanashsarma
184*26d0e837Smanashsarma    ${file_status}  ${stderr}  ${rc}=  BMC Execute Command
185*26d0e837Smanashsarma    ...  [ -f ${certificate_file_path} ] && echo "Found" || echo "Not Found"
186*26d0e837Smanashsarma
187*26d0e837Smanashsarma    Return From Keyword If  "${file_status}" != "Found"
188*26d0e837Smanashsarma    BMC Execute Command  rm ${certificate_file_path}
189*26d0e837Smanashsarma    BMC Execute Command  systemctl restart ${certificate_service}
190*26d0e837Smanashsarma    BMC Execute Command  systemctl daemon-reload
191*26d0e837Smanashsarma
192*26d0e837Smanashsarma
193*26d0e837SmanashsarmaRedfishtool Install Certificate File On BMC
194*26d0e837Smanashsarma    [Documentation]  Install certificate file in BMC using POST operation.
195*26d0e837Smanashsarma    [Arguments]  ${uri}  ${status}=ok  &{kwargs}
196*26d0e837Smanashsarma
197*26d0e837Smanashsarma    # Description of argument(s):
198*26d0e837Smanashsarma    # uri         URI for installing certificate file via Redfishtool.
199*26d0e837Smanashsarma    #             e.g. "/redfish/v1/AccountService/LDAP/Certificates".
200*26d0e837Smanashsarma    # status      Expected status of certificate installation via Redfishtool.
201*26d0e837Smanashsarma    #             e.g. error, ok.
202*26d0e837Smanashsarma    # kwargs      A dictionary of keys/values to be passed directly to
203*26d0e837Smanashsarma    #             POST Request.
204*26d0e837Smanashsarma
205*26d0e837Smanashsarma    Initialize OpenBMC  20  ${quiet}=${1}  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
206*26d0e837Smanashsarma
207*26d0e837Smanashsarma    ${headers}=  Create Dictionary  Content-Type=application/octet-stream
208*26d0e837Smanashsarma    ...  X-Auth-Token=${XAUTH_TOKEN}
209*26d0e837Smanashsarma    Set To Dictionary  ${kwargs}  headers  ${headers}
210*26d0e837Smanashsarma
211*26d0e837Smanashsarma    ${ret}=  Post Request  openbmc  ${uri}  &{kwargs}
212*26d0e837Smanashsarma    ${content_json}=  To JSON  ${ret.content}
213*26d0e837Smanashsarma    ${cert_id}=  Set Variable If  '${ret.status_code}' == '${HTTP_OK}'  ${content_json["Id"]}  -1
214*26d0e837Smanashsarma
215*26d0e837Smanashsarma    Run Keyword If  '${status}' == 'ok'
216*26d0e837Smanashsarma    ...  Should Be Equal As Strings  ${ret.status_code}  ${HTTP_OK}
217*26d0e837Smanashsarma    ...  ELSE IF  '${status}' == 'error'
218*26d0e837Smanashsarma    ...  Should Be Equal As Strings  ${ret.status_code}  ${HTTP_INTERNAL_SERVER_ERROR}
219*26d0e837Smanashsarma
220*26d0e837Smanashsarma    Delete All Sessions
221*26d0e837Smanashsarma
222*26d0e837Smanashsarma    [Return]  ${cert_id}
223*26d0e837Smanashsarma
224*26d0e837Smanashsarma
225*26d0e837SmanashsarmaVerify Redfishtool Replace Certificate
226*26d0e837Smanashsarma    [Documentation]  Verify replace server certificate.
227*26d0e837Smanashsarma    [Arguments]   ${cert_type}  ${cert_format}  ${expected_status}
228*26d0e837Smanashsarma
229*26d0e837Smanashsarma    # Description of argument(s):
230*26d0e837Smanashsarma    # cert_type        Certificate type (e.g. "Client", "Server" or "CA").
231*26d0e837Smanashsarma    # cert_format      Certificate file format
232*26d0e837Smanashsarma    #                  (e.g. "Valid_Certificate_Valid_Privatekey").
233*26d0e837Smanashsarma    # expected_status  Expected status of certificate replace Redfishtool
234*26d0e837Smanashsarma    #                  request (i.e. "ok" or "error").
235*26d0e837Smanashsarma
236*26d0e837Smanashsarma    # Install certificate before replacing client or CA certificate.
237*26d0e837Smanashsarma    ${cert_id}=  Run Keyword If  '${cert_type}' == 'Client'
238*26d0e837Smanashsarma    ...    Verify Redfishtool Install Certificate  ${cert_type}  Valid Certificate Valid Privatekey  ok
239*26d0e837Smanashsarma    ...  ELSE IF  '${cert_type}' == 'CA'
240*26d0e837Smanashsarma    ...    Verify Redfishtool Install Certificate  ${cert_type}  Valid Certificate  ok
241*26d0e837Smanashsarma
242*26d0e837Smanashsarma    ${cert_file_path}=  Generate Certificate File Via Openssl  ${cert_format}
243*26d0e837Smanashsarma    ${bytes}=  OperatingSystem.Get Binary File  ${cert_file_path}
244*26d0e837Smanashsarma    ${file_data}=  Decode Bytes To String  ${bytes}  UTF-8
245*26d0e837Smanashsarma
246*26d0e837Smanashsarma    ${certificate_uri}=  Set Variable If
247*26d0e837Smanashsarma    ...  '${cert_type}' == 'Server'  ${REDFISH_HTTPS_CERTIFICATE_URI}/1
248*26d0e837Smanashsarma    ...  '${cert_type}' == 'Client'  ${REDFISH_LDAP_CERTIFICATE_URI}/1
249*26d0e837Smanashsarma    ...  '${cert_type}' == 'CA'  ${REDFISH_CA_CERTIFICATE_URI}/${cert_id}
250*26d0e837Smanashsarma
251*26d0e837Smanashsarma    ${certificate_dict}=  Create Dictionary  @odata.id=${certificate_uri}
252*26d0e837Smanashsarma    ${dict_objects}=  Create Dictionary  CertificateString=${file_data}
253*26d0e837Smanashsarma    ...  CertificateType=PEM  CertificateUri=${certificate_dict}
254*26d0e837Smanashsarma    ${string}=  Convert To String  ${dict_objects}
255*26d0e837Smanashsarma    ${string}=  Replace String  ${string}  '  "
256*26d0e837Smanashsarma    ${payload}=  Set Variable  '${string}'
257*26d0e837Smanashsarma
258*26d0e837Smanashsarma    ${expected_resp}=  Set Variable If  '${expected_status}' == 'ok'  ${HTTP_OK}
259*26d0e837Smanashsarma    ...  '${expected_status}' == 'error'  ${HTTP_NOT_FOUND}
260*26d0e837Smanashsarma
261*26d0e837Smanashsarma    ${response}=  Redfishtool Post
262*26d0e837Smanashsarma    ...  ${payload}  /redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate  expected_error=${expected_resp}
263*26d0e837Smanashsarma
264*26d0e837Smanashsarma    ${cert_file_content}=  OperatingSystem.Get File  ${cert_file_path}
265*26d0e837Smanashsarma    ${bmc_cert_content}=  Redfishtool GetAttribute  ${certificate_uri}  CertificateString
266*26d0e837Smanashsarma
267*26d0e837Smanashsarma    Run Keyword If  '${expected_status}' == 'ok'
268*26d0e837Smanashsarma    ...    Should Contain  ${cert_file_content}  ${bmc_cert_content}
269*26d0e837Smanashsarma    ...  ELSE
270*26d0e837Smanashsarma    ...    Should Not Contain  ${cert_file_content}  ${bmc_cert_content}
271*26d0e837Smanashsarma
272*26d0e837Smanashsarma
273*26d0e837SmanashsarmaRedfishtool Get
274*26d0e837Smanashsarma    [Documentation]  Execute redfishtool for GET operation.
275*26d0e837Smanashsarma    [Arguments]  ${uri}  ${cmd_args}=${root_cmd_args}  ${expected_error}=""
276*26d0e837Smanashsarma
277*26d0e837Smanashsarma    # Description of argument(s):
278*26d0e837Smanashsarma    # uri             URI for GET operation (e.g. /redfish/v1/AccountService/Accounts/).
279*26d0e837Smanashsarma    # cmd_args        Commandline arguments.
280*26d0e837Smanashsarma    # expected_error  Expected error optionally provided in testcase (e.g. 401 /
281*26d0e837Smanashsarma    #                 authentication error, etc. ).
282*26d0e837Smanashsarma
283*26d0e837Smanashsarma    ${rc}  ${cmd_output}=  Run and Return RC and Output  ${cmd_args} GET ${uri}
284*26d0e837Smanashsarma    Run Keyword If  ${rc} != 0  Is HTTP error Expected  ${cmd_output}  ${expected_error}
285*26d0e837Smanashsarma
286*26d0e837Smanashsarma    [Return]  ${cmd_output}
287*26d0e837Smanashsarma
288*26d0e837Smanashsarma
289*26d0e837SmanashsarmaRedfishtool GetAttribute
290*26d0e837Smanashsarma    [Documentation]  Execute redfishtool for GET operation.
291*26d0e837Smanashsarma    [Arguments]  ${uri}  ${Attribute}  ${cmd_args}=${root_cmd_args}  ${expected_error}=""
292*26d0e837Smanashsarma
293*26d0e837Smanashsarma    # Description of argument(s):
294*26d0e837Smanashsarma    # uri             URI for GET operation (e.g. /redfish/v1/AccountService/Accounts/).
295*26d0e837Smanashsarma    # Attribute       The specific attribute to be retrieved with the URI.
296*26d0e837Smanashsarma    # cmd_args        Commandline arguments.
297*26d0e837Smanashsarma    # expected_error  Expected error optionally provided in testcase (e.g. 401 /
298*26d0e837Smanashsarma    #                 authentication error, etc. ).
299*26d0e837Smanashsarma
300*26d0e837Smanashsarma    ${rc}  ${cmd_output}=  Run and Return RC and Output  ${cmd_args} GET ${uri}
301*26d0e837Smanashsarma    Run Keyword If  ${rc} != 0  Is HTTP error Expected  ${cmd_output}  ${expected_error}
302*26d0e837Smanashsarma    ${json_object}=  To JSON  ${cmd_output}
303*26d0e837Smanashsarma
304*26d0e837Smanashsarma    [Return]  ${json_object["CertificateString"]}
305*26d0e837Smanashsarma
306*26d0e837Smanashsarma
307*26d0e837SmanashsarmaRedfishtool Post
308*26d0e837Smanashsarma    [Documentation]  Execute redfishtool for  Post operation.
309*26d0e837Smanashsarma    [Arguments]  ${payload}  ${uri}  ${cmd_args}=${root_cmd_args}  ${expected_error}=""
310*26d0e837Smanashsarma
311*26d0e837Smanashsarma    # Description of argument(s):
312*26d0e837Smanashsarma    # payload         Payload with POST operation (e.g. data for user name, password, role,
313*26d0e837Smanashsarma    #                 enabled attribute)
314*26d0e837Smanashsarma    # uri             URI for POST operation (e.g. /redfish/v1/AccountService/Accounts/).
315*26d0e837Smanashsarma    # cmd_args        Commandline arguments.
316*26d0e837Smanashsarma    # expected_error  Expected error optionally provided in testcase (e.g. 401 /
317*26d0e837Smanashsarma    #                 authentication error, etc. ).
318*26d0e837Smanashsarma
319*26d0e837Smanashsarma    ${rc}  ${cmd_output}=  Run and Return RC and Output  ${cmd_args} POST ${uri} --data=${payload}
320*26d0e837Smanashsarma    Run Keyword If  ${rc} != 0  Is HTTP error Expected  ${cmd_output}  ${expected_error}
321*26d0e837Smanashsarma
322*26d0e837Smanashsarma    [Return]  ${cmd_output}
323*26d0e837Smanashsarma
324*26d0e837Smanashsarma
325*26d0e837SmanashsarmaRedfishtool Delete
326*26d0e837Smanashsarma    [Documentation]  Execute redfishtool for  Post operation.
327*26d0e837Smanashsarma    [Arguments]  ${uri}  ${cmd_args}=${root_cmd_args}  ${expected_error}=""
328*26d0e837Smanashsarma
329*26d0e837Smanashsarma    # Description of argument(s):
330*26d0e837Smanashsarma    # uri             URI for DELETE operation.
331*26d0e837Smanashsarma    # cmd_args        Commandline arguments.
332*26d0e837Smanashsarma    # expected_error  Expected error optionally provided in testcase (e.g. 401 /
333*26d0e837Smanashsarma    #                 authentication error, etc. ).
334*26d0e837Smanashsarma
335*26d0e837Smanashsarma    ${rc}  ${cmd_output}=  Run and Return RC and Output  ${cmd_args} DELETE ${uri}
336*26d0e837Smanashsarma    Run Keyword If  ${rc} != 0  Is HTTP error Expected  ${cmd_output}  ${expected_error}
337*26d0e837Smanashsarma
338*26d0e837Smanashsarma    [Return]  ${cmd_output}
339*26d0e837Smanashsarma
340*26d0e837Smanashsarma
341*26d0e837SmanashsarmaSuite Setup Execution
342*26d0e837Smanashsarma    [Documentation]  Do suite setup execution.
343*26d0e837Smanashsarma
344*26d0e837Smanashsarma    ${tool_exist}=  Run  which redfishtool
345*26d0e837Smanashsarma    Should Not Be Empty  ${tool_exist}
346*26d0e837Smanashsarma
347*26d0e837Smanashsarma    # Create certificate sub-directory in current working directory.
348*26d0e837Smanashsarma    Create Directory  certificate_dir
349