Added test cases for server and client certificate replace

Test cases added:
    - Verify server certificate replace.
    - Verify client certificate replace.

Change-Id: Ie6110253d9163faab3964582276e40817f53d8a3
Signed-off-by: Rahul Maheshwari <rahulmaheshwari@in.ibm.com>
diff --git a/redfish/managers/test_certificate.robot b/redfish/managers/test_certificate.robot
new file mode 100644
index 0000000..17d9582
--- /dev/null
+++ b/redfish/managers/test_certificate.robot
@@ -0,0 +1,92 @@
+*** Settings ***
+Documentation    Test certificate in OpenBMC.
+
+Resource         ../../lib/resource.robot
+Resource         ../../lib/bmc_redfish_resource.robot
+Resource         ../../lib/openbmc_ffdc.robot
+Resource         ../../lib/certificate_utils.robot
+
+Suite Setup      Suite Setup Execution
+Test Teardown    Test Teardown Execution
+
+
+** Test Cases **
+
+Verify Server Certificate Replace
+    [Documentation]  Verify server certificate replace.
+    [Tags]  Verify_Server_Certificate_Replace
+    [Template]  Replace Certificate Via Redfish
+
+    # cert_type           cert_format                         expected_status
+    Server                Valid Certificate Valid Privatekey  ok
+    Server                Empty Certificate Valid Privatekey  error
+    Server                Valid Certificate Empty Privatekey  error
+    Server                Empty Certificate Empty Privatekey  error
+    Server                Expired Certificate                 error
+
+
+Verify Client Certificate Replace
+    [Documentation]  Verify client certificate replace.
+    [Tags]  Verify_Client_Certificate_Replace
+    [Template]  Replace Certificate Via Redfish
+
+    # cert_type           cert_format                         expected_status
+    Client                Valid Certificate Valid Privatekey  ok
+    Client                Empty Certificate Valid Privatekey  error
+    Client                Valid Certificate Empty Privatekey  error
+    Client                Empty Certificate Empty Privatekey  error
+    Client                Expired Certificate                 error
+
+
+*** Keywords ***
+
+Replace Certificate Via Redfish
+    [Documentation]  Test 'replace certificate' operation in the BMC via Redfish.
+    [Arguments]  ${cert_type}  ${cert_format}  ${expected_status}
+
+    # Description of argument(s):
+    # cert_type           Certificate type (e.g. "Server" or "Client").
+    # cert_format         Certificate file format
+    #                     (e.g. Valid_Certificate_Valid_Privatekey).
+    # expected_status     Expected status of certificate replace Redfish
+    #                     request (i.e. "ok" or "error").
+
+    redfish.Login
+
+    ${time}=  Set Variable If  '${cert_format}' == 'Expired Certificate'  -10  365
+    ${cert_file_path}=  Generate Certificate File Via Openssl  ${cert_format}  ${time}
+
+    ${file_data}=  OperatingSystem.Get Binary File  ${cert_file_path}
+
+    ${certificate_uri}=  Set Variable If  '${cert_type}' == 'Server'
+    ...  /redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/1
+    ...  /redfish/v1/AccountService/LDAP/Certificates/1
+
+    ${certificate_dict}=  Create Dictionary  @odata.id=${certificate_uri}
+    ${payload}=  Create Dictionary  CertificateString=${file_data}
+    ...  CertificateType=PEM  CertificateUri=${certificate_dict}
+    ${resp}=  redfish.Post  CertificateService/Actions/CertificateService.ReplaceCertificate
+    ...  body=${payload}
+
+    ${cert_file_content}=  OperatingSystem.Get File  ${cert_file_path}
+    ${bmc_cert_content}=  redfish_utils.Get Attribute  ${certificate_uri}  CertificateString
+
+    Run Keyword If  '${expected_status}' == 'ok'
+    ...    Should Contain  ${cert_file_content}  ${bmc_cert_content}
+    ...  ELSE
+    ...    Should Not Contain  ${cert_file_content}  ${bmc_cert_content}
+
+
+Suite Setup Execution
+    [Documentation]  Do suite setup tasks.
+
+    # Create certificate sub-directory in current working directory.
+    Create Directory  certificate_dir
+
+
+Test Teardown Execution
+    [Documentation]  Do the post test teardown.
+
+    FFDC On Test Case Fail
+    redfish.Logout
+