blob: 17d958286856d5eb40151b525c59a9512caea7ab [file] [log] [blame]
Rahul Maheshwarib4b8bb62019-03-04 23:56:10 -06001*** Settings ***
2Documentation Test certificate in OpenBMC.
3
4Resource ../../lib/resource.robot
5Resource ../../lib/bmc_redfish_resource.robot
6Resource ../../lib/openbmc_ffdc.robot
7Resource ../../lib/certificate_utils.robot
8
9Suite Setup Suite Setup Execution
10Test Teardown Test Teardown Execution
11
12
13** Test Cases **
14
15Verify Server Certificate Replace
16 [Documentation] Verify server certificate replace.
17 [Tags] Verify_Server_Certificate_Replace
18 [Template] Replace Certificate Via Redfish
19
20 # cert_type cert_format expected_status
21 Server Valid Certificate Valid Privatekey ok
22 Server Empty Certificate Valid Privatekey error
23 Server Valid Certificate Empty Privatekey error
24 Server Empty Certificate Empty Privatekey error
25 Server Expired Certificate error
26
27
28Verify Client Certificate Replace
29 [Documentation] Verify client certificate replace.
30 [Tags] Verify_Client_Certificate_Replace
31 [Template] Replace Certificate Via Redfish
32
33 # cert_type cert_format expected_status
34 Client Valid Certificate Valid Privatekey ok
35 Client Empty Certificate Valid Privatekey error
36 Client Valid Certificate Empty Privatekey error
37 Client Empty Certificate Empty Privatekey error
38 Client Expired Certificate error
39
40
41*** Keywords ***
42
43Replace Certificate Via Redfish
44 [Documentation] Test 'replace certificate' operation in the BMC via Redfish.
45 [Arguments] ${cert_type} ${cert_format} ${expected_status}
46
47 # Description of argument(s):
48 # cert_type Certificate type (e.g. "Server" or "Client").
49 # cert_format Certificate file format
50 # (e.g. Valid_Certificate_Valid_Privatekey).
51 # expected_status Expected status of certificate replace Redfish
52 # request (i.e. "ok" or "error").
53
54 redfish.Login
55
56 ${time}= Set Variable If '${cert_format}' == 'Expired Certificate' -10 365
57 ${cert_file_path}= Generate Certificate File Via Openssl ${cert_format} ${time}
58
59 ${file_data}= OperatingSystem.Get Binary File ${cert_file_path}
60
61 ${certificate_uri}= Set Variable If '${cert_type}' == 'Server'
62 ... /redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/1
63 ... /redfish/v1/AccountService/LDAP/Certificates/1
64
65 ${certificate_dict}= Create Dictionary @odata.id=${certificate_uri}
66 ${payload}= Create Dictionary CertificateString=${file_data}
67 ... CertificateType=PEM CertificateUri=${certificate_dict}
68 ${resp}= redfish.Post CertificateService/Actions/CertificateService.ReplaceCertificate
69 ... body=${payload}
70
71 ${cert_file_content}= OperatingSystem.Get File ${cert_file_path}
72 ${bmc_cert_content}= redfish_utils.Get Attribute ${certificate_uri} CertificateString
73
74 Run Keyword If '${expected_status}' == 'ok'
75 ... Should Contain ${cert_file_content} ${bmc_cert_content}
76 ... ELSE
77 ... Should Not Contain ${cert_file_content} ${bmc_cert_content}
78
79
80Suite Setup Execution
81 [Documentation] Do suite setup tasks.
82
83 # Create certificate sub-directory in current working directory.
84 Create Directory certificate_dir
85
86
87Test Teardown Execution
88 [Documentation] Do the post test teardown.
89
90 FFDC On Test Case Fail
91 redfish.Logout
92