| *** Settings *** |
| |
| Documentation Test certificate in OpenBMC. |
| |
| Resource ../lib/rest_client.robot |
| Resource ../lib/resource.txt |
| Resource ../lib/openbmc_ffdc.robot |
| Resource ../lib/certificate_utils.robot |
| |
| Suite Setup Suite Setup Execution |
| Test Teardown Test Teardown Execution |
| |
| Force Tags Certificate_Test |
| |
| |
| *** Test Cases *** |
| |
| Test Server Certificate Install With Valid Certificate And Valid Private Key |
| [Documentation] Test server certificate install with valid certificate |
| ... and valid private key. |
| [Tags] Test_Server_Certificate_Install_With_Valid_Certificate_And_Valid_Private_Key |
| [Template] Certificate Install Via REST |
| # Certificate type Certificate file format Expected Status |
| Server Valid Certificate Valid Privatekey ok |
| |
| |
| Test Server Certificate Install With Empty Certificate And Valid Private Key |
| [Documentation] Test server certificate install with empty certificate |
| ... and valid private key. |
| [Tags] Test_Server_Certificate_Install_With_Empty_Certificate_And_Valid_Private_Key |
| [Template] Certificate Install Via REST |
| |
| # Certificate type Certificate file format Expected Status |
| Server Empty Certificate Valid Privatekey error |
| |
| |
| Test Server Certificate Install With Valid Certificate And Empty Private Key |
| [Documentation] Test server certificate install with valid certificate |
| ... and empty private key. |
| [Tags] Test_Server_Certificate_Install_With_Valid_Certificate_And_Empty_Private_Key |
| [Template] Certificate Install Via REST |
| |
| # Certificate type Certificate file format Expected Status |
| Server Valid Certificate Empty Privatekey error |
| |
| |
| Test Server Certificate Install With Empty Certificate And Empty Private Key |
| [Documentation] Test server certificate install with empty certificate |
| ... and empty private key. |
| [Tags] Test_Server_Certificate_Install_With_Empty_Certificate_And_Empty_Private_Key |
| [Template] Certificate Install Via REST |
| |
| # Certificate type Certificate file format Expected Status |
| Server Empty Certificate Empty Privatekey error |
| |
| |
| Test Server Certificate Install With Expired Certificate |
| [Documentation] Test server certificate install with expired certificate. |
| [Tags] Test_Server_Certificate_Install_With_Expired_Certificate |
| [Template] Certificate Install Via REST |
| # Certificate type Certificate file format Expected Status |
| Server Expired Certificate error |
| |
| |
| Test Client Certificate Install With Valid Certificate And Valid Private Key |
| [Documentation] Test client certificate install with valid certificate |
| ... and valid private key. |
| [Tags] Test_Client_Certificate_Install_With_Valid_Certificate_And_Valid_Private_Key |
| [Template] Certificate Install Via REST |
| # Certificate type Certificate file format Expected Status |
| Client Valid Certificate Valid Privatekey ok |
| |
| |
| Test Client Certificate Install With Empty Certificate And Valid Private Key |
| [Documentation] Test client certificate install with empty certificate |
| ... and valid private key. |
| [Tags] Test_Client_Certificate_Install_With_Empty_Certificate_And_Valid_Private_Key |
| [Template] Certificate Install Via REST |
| |
| # Certificate type Certificate file format Expected Status |
| Client Empty Certificate Valid Privatekey error |
| |
| |
| Test Client Certificate Install With Valid Certificate And Empty Private Key |
| [Documentation] Test client certificate install with valid certificate |
| ... and empty private key. |
| [Tags] Test_Client_Certificate_Install_With_Valid_Certificate_And_Empty_Private_Key |
| [Template] Certificate Install Via REST |
| |
| # Certificate type Certificate file format Expected Status |
| Client Valid Certificate Empty Privatekey error |
| |
| |
| Test Client Certificate Install With Empty Certificate And Empty Private Key |
| [Documentation] Test client certificate install with empty certificate |
| ... and empty private key. |
| [Tags] Test_Client_Certificate_Install_With_Empty_Certificate_And_Empty_Private_Key |
| [Template] Certificate Install Via REST |
| |
| # Certificate type Certificate file format Expected Status |
| Client Empty Certificate Empty Privatekey error |
| |
| |
| Test Client Certificate Install With Expired Certificate |
| [Documentation] Test client certificate install with expired certificate. |
| [Tags] Test_Client_Certificate_Install_With_Expired_Certificate |
| [Template] Certificate Install Via REST |
| # Certificate type Certificate file format Expected Status |
| Client Expired Certificate error |
| |
| |
| Test CA Certificate Install With Valid Certificate |
| [Documentation] Test CA certificate install with valid certificate. |
| [Tags] Test_CA_Certificate_Install_With_Valid_Certificate |
| [Template] Certificate Install Via REST |
| |
| # Certificate type Certificate file format Expected Status |
| CA Valid Certificate ok |
| |
| |
| Test CA Certificate Install With Empty Certificate |
| [Documentation] Test CA certificate install with empty certificate. |
| [Tags] Test_CA_Certificate_Install_With_Empty_Certificate |
| [Template] Certificate Install Via REST |
| |
| # Certificate type Certificate file format Expected Status |
| CA Empty Certificate error |
| |
| |
| Test Delete Server Certificate |
| [Documentation] Delete server certificate and verify. |
| [Tags] Test_Delete_Server_Certificate |
| |
| ${cert_file_path}= Generate Certificate File Via Openssl |
| ... Valid Certificate Valid Privatekey |
| ${file_data}= OperatingSystem.Get Binary File ${cert_file_path} |
| ${cert_file_content}= OperatingSystem.Get File ${cert_file_path} |
| |
| Install Certificate File On BMC ${SERVER_CERTIFICATE_URI} |
| ... data=${file_data} |
| |
| OpenBMC Delete Request ${SERVER_CERTIFICATE_URI} |
| # Adding delay after certificate deletion |
| Sleep 30s |
| |
| ${bmc_cert_content}= Get Certificate Content From BMC Via Openssl |
| Should Not Contain ${cert_file_content} ${bmc_cert_content} |
| |
| |
| Test Delete Client Certificate |
| [Documentation] Delete client certificate and verify. |
| [Tags] Test_Delete_Client_Certificate |
| |
| ${cert_file_path}= Generate Certificate File Via Openssl |
| ... Valid Certificate Valid Privatekey |
| ${file_data}= OperatingSystem.Get Binary File ${cert_file_path} |
| ${cert_file_content}= OperatingSystem.Get File ${cert_file_path} |
| |
| Install Certificate File On BMC ${CLIENT_CERTIFICATE_URI} |
| ... data=${file_data} |
| |
| OpenBMC Delete Request ${CLIENT_CERTIFICATE_URI} |
| # Adding delay after certificate deletion |
| Sleep 30s |
| |
| ${msg}= Run Keyword And Expect Error * |
| ... Get Certificate File Content From BMC Client |
| |
| Should Contain ${msg} No such file or directory ignore_case=True |
| |
| |
| Test Delete CA Certificate |
| [Documentation] Delete CA certificate and verify. |
| [Tags] Test_Delete_CA_Certificate |
| |
| ${cert_file_path}= Generate Certificate File Via Openssl |
| ... Valid Certificate |
| ${file_data}= OperatingSystem.Get Binary File ${cert_file_path} |
| ${cert_file_content}= OperatingSystem.Get File ${cert_file_path} |
| |
| Install Certificate File On BMC ${CA_CERTIFICATE_URI} |
| ... data=${file_data} |
| |
| OpenBMC Delete Request ${CA_CERTIFICATE_URI} |
| # Adding delay after certificate deletion. |
| Sleep 30s |
| |
| ${msg}= Run Keyword And Expect Error * |
| ... Get Certificate File Content From BMC CA |
| |
| Should Contain ${msg} No such file or directory ignore_case=True |
| |
| |
| |
| Test Continuous Server Certificate Install |
| [Documentation] Stress server certificate installtion. |
| [Tags] Test_Continuous_Server_Certificate_Install |
| |
| Repeat Keyword 3 times Certificate Install Via REST |
| ... Server Valid Certificate Valid Privatekey ok |
| |
| |
| Test Continuous Client Certificate Install |
| [Documentation] Stress client certificate installtion. |
| [Tags] Test_Continuous_Client_Certificate_Install |
| |
| Repeat Keyword 3 times Certificate Install Via REST |
| ... Client Valid Certificate Valid Privatekey ok |
| |
| |
| ***Keywords*** |
| |
| Certificate Install Via REST |
| [Documentation] Test certificate install in the BMC via REST. |
| [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 installation REST |
| # request(i.e. "ok" or "error"). |
| |
| ${cert_file_path}= Run Keyword if '${cert_format}' == 'Expired Certificate' |
| ... Generate Certificate File Via Openssl ${cert_format} -10 |
| ... ELSE Generate Certificate File Via Openssl ${cert_format} |
| |
| ${file_data}= OperatingSystem.Get Binary File ${cert_file_path} |
| |
| Run Keyword If '${cert_type}' == 'Server' |
| ... Install Certificate File On BMC ${SERVER_CERTIFICATE_URI} |
| ... ${expected_status} ${1} data=${file_data} |
| ... ELSE IF '${cert_type}' == 'Client' |
| ... Install Certificate File On BMC ${CLIENT_CERTIFICATE_URI} |
| ... ${expected_status} ${1} data=${file_data} |
| ... ELSE IF '${cert_type}' == 'CA' |
| ... Install Certificate File On BMC ${CA_CERTIFICATE_URI} |
| ... ${expected_status} ${1} data=${file_data} |
| |
| # Adding delay after certificate installation. |
| sleep 10s |
| ${cert_file_content}= OperatingSystem.Get File ${cert_file_path} |
| Should Not Be Empty ${cert_file_content} |
| |
| ${bmc_cert_content}= Run Keyword If '${cert_type}' == 'Server' |
| ... Get Certificate Content From BMC Via Openssl |
| ... ELSE IF '${cert_type}' == 'Client' |
| ... Get Certificate File Content From BMC Client |
| ... ELSE IF '${cert_type}' == 'CA' |
| ... Get Certificate File Content From BMC CA |
| |
| Run Keyword if '${expected_status}' == 'ok' |
| ... Should Contain ${cert_file_content} ${bmc_cert_content} |
| ... ELSE IF '${expected_status}' == 'error' |
| ... 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 |
| OperatingSystem.Directory Should Exist ${EXECDIR}${/}certificate_dir |
| |
| |
| Test Teardown Execution |
| [Documentation] Do the post test teardown. |
| |
| Empty Directory ${EXECDIR}${/}certificate_dir |
| FFDC On Test Case Fail |