126d0e837Smanashsarma*** Settings ***
226d0e837Smanashsarma
326d0e837Smanashsarma
426d0e837SmanashsarmaDocumentation     Suite to test certificate via DMTF redfishtool.
526d0e837Smanashsarma
626d0e837SmanashsarmaLibrary           OperatingSystem
726d0e837SmanashsarmaLibrary           String
826d0e837SmanashsarmaLibrary           Collections
926d0e837Smanashsarma
1026d0e837SmanashsarmaResource          ../../lib/resource.robot
1126d0e837SmanashsarmaResource          ../../lib/bmc_redfish_resource.robot
1226d0e837SmanashsarmaResource          ../../lib/openbmc_ffdc.robot
1326d0e837SmanashsarmaResource          ../../lib/certificate_utils.robot
14579d8253SmanashsarmaResource          ../../lib/dmtf_redfishtool_utils.robot
1526d0e837Smanashsarma
1626d0e837SmanashsarmaSuite Setup       Suite Setup Execution
1726d0e837Smanashsarma
1826d0e837Smanashsarma
1926d0e837Smanashsarma*** Variables ***
2026d0e837Smanashsarma
2126d0e837Smanashsarma${root_cmd_args} =  SEPARATOR=
2226d0e837Smanashsarma...  redfishtool raw -r ${OPENBMC_HOST} -u ${OPENBMC_USERNAME} -p ${OPENBMC_PASSWORD} -S Always
2326d0e837Smanashsarma
2426d0e837Smanashsarma
2526d0e837Smanashsarma*** Test Cases ***
2626d0e837Smanashsarma
2726d0e837Smanashsarma
2826d0e837SmanashsarmaVerify Redfishtool Replace Server Certificate Valid CertKey
2926d0e837Smanashsarma    [Documentation]  Verify replace server certificate.
3026d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_Server_Certificate_Valid_CertKey
3126d0e837Smanashsarma
3226d0e837Smanashsarma    Verify Redfishtool Replace Certificate  Server  Valid Certificate Valid Privatekey  ok
3326d0e837Smanashsarma
3426d0e837Smanashsarma
3526d0e837SmanashsarmaVerify Redfishtool Replace Client Certificate Valid CertKey
3626d0e837Smanashsarma    [Documentation]  Verify replace client certificate.
3726d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_Client_Certificate_Valid_CertKey
3826d0e837Smanashsarma
3926d0e837Smanashsarma    Verify Redfishtool Replace Certificate  Client  Valid Certificate Valid Privatekey  ok
4026d0e837Smanashsarma
4126d0e837Smanashsarma
4226d0e837SmanashsarmaVerify Redfishtool Replace CA Certificate Valid Cert
4326d0e837Smanashsarma    [Documentation]  Verify replace CA certificate.
4426d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_CA_Certificate_Valid_Cert
4526d0e837Smanashsarma
4626d0e837Smanashsarma    Verify Redfishtool Replace Certificate  CA  Valid Certificate  ok
4726d0e837Smanashsarma
4826d0e837Smanashsarma
4926d0e837SmanashsarmaVerify Redfishtool Client Certificate Install Valid CertKey
5026d0e837Smanashsarma    [Documentation]  Verify client certificate installation.
5126d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Client_Certificate_Install_Valid_CertKey
5226d0e837Smanashsarma
5326d0e837Smanashsarma    Verify Redfishtool Install Certificate  Client  Valid Certificate Valid Privatekey  ok
5426d0e837Smanashsarma
5526d0e837Smanashsarma
5626d0e837SmanashsarmaVerify Redfishtool CA Certificate Install Valid Cert
5726d0e837Smanashsarma    [Documentation]  Verify CA Certificate installation.
5826d0e837Smanashsarma    [Tags]  Verify_Redfishtool_CA_Certificate_Install_Valid_Cert
5926d0e837Smanashsarma
6026d0e837Smanashsarma    Verify Redfishtool Install Certificate  CA  Valid Certificate  ok
6126d0e837Smanashsarma
6226d0e837Smanashsarma
6326d0e837SmanashsarmaVerify Redfishtool Replace Server Certificate Errors
6426d0e837Smanashsarma    [Documentation]  Verify error while replacing invalid server certificate.
6526d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_Server_Certificate_Errors
6626d0e837Smanashsarma    [Template]  Verify Redfishtool Replace Certificate
6726d0e837Smanashsarma
6826d0e837Smanashsarma    Server  Empty Certificate Empty Privatekey  error
6926d0e837Smanashsarma    Server  Empty Certificate Valid Privatekey  error
7026d0e837Smanashsarma    Server  Valid Certificate Empty Privatekey  error
7126d0e837Smanashsarma
7226d0e837Smanashsarma
7326d0e837SmanashsarmaVerify Redfishtool Replace Client Certificate Errors
7426d0e837Smanashsarma    [Documentation]  Verify error while replacing invalid client certificate.
7526d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_Client_Certificate_Errors
7626d0e837Smanashsarma    [Template]  Verify Redfishtool Replace Certificate
7726d0e837Smanashsarma
7826d0e837Smanashsarma    Client  Empty Certificate Empty Privatekey  error
7926d0e837Smanashsarma    Client  Empty Certificate Valid Privatekey  error
8026d0e837Smanashsarma    Client  Valid Certificate Empty Privatekey  error
8126d0e837Smanashsarma
8226d0e837Smanashsarma
8326d0e837SmanashsarmaVerify Redfishtool Replace CA Certificate Errors
8426d0e837Smanashsarma    [Documentation]  Verify error while replacing invalid CA certificate.
8526d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Replace_CA_Certificate_Errors
8626d0e837Smanashsarma    [Template]  Verify Redfishtool Replace Certificate
8726d0e837Smanashsarma
8826d0e837Smanashsarma    CA  Empty Certificate  error
8926d0e837Smanashsarma
9026d0e837Smanashsarma
9126d0e837SmanashsarmaVerify Redfishtool Client Certificate Install Errors
9226d0e837Smanashsarma    [Documentation]  Verify error while installing invalid client certificate.
9326d0e837Smanashsarma    [Tags]  Verify_Redfishtool_Client_Certificate_Install_Errors
9426d0e837Smanashsarma    [Template]  Verify Redfishtool Install Certificate
9526d0e837Smanashsarma
9626d0e837Smanashsarma    Client  Empty Certificate Empty Privatekey  error
9726d0e837Smanashsarma    Client  Empty Certificate Valid Privatekey  error
9826d0e837Smanashsarma    Client  Valid Certificate Empty Privatekey  error
9926d0e837Smanashsarma
10026d0e837Smanashsarma
101*c0efe585SmanashsarmaVerify Redfishtool CA Certificate Install Errors
102*c0efe585Smanashsarma    [Documentation]  Verify error while installing invalid CA certificate.
103*c0efe585Smanashsarma    [Tags]  Verify_Redfishtool_CA_Certificate_Install_Errors
104*c0efe585Smanashsarma    [Template]  Verify Redfishtool Install Certificate
105*c0efe585Smanashsarma
106*c0efe585Smanashsarma    # cert_type  cert_format        expected_status
107*c0efe585Smanashsarma    CA           Empty Certificate  error
108*c0efe585Smanashsarma
109*c0efe585Smanashsarma
110*c0efe585SmanashsarmaVerify Error While Uploding Same CA Certificate Via Redfishtool
111*c0efe585Smanashsarma    [Documentation]  Verify error while uploading same CA certificate two times.
112*c0efe585Smanashsarma    [Tags]  Verify_Error_While_Uploding_Same_CA_Certificate_Via_Redfishtool
113*c0efe585Smanashsarma
114*c0efe585Smanashsarma    # Create certificate file for uploading.
115*c0efe585Smanashsarma    ${cert_file_path}=  Generate Certificate File Via Openssl  Valid Certificate  365
116*c0efe585Smanashsarma    ${bytes}=  OperatingSystem.Get Binary File  ${cert_file_path}
117*c0efe585Smanashsarma    ${file_data}=  Decode Bytes To String  ${bytes}  UTF-8
118*c0efe585Smanashsarma
119*c0efe585Smanashsarma    # Install CA certificate.
120*c0efe585Smanashsarma    Redfishtool Install Certificate File On BMC  ${REDFISH_CA_CERTIFICATE_URI}  ok  data=${file_data}
121*c0efe585Smanashsarma
122*c0efe585Smanashsarma    # Adding delay after certificate installation.
123*c0efe585Smanashsarma    Sleep  30s
124*c0efe585Smanashsarma
125*c0efe585Smanashsarma    # Check error while uploading same certificate.
126*c0efe585Smanashsarma    Redfishtool Install Certificate File On BMC  ${REDFISH_CA_CERTIFICATE_URI}  error  data=${file_data}
127*c0efe585Smanashsarma
128*c0efe585Smanashsarma
129*c0efe585SmanashsarmaInstall Server Certificate Using Redfishtool And Verify Via OpenSSL
130*c0efe585Smanashsarma    [Documentation]  Install server certificate using Redfishtool and verify via OpenSSL.
131*c0efe585Smanashsarma    [Tags]  Install_Server_Certificate_Using_Redfishtool_And_Verify_Via_OpenSSL.
132*c0efe585Smanashsarma
133*c0efe585Smanashsarma    ${cert_file_path}=  Generate Certificate File Via Openssl  Valid Certificate Valid Privatekey
134*c0efe585Smanashsarma    ${bytes}=  OperatingSystem.Get Binary File  ${cert_file_path}
135*c0efe585Smanashsarma    ${file_data}=  Decode Bytes To String  ${bytes}  UTF-8
136*c0efe585Smanashsarma
137*c0efe585Smanashsarma    ${certificate_dict}=  Create Dictionary
138*c0efe585Smanashsarma    ...  @odata.id=/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/1
139*c0efe585Smanashsarma
140*c0efe585Smanashsarma    ${dict_objects}=  Create Dictionary  CertificateString=${file_data}
141*c0efe585Smanashsarma    ...  CertificateType=PEM  CertificateUri=${certificate_dict}
142*c0efe585Smanashsarma
143*c0efe585Smanashsarma    ${string}=  Convert To String  ${dict_objects}
144*c0efe585Smanashsarma    ${string}=  Replace String  ${string}  '  "
145*c0efe585Smanashsarma    ${payload}=  Set Variable  '${string}'
146*c0efe585Smanashsarma
147*c0efe585Smanashsarma    ${response}=  Redfishtool Post
148*c0efe585Smanashsarma    ...  ${payload}  /redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate
149*c0efe585Smanashsarma
150*c0efe585Smanashsarma    Wait Until Keyword Succeeds  2 mins  15 secs  Verify Certificate Visible Via OpenSSL  ${cert_file_path}
151*c0efe585Smanashsarma
15226d0e837Smanashsarma*** Keywords ***
15326d0e837Smanashsarma
15426d0e837Smanashsarma
15526d0e837SmanashsarmaVerify Redfishtool Install Certificate
15626d0e837Smanashsarma    [Documentation]  Install and verify certificate using Redfishtool.
15726d0e837Smanashsarma    [Arguments]  ${cert_type}  ${cert_format}  ${expected_status}  ${delete_cert}=${True}
15826d0e837Smanashsarma
15926d0e837Smanashsarma    # Description of argument(s):
16026d0e837Smanashsarma    # cert_type           Certificate type (e.g. "Client" or "CA").
16126d0e837Smanashsarma    # cert_format         Certificate file format
16226d0e837Smanashsarma    # expected_status     Expected status of certificate install Redfishtool
16326d0e837Smanashsarma    #                     request (i.e. "ok" or "error").
16426d0e837Smanashsarma    # delete_cert         Certificate will be deleted before installing if this True.
16526d0e837Smanashsarma
16626d0e837Smanashsarma    Run Keyword If  '${cert_type}' == 'CA' and '${delete_cert}' == '${True}'
16726d0e837Smanashsarma    ...  Delete All CA Certificate Via Redfisthtool
16826d0e837Smanashsarma    ...  ELSE IF  '${cert_type}' == 'Client' and '${delete_cert}' == '${True}'
16926d0e837Smanashsarma    ...  Redfishtool Delete Certificate Via BMC CLI  ${cert_type}
17026d0e837Smanashsarma
17126d0e837Smanashsarma    ${cert_file_path}=  Generate Certificate File Via Openssl  ${cert_format}
17226d0e837Smanashsarma    ${bytes}=  OperatingSystem.Get Binary File  ${cert_file_path}
17326d0e837Smanashsarma    ${file_data}=  Decode Bytes To String  ${bytes}  UTF-8
17426d0e837Smanashsarma
17526d0e837Smanashsarma    ${certificate_uri}=  Set Variable If
17626d0e837Smanashsarma    ...  '${cert_type}' == 'Client'  ${REDFISH_LDAP_CERTIFICATE_URI}
17726d0e837Smanashsarma    ...  '${cert_type}' == 'CA'  ${REDFISH_CA_CERTIFICATE_URI}
17826d0e837Smanashsarma
17926d0e837Smanashsarma    ${cert_id}=  Redfishtool Install Certificate File On BMC
18026d0e837Smanashsarma    ...  ${certificate_uri}  ${expected_status}  data=${file_data}
18126d0e837Smanashsarma    Logging  Installed certificate id: ${cert_id}
18226d0e837Smanashsarma
18326d0e837Smanashsarma    # Adding delay after certificate installation.
18426d0e837Smanashsarma    Sleep  30s
18526d0e837Smanashsarma
18626d0e837Smanashsarma    ${cert_file_content}=  OperatingSystem.Get File  ${cert_file_path}
18726d0e837Smanashsarma
18826d0e837Smanashsarma    ${bmc_cert_content}=  Run Keyword If  '${expected_status}' == 'ok'
18926d0e837Smanashsarma    ...  Redfishtool GetAttribute  ${certificate_uri}/${cert_id}  CertificateString
19026d0e837Smanashsarma
19126d0e837Smanashsarma    Run Keyword If  '${expected_status}' == 'ok'  Should Contain  ${cert_file_content}  ${bmc_cert_content}
19226d0e837Smanashsarma
19326d0e837Smanashsarma    [Return]  ${cert_id}
19426d0e837Smanashsarma
19526d0e837Smanashsarma
19626d0e837SmanashsarmaDelete All CA Certificate Via Redfisthtool
19726d0e837Smanashsarma    [Documentation]  Delete all CA certificate via Redfish.
19826d0e837Smanashsarma
19926d0e837Smanashsarma    ${cmd_output}=  Redfishtool Get  /redfish/v1/Managers/bmc/Truststore/Certificates
20026d0e837Smanashsarma    ${json_object}=  To JSON  ${cmd_output}
20126d0e837Smanashsarma    ${cert_list}=  Set Variable  ${json_object["Members"]}
20226d0e837Smanashsarma    FOR  ${cert}  IN  @{cert_list}
203579d8253Smanashsarma      Redfishtool Delete  ${cert["@odata.id"]}  ${root_cmd_args}
20426d0e837Smanashsarma    END
20526d0e837Smanashsarma
20626d0e837Smanashsarma
20726d0e837SmanashsarmaRedfishtool Delete Certificate Via BMC CLI
20826d0e837Smanashsarma    [Documentation]  Delete certificate via BMC CLI.
20926d0e837Smanashsarma    [Arguments]  ${cert_type}
21026d0e837Smanashsarma
21126d0e837Smanashsarma    # Description of argument(s):
21226d0e837Smanashsarma    # cert_type           Certificate type (e.g. "Client" or "CA").
21326d0e837Smanashsarma
21426d0e837Smanashsarma    ${certificate_file_path}  ${certificate_service}  ${certificate_uri}=
21526d0e837Smanashsarma    ...  Run Keyword If  '${cert_type}' == 'Client'
21626d0e837Smanashsarma    ...    Set Variable  /etc/nslcd/certs/cert.pem  phosphor-certificate-manager@nslcd.service
21726d0e837Smanashsarma    ...    ${REDFISH_LDAP_CERTIFICATE_URI}
21826d0e837Smanashsarma    ...  ELSE IF  '${cert_type}' == 'CA'
21926d0e837Smanashsarma    ...    Set Variable  ${ROOT_CA_FILE_PATH}  phosphor-certificate-manager@authority.service
22026d0e837Smanashsarma    ...    ${REDFISH_CA_CERTIFICATE_URI}
22126d0e837Smanashsarma
22226d0e837Smanashsarma    ${file_status}  ${stderr}  ${rc}=  BMC Execute Command
22326d0e837Smanashsarma    ...  [ -f ${certificate_file_path} ] && echo "Found" || echo "Not Found"
22426d0e837Smanashsarma
22526d0e837Smanashsarma    Return From Keyword If  "${file_status}" != "Found"
22626d0e837Smanashsarma    BMC Execute Command  rm ${certificate_file_path}
22726d0e837Smanashsarma    BMC Execute Command  systemctl restart ${certificate_service}
22826d0e837Smanashsarma    BMC Execute Command  systemctl daemon-reload
22926d0e837Smanashsarma
23026d0e837Smanashsarma
23126d0e837SmanashsarmaRedfishtool Install Certificate File On BMC
23226d0e837Smanashsarma    [Documentation]  Install certificate file in BMC using POST operation.
23326d0e837Smanashsarma    [Arguments]  ${uri}  ${status}=ok  &{kwargs}
23426d0e837Smanashsarma
23526d0e837Smanashsarma    # Description of argument(s):
23626d0e837Smanashsarma    # uri         URI for installing certificate file via Redfishtool.
23726d0e837Smanashsarma    #             e.g. "/redfish/v1/AccountService/LDAP/Certificates".
23826d0e837Smanashsarma    # status      Expected status of certificate installation via Redfishtool.
23926d0e837Smanashsarma    #             e.g. error, ok.
24026d0e837Smanashsarma    # kwargs      A dictionary of keys/values to be passed directly to
24126d0e837Smanashsarma    #             POST Request.
24226d0e837Smanashsarma
24326d0e837Smanashsarma    Initialize OpenBMC  20  ${quiet}=${1}  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
24426d0e837Smanashsarma
24526d0e837Smanashsarma    ${headers}=  Create Dictionary  Content-Type=application/octet-stream
24626d0e837Smanashsarma    ...  X-Auth-Token=${XAUTH_TOKEN}
24726d0e837Smanashsarma    Set To Dictionary  ${kwargs}  headers  ${headers}
24826d0e837Smanashsarma
24926d0e837Smanashsarma    ${ret}=  Post Request  openbmc  ${uri}  &{kwargs}
25026d0e837Smanashsarma    ${content_json}=  To JSON  ${ret.content}
25126d0e837Smanashsarma    ${cert_id}=  Set Variable If  '${ret.status_code}' == '${HTTP_OK}'  ${content_json["Id"]}  -1
25226d0e837Smanashsarma
25326d0e837Smanashsarma    Run Keyword If  '${status}' == 'ok'
25426d0e837Smanashsarma    ...  Should Be Equal As Strings  ${ret.status_code}  ${HTTP_OK}
25526d0e837Smanashsarma    ...  ELSE IF  '${status}' == 'error'
25626d0e837Smanashsarma    ...  Should Be Equal As Strings  ${ret.status_code}  ${HTTP_INTERNAL_SERVER_ERROR}
25726d0e837Smanashsarma
25826d0e837Smanashsarma    Delete All Sessions
25926d0e837Smanashsarma
26026d0e837Smanashsarma    [Return]  ${cert_id}
26126d0e837Smanashsarma
26226d0e837Smanashsarma
26326d0e837SmanashsarmaVerify Redfishtool Replace Certificate
26426d0e837Smanashsarma    [Documentation]  Verify replace server certificate.
26526d0e837Smanashsarma    [Arguments]   ${cert_type}  ${cert_format}  ${expected_status}
26626d0e837Smanashsarma
26726d0e837Smanashsarma    # Description of argument(s):
26826d0e837Smanashsarma    # cert_type        Certificate type (e.g. "Client", "Server" or "CA").
26926d0e837Smanashsarma    # cert_format      Certificate file format
27026d0e837Smanashsarma    #                  (e.g. "Valid_Certificate_Valid_Privatekey").
27126d0e837Smanashsarma    # expected_status  Expected status of certificate replace Redfishtool
27226d0e837Smanashsarma    #                  request (i.e. "ok" or "error").
27326d0e837Smanashsarma
27426d0e837Smanashsarma    # Install certificate before replacing client or CA certificate.
27526d0e837Smanashsarma    ${cert_id}=  Run Keyword If  '${cert_type}' == 'Client'
27626d0e837Smanashsarma    ...    Verify Redfishtool Install Certificate  ${cert_type}  Valid Certificate Valid Privatekey  ok
27726d0e837Smanashsarma    ...  ELSE IF  '${cert_type}' == 'CA'
27826d0e837Smanashsarma    ...    Verify Redfishtool Install Certificate  ${cert_type}  Valid Certificate  ok
27926d0e837Smanashsarma
28026d0e837Smanashsarma    ${cert_file_path}=  Generate Certificate File Via Openssl  ${cert_format}
28126d0e837Smanashsarma    ${bytes}=  OperatingSystem.Get Binary File  ${cert_file_path}
28226d0e837Smanashsarma    ${file_data}=  Decode Bytes To String  ${bytes}  UTF-8
28326d0e837Smanashsarma
28426d0e837Smanashsarma    ${certificate_uri}=  Set Variable If
28526d0e837Smanashsarma    ...  '${cert_type}' == 'Server'  ${REDFISH_HTTPS_CERTIFICATE_URI}/1
28626d0e837Smanashsarma    ...  '${cert_type}' == 'Client'  ${REDFISH_LDAP_CERTIFICATE_URI}/1
28726d0e837Smanashsarma    ...  '${cert_type}' == 'CA'  ${REDFISH_CA_CERTIFICATE_URI}/${cert_id}
28826d0e837Smanashsarma
28926d0e837Smanashsarma    ${certificate_dict}=  Create Dictionary  @odata.id=${certificate_uri}
29026d0e837Smanashsarma    ${dict_objects}=  Create Dictionary  CertificateString=${file_data}
29126d0e837Smanashsarma    ...  CertificateType=PEM  CertificateUri=${certificate_dict}
29226d0e837Smanashsarma    ${string}=  Convert To String  ${dict_objects}
29326d0e837Smanashsarma    ${string}=  Replace String  ${string}  '  "
29426d0e837Smanashsarma    ${payload}=  Set Variable  '${string}'
29526d0e837Smanashsarma
29626d0e837Smanashsarma    ${expected_resp}=  Set Variable If  '${expected_status}' == 'ok'  ${HTTP_OK}
29726d0e837Smanashsarma    ...  '${expected_status}' == 'error'  ${HTTP_NOT_FOUND}
29826d0e837Smanashsarma
29926d0e837Smanashsarma    ${response}=  Redfishtool Post
300f510346dSAnusha Dathatri    ...  ${payload}  /redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate
301f510346dSAnusha Dathatri    ...  expected_error=${expected_resp}
30226d0e837Smanashsarma
30326d0e837Smanashsarma    ${cert_file_content}=  OperatingSystem.Get File  ${cert_file_path}
30426d0e837Smanashsarma    ${bmc_cert_content}=  Redfishtool GetAttribute  ${certificate_uri}  CertificateString
30526d0e837Smanashsarma
30626d0e837Smanashsarma    Run Keyword If  '${expected_status}' == 'ok'
30726d0e837Smanashsarma    ...    Should Contain  ${cert_file_content}  ${bmc_cert_content}
30826d0e837Smanashsarma    ...  ELSE
30926d0e837Smanashsarma    ...    Should Not Contain  ${cert_file_content}  ${bmc_cert_content}
31026d0e837Smanashsarma
31126d0e837Smanashsarma
31226d0e837SmanashsarmaRedfishtool GetAttribute
31326d0e837Smanashsarma    [Documentation]  Execute redfishtool for GET operation.
31426d0e837Smanashsarma    [Arguments]  ${uri}  ${Attribute}  ${cmd_args}=${root_cmd_args}  ${expected_error}=""
31526d0e837Smanashsarma
31626d0e837Smanashsarma    # Description of argument(s):
31726d0e837Smanashsarma    # uri             URI for GET operation (e.g. /redfish/v1/AccountService/Accounts/).
31826d0e837Smanashsarma    # Attribute       The specific attribute to be retrieved with the URI.
31926d0e837Smanashsarma    # cmd_args        Commandline arguments.
32026d0e837Smanashsarma    # expected_error  Expected error optionally provided in testcase (e.g. 401 /
32126d0e837Smanashsarma    #                 authentication error, etc. ).
32226d0e837Smanashsarma
32326d0e837Smanashsarma    ${rc}  ${cmd_output}=  Run and Return RC and Output  ${cmd_args} GET ${uri}
32426d0e837Smanashsarma    Run Keyword If  ${rc} != 0  Is HTTP error Expected  ${cmd_output}  ${expected_error}
32526d0e837Smanashsarma    ${json_object}=  To JSON  ${cmd_output}
32626d0e837Smanashsarma
32726d0e837Smanashsarma    [Return]  ${json_object["CertificateString"]}
32826d0e837Smanashsarma
32926d0e837Smanashsarma
33026d0e837SmanashsarmaSuite Setup Execution
33126d0e837Smanashsarma    [Documentation]  Do suite setup execution.
33226d0e837Smanashsarma
33326d0e837Smanashsarma    ${tool_exist}=  Run  which redfishtool
33426d0e837Smanashsarma    Should Not Be Empty  ${tool_exist}
33526d0e837Smanashsarma
33626d0e837Smanashsarma    # Create certificate sub-directory in current working directory.
33726d0e837Smanashsarma    Create Directory  certificate_dir
338