1*** Settings ***
2
3Documentation  Test OpenBMC GUI "Certificates" sub-menu of "Security and access".
4
5Resource        ../../lib/gui_resource.robot
6Resource        ../../../lib/certificate_utils.robot
7
8Suite Setup     Suite Setup Execution
9Suite Teardown  Close Browser
10Test Setup      Test Setup Execution
11
12Force Tags      Certificates_Sub_Menu
13
14*** Variables ***
15
16${xpath_certificate_heading}       //h1[text()="Certificates"]
17${xpath_add_certificate_button}    //button[contains(text(),"Add new certificate")]
18${xpath_generate_csr_button}       //*[@data-test-id='certificates-button-generateCsr']
19${xpath_generate_csr_heading}      //h5[contains(text(), "Generate a Certificate Signing Request")]
20${xpath_select_certificate_type}   //*[@data-test-id='modalGenerateCsr-select-certificateType']
21${xpath_select_country}            //*[@data-test-id='modalGenerateCsr-select-country']
22${xpath_input_state}               //*[@data-test-id='modalGenerateCsr-input-state']
23${xpath_input_city}                //*[@data-test-id='modalGenerateCsr-input-city']
24${xpath_input_company_name}        //*[@data-test-id='modalGenerateCsr-input-companyName']
25${xpath_input_company_unit}        //*[@data-test-id='modalGenerateCsr-input-companyUnit']
26${xpath_input_common_name}         //*[@data-test-id='modalGenerateCsr-input-commonName']
27${xpath_input_challenge_password}  //*[@data-test-id='modalGenerateCsr-input-challengePassword']
28${xpath_input_contact_person}      //*[@data-test-id='modalGenerateCsr-input-contactPerson']
29${xpath_input_email_address}       //*[@data-test-id='modalGenerateCsr-input-emailAddress']
30${xpath_generate_csr_submit}       //*[@data-test-id='modalGenerateCsr-button-ok']
31${xpath_csr_cancel_button}         //button[contains(text(),"Cancel")]
32${xpath_input_alternate_name}      //input[@id='alternate-name']
33${xpath_select_algorithm_button}   //*[@data-test-id='modalGenerateCsr-select-keyPairAlgorithm']
34
35*** Test Cases ***
36
37Verify Navigation To Certificate Page
38    [Documentation]  Verify navigation to certificate page.
39    [Tags]  Verify_Navigation_To_Certificate_Page
40
41    Page Should Contain Element  ${xpath_certificate_heading}
42
43
44Verify Existence Of All Sections In Certificate Page
45    [Documentation]  Verify existence of all sections in certificate page.
46    [Tags]  Verify_Existence_Of_All_Sections_In_Certificate_Page
47
48    Page should contain  Certificate
49    Page should contain  Issued by
50    Page should contain  Issued to
51    Page should contain  Valid from
52    Page should contain  Valid until
53
54
55Verify Existence Of Add Certificate Button
56    [Documentation]  Verify existence of add certificate button.
57    [Tags]  Verify_Existence_Of_Add_Certificate_Button
58
59    Page Should Contain Element  ${xpath_add_certificate_button}
60
61Verify Generate CSR Certificate Button
62    [Documentation]  Verify existence of all the fields of CSR generation.
63    [Tags]  Verify_Generate_CSR_Certificate_Button
64    [Teardown]  Click Element  ${xpath_csr_cancel_button}
65
66    Page Should Contain Element  ${xpath_generate_csr_button}
67    Click Element  ${xpath_generate_csr_button}
68    Wait Until Page Contains Element  ${xpath_generate_csr_heading}
69    Page Should Contain Element  ${xpath_select_certificate_type}
70    Page Should Contain Element  ${xpath_select_country}
71    Page Should Contain Element  ${xpath_input_state}
72    Page Should Contain Element  ${xpath_input_city}
73    Page Should Contain Element  ${xpath_input_company_name}
74    Page Should Contain Element  ${xpath_input_common_name}
75    Page Should Contain Element  ${xpath_input_challenge_password}
76    Page Should Contain Element  ${xpath_input_contact_person}
77    Page Should Contain Element  ${xpath_input_email_address}
78    Page Should Contain Element  ${xpath_input_alternate_name}
79    Page Should Contain Element  ${xpath_select_algorithm_button}
80    Page Should Contain Element  ${xpath_generate_csr_submit}
81
82
83Verify Installed CA Certificate
84    [Documentation]  Install CA certificate and verify the same via GUI.
85    [Tags]  Verify_Installed_CA_Certificate
86
87    Delete All CA Certificate Via Redfish
88
89    # Install CA certificate via Redfish.
90    ${file_data}=  Generate Certificate File Data  CA
91    Install And Verify Certificate Via Redfish  CA  Valid Certificate  ok
92
93    # Refresh GUI and verify CA certificate availability in GUI.
94    Refresh GUI
95    Wait Until Page Contains  CA Certificate  timeout=10
96
97
98Verify Installed HTTPS Certificate
99    [Documentation]  Install HTTPS certificate via Redfish and verify it in GUI.
100    [Tags]  Verify_Installed_HTTPS_Certificate
101
102    # Replace HTTPS certificate.
103    Redfish.Login
104    Replace Certificate Via Redfish  Server   Valid Certificate Valid Privatekey  ok
105    Redfish.Logout
106
107    # Verify certificate is available in GUI.
108    Wait Until Page Contains  HTTPS Certificate  timeout=10
109
110
111Verify Installed LDAP Certificate
112    [Documentation]  Install LDAP certificate via Redfish and verify it in GUI.
113    [Tags]  Verify_Installed_LDAP_Certificate
114
115    Redfish.Login
116    Delete Certificate Via BMC CLI  Client
117
118    # Install LDAP certificate.
119    ${file_data}=  Generate Certificate File Data  Client
120    Install And Verify Certificate Via Redfish  Client  Valid Certificate Valid Privatekey  ok
121    Redfish.Logout
122
123    # Refresh GUI and verify certificate is available in GUI.
124    Refresh GUI
125    Wait Until Page Contains  LDAP Certificate  timeout=10
126
127
128*** Keywords ***
129
130Generate Certificate File Data
131    [Documentation]  Generate data of certificate file.
132
133    [Arguments]  ${cert_type}
134
135    # Description of Arguments(s):
136    # cert_type      Certificate type (e.g. "Client" or  "CA").
137
138    ${cert_file_path}=  Run Keyword If  '${cert_type}' == 'Client' or 'Server'
139    ...    Generate Certificate File Via Openssl  Valid Certificate Valid Privatekey
140    ...  ELSE IF  '${cert_type}' == 'CA'
141    ...    Generate Certificate File Via Openssl  Valid Certificate
142    ${bytes}=  OperatingSystem.Get Binary File  ${cert_file_path}
143    ${file_data}=  Decode Bytes To String  ${bytes}  UTF-8
144
145    [return]  ${file_data}
146
147
148Test Setup Execution
149    [Documentation]  Do test case setup tasks.
150
151    Click Element  ${xpath_secuity_and_accesss_menu}
152    Click Element  ${xpath_certificates_sub_menu}
153    Wait Until Keyword Succeeds  30 sec  10 sec  Location Should Contain  certificates
154    Wait Until Element Is Not Visible   ${xpath_page_loading_progress_bar}  timeout=30
155
156
157Suite Setup Execution
158    [Documentation]  Do test case suite setup tasks.
159
160    Launch Browser And Login GUI
161    Create Directory  certificate_dir
162