1a87b1b1fSAnves Kumar rayankula*** Settings ***
2a87b1b1fSAnves Kumar rayankulaDocumentation     Test root user expire password.
3a87b1b1fSAnves Kumar rayankula
4a87b1b1fSAnves Kumar rayankulaResource          ../lib/resource.robot
5a9d9341cSshrsuman123Resource          ../gui/lib/gui_resource.robot
6a87b1b1fSAnves Kumar rayankulaResource          ../lib/ipmi_client.robot
7a9d9341cSshrsuman123Resource          ../lib/bmc_redfish_utils.robot
8a87b1b1fSAnves Kumar rayankulaLibrary           ../lib/bmc_ssh_utils.py
9a87b1b1fSAnves Kumar rayankulaLibrary           SSHLibrary
10a87b1b1fSAnves Kumar rayankula
114d4ef99fSGeorge KeishingTest Setup       Set Account Lockout Threshold
12e6c745acSAnves Kumar rayankula
1368f985b3SAnves Kumar rayankula*** Variables ***
149f42121dSAnvesh Kumar
1568f985b3SAnves Kumar rayankula# If user re-tries more than 5 time incorrectly, the user gets locked for 5 minutes.
1668f985b3SAnves Kumar rayankula${default_lockout_duration}   ${300}
1768f985b3SAnves Kumar rayankula
18a87b1b1fSAnves Kumar rayankula
19a87b1b1fSAnves Kumar rayankula*** Test Cases ***
20a87b1b1fSAnves Kumar rayankula
21a87b1b1fSAnves Kumar rayankulaExpire Root Password And Check IPMI Access Fails
22a87b1b1fSAnves Kumar rayankula    [Documentation]   Expire root user password and expect an error while access via IPMI.
23a87b1b1fSAnves Kumar rayankula    [Tags]  Expire_Root_Password_And_Check_IPMI_Access_Fails
2468f985b3SAnves Kumar rayankula    [Teardown]  Test Teardown Execution
25a87b1b1fSAnves Kumar rayankula
26a87b1b1fSAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
27a87b1b1fSAnves Kumar rayankula
28a87b1b1fSAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
29a87b1b1fSAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
30a87b1b1fSAnves Kumar rayankula
31a87b1b1fSAnves Kumar rayankula    ${status}=  Run Keyword And Return Status   Run External IPMI Standard Command  lan print -v
32a87b1b1fSAnves Kumar rayankula    Should Be Equal  ${status}  ${False}
33a87b1b1fSAnves Kumar rayankula
345df05f7dSAnves Kumar rayankula
355df05f7dSAnves Kumar rayankulaExpire Root Password And Check SSH Access Fails
365df05f7dSAnves Kumar rayankula    [Documentation]   Expire root user password and expect an error while access via SSH.
375df05f7dSAnves Kumar rayankula    [Tags]  Expire_Root_Password_And_Check_SSH_Access_Fails
3868f985b3SAnves Kumar rayankula    [Teardown]  Test Teardown Execution
395df05f7dSAnves Kumar rayankula
405df05f7dSAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
415df05f7dSAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
425df05f7dSAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
435df05f7dSAnves Kumar rayankula
445df05f7dSAnves Kumar rayankula    ${status}=  Run Keyword And Return Status
455df05f7dSAnves Kumar rayankula    ...  Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
465df05f7dSAnves Kumar rayankula    Should Be Equal  ${status}  ${False}
475df05f7dSAnves Kumar rayankula
485df05f7dSAnves Kumar rayankula
4967921144SAnves Kumar rayankulaExpire And Change Root User Password And Access Via SSH
5067921144SAnves Kumar rayankula    [Documentation]   Expire and change root user password and access via SSH.
51*b98036a9SGeorge Keishing    [Tags]  Expire_And_Change_Root_User_Password_And_Access_Via_SSH
5267921144SAnves Kumar rayankula    [Teardown]  Run Keywords  Wait Until Keyword Succeeds  1 min  10 sec
5367921144SAnves Kumar rayankula    ...  Restore Default Password For Root User  AND  FFDC On Test Case Fail
5467921144SAnves Kumar rayankula
5567921144SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
5667921144SAnves Kumar rayankula
5767921144SAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
5867921144SAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
5967921144SAnves Kumar rayankula
609f42121dSAnvesh Kumar    Redfish.Login
6167921144SAnves Kumar rayankula    # Change to a valid password.
6267921144SAnves Kumar rayankula    ${resp}=  Redfish.Patch  /redfish/v1/AccountService/Accounts/${OPENBMC_USERNAME}
6367921144SAnves Kumar rayankula    ...  body={'Password': '0penBmc123'}  valid_status_codes=[${HTTP_OK}]
6467921144SAnves Kumar rayankula
6567921144SAnves Kumar rayankula    # Verify login with the new password through SSH.
6667921144SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  0penBmc123
6767921144SAnves Kumar rayankula
6867921144SAnves Kumar rayankula
6967921144SAnves Kumar rayankulaExpire Root Password And Update Bad Password Length Via Redfish
7067921144SAnves Kumar rayankula   [Documentation]  Expire root password and update bad password via Redfish and expect an error.
7167921144SAnves Kumar rayankula   [Tags]  Expire_Root_Password_And_Update_Bad_Password_Length_Via_Redfish
7267921144SAnves Kumar rayankula   [Teardown]  Run Keywords  Wait Until Keyword Succeeds  1 min  10 sec
7367921144SAnves Kumar rayankula   ...  Restore Default Password For Root User  AND  FFDC On Test Case Fail
7467921144SAnves Kumar rayankula
7567921144SAnves Kumar rayankula   Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
7667921144SAnves Kumar rayankula   ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
7767921144SAnves Kumar rayankula   Should Contain  ${output}  password expiry information changed
7867921144SAnves Kumar rayankula
799f42121dSAnvesh Kumar   Redfish.Login
8067921144SAnves Kumar rayankula   ${status}=  Run Keyword And Return Status
8167921144SAnves Kumar rayankula   ...  Redfish.Patch  /redfish/v1/AccountService/Accounts/${OPENBMC_USERNAME}
8267921144SAnves Kumar rayankula   ...  body={'Password': '0penBmc0penBmc0penBmc'}
8367921144SAnves Kumar rayankula   Should Be Equal  ${status}  ${False}
84a87b1b1fSAnves Kumar rayankula
859f42121dSAnvesh Kumar
869f42121dSAnvesh KumarExpire And Change Root User Password Via Redfish And Verify
879f42121dSAnvesh Kumar   [Documentation]   Expire and change root user password via Redfish and verify.
889f42121dSAnvesh Kumar   [Tags]  Expire_And_Change_Root_User_Password_Via_Redfish_And_Verify
899f42121dSAnvesh Kumar   [Teardown]  Run Keywords  FFDC On Test Case Fail  AND
909f42121dSAnvesh Kumar   ...  Wait Until Keyword Succeeds  1 min  10 sec
919f42121dSAnvesh Kumar   ...  Restore Default Password For Root User
929f42121dSAnvesh Kumar
939f42121dSAnvesh Kumar   Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
949f42121dSAnvesh Kumar
959f42121dSAnvesh Kumar   ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
969f42121dSAnvesh Kumar   Should Contain  ${output}  password expiry information changed
979f42121dSAnvesh Kumar
98a9d9341cSshrsuman123   Verify User Password Expired Using Redfish  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
999f42121dSAnvesh Kumar   # Change to a valid password.
1009f42121dSAnvesh Kumar   Redfish.Patch  /redfish/v1/AccountService/Accounts/${OPENBMC_USERNAME}
1019f42121dSAnvesh Kumar   ...  body={'Password': '0penBmc123'}
1029f42121dSAnvesh Kumar   Redfish.Logout
1039f42121dSAnvesh Kumar
1049f42121dSAnvesh Kumar   # Verify login with the new password.
1059f42121dSAnvesh Kumar   Redfish.Login  ${OPENBMC_USERNAME}  0penBmc123
1069f42121dSAnvesh Kumar
1079f42121dSAnvesh Kumar
108322e3aa9SAnves Kumar rayankulaVerify Error While Creating User With Expired Password
109322e3aa9SAnves Kumar rayankula    [Documentation]  Expire root password and expect an error while creating new user.
110322e3aa9SAnves Kumar rayankula    [Tags]  Verify_Error_While_Creating_User_With_Expired_Password
111322e3aa9SAnves Kumar rayankula    [Teardown]  Run Keywords  Wait Until Keyword Succeeds  1 min  10 sec
112322e3aa9SAnves Kumar rayankula    ...  Restore Default Password For Root User  AND  FFDC On Test Case Fail
113322e3aa9SAnves Kumar rayankula
114322e3aa9SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
115322e3aa9SAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
116322e3aa9SAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
117322e3aa9SAnves Kumar rayankula
118a9d9341cSshrsuman123    Verify User Password Expired Using Redfish  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
119322e3aa9SAnves Kumar rayankula    Redfish.Login
120322e3aa9SAnves Kumar rayankula    ${payload}=  Create Dictionary
121322e3aa9SAnves Kumar rayankula    ...  UserName=admin_user  Password=TestPwd123  RoleId=Administrator  Enabled=${True}
122322e3aa9SAnves Kumar rayankula    Redfish.Post  /redfish/v1/AccountService/Accounts/  body=&{payload}
123322e3aa9SAnves Kumar rayankula    ...  valid_status_codes=[${HTTP_FORBIDDEN}]
124322e3aa9SAnves Kumar rayankula
125322e3aa9SAnves Kumar rayankula
1269233ce15SAnves Kumar rayankulaExpire And Change Root Password Via GUI
1279233ce15SAnves Kumar rayankula    [Documentation]  Expire and change root password via GUI.
1289233ce15SAnves Kumar rayankula    [Tags]  Expire_And_Change_Root_Password_Via_GUI
129a9d9341cSshrsuman123    [Setup]  Launch Browser And Login GUI
130a9d9341cSshrsuman123    [Teardown]  Run Keywords  Logout GUI  AND  Close Browser
1319233ce15SAnves Kumar rayankula    ...  AND  Restore Default Password For Root User  AND  FFDC On Test Case Fail
1329233ce15SAnves Kumar rayankula
1339233ce15SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
1349233ce15SAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
1359233ce15SAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
1369233ce15SAnves Kumar rayankula
137a9d9341cSshrsuman123    Wait Until Page Contains Element  ${xpath_root_button_menu}
138a9d9341cSshrsuman123    Click Element  ${xpath_root_button_menu}
139a9d9341cSshrsuman123    Click Element  ${xpath_profile_settings}
140a9d9341cSshrsuman123    Wait Until Page Contains  Change password
141a9d9341cSshrsuman123
1429233ce15SAnves Kumar rayankula    # Change valid password.
1439233ce15SAnves Kumar rayankula    Input Text  ${xpath_input_password}  0penBmc123
1449233ce15SAnves Kumar rayankula    Input Text  ${xpath_input_confirm_password}  0penBmc123
145a9d9341cSshrsuman123    Click Button  ${xpath_profile_save_button}
146a9d9341cSshrsuman123    Wait Until Page Contains  Successfully saved account settings.
147a9d9341cSshrsuman123    Wait Until Page Does Not Contain  Successfully saved account settings.  timeout=20
148a9d9341cSshrsuman123    Logout GUI
1499233ce15SAnves Kumar rayankula
1509233ce15SAnves Kumar rayankula    # Verify valid password.
151a9d9341cSshrsuman123    Login GUI  ${OPENBMC_USERNAME}  0penBmc123
1529233ce15SAnves Kumar rayankula    Redfish.Login  ${OPENBMC_USERNAME}  0penBmc123
1539233ce15SAnves Kumar rayankula
1549233ce15SAnves Kumar rayankula
15568f985b3SAnves Kumar rayankulaVerify Maximum Failed Attempts And Check Root User Account Locked
15668f985b3SAnves Kumar rayankula    [Documentation]  Verify maximum failed attempts and locks out root user account.
15768f985b3SAnves Kumar rayankula    [Tags]  Verify_Maximum_Failed_Attempts_And_Check_Root_User_Account_Locked
1584d4ef99fSGeorge Keishing    [Setup]   Set Account Lockout Threshold  account_lockout_threshold=${5}
15968f985b3SAnves Kumar rayankula
16068f985b3SAnves Kumar rayankula    # Make maximum failed login attempts.
16168f985b3SAnves Kumar rayankula    Repeat Keyword  ${5} times
16268f985b3SAnves Kumar rayankula    ...  Run Keyword And Expect Error  InvalidCredentialsError*  Redfish.Login  root  0penBmc123
16368f985b3SAnves Kumar rayankula
16468f985b3SAnves Kumar rayankula    # Verify that legitimate login fails due to lockout.
16568f985b3SAnves Kumar rayankula    Run Keyword And Expect Error  InvalidCredentialsError*
16668f985b3SAnves Kumar rayankula    ...  Redfish.Login  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
16768f985b3SAnves Kumar rayankula
16868f985b3SAnves Kumar rayankula    # Wait for lockout duration to expire and then verify that login works.
16968f985b3SAnves Kumar rayankula    Sleep  ${default_lockout_duration}s
17068f985b3SAnves Kumar rayankula    Redfish.Login
17168f985b3SAnves Kumar rayankula    Redfish.Logout
17268f985b3SAnves Kumar rayankula
173c46a8960SAnves Kumar rayankulaVerify New Password Persistency After BMC Reboot
174c46a8960SAnves Kumar rayankula    [Documentation]  Verify new password persistency after BMC reboot.
175c46a8960SAnves Kumar rayankula    [Tags]  Verify_New_Password_Persistency_After_BMC_Reboot
176e6c745acSAnves Kumar rayankula    [Teardown]  Test Teardown Execution
177c46a8960SAnves Kumar rayankula
178c46a8960SAnves Kumar rayankula    Redfish.Login
179e6c745acSAnves Kumar rayankula
180e6c745acSAnves Kumar rayankula    # Make sure the user account in question does not already exist.
181e6c745acSAnves Kumar rayankula    Redfish.Delete  /redfish/v1/AccountService/Accounts/admin_user
182e6c745acSAnves Kumar rayankula    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NOT_FOUND}]
183e6c745acSAnves Kumar rayankula
184e6c745acSAnves Kumar rayankula    # Create specified user.
185e6c745acSAnves Kumar rayankula    ${payload}=  Create Dictionary
186e6c745acSAnves Kumar rayankula    ...  UserName=admin_user  Password=TestPwd123  RoleId=Administrator  Enabled=${True}
187e6c745acSAnves Kumar rayankula    Redfish.Post  /redfish/v1/AccountService/Accounts/  body=&{payload}
188e6c745acSAnves Kumar rayankula    ...  valid_status_codes=[${HTTP_CREATED}]
189e6c745acSAnves Kumar rayankula    Redfish.Logout
190e6c745acSAnves Kumar rayankula
191e6c745acSAnves Kumar rayankula    Redfish.Login  admin_user  TestPwd123
192e6c745acSAnves Kumar rayankula
193c46a8960SAnves Kumar rayankula    # Change to a valid password.
194e6c745acSAnves Kumar rayankula    Redfish.Patch  /redfish/v1/AccountService/Accounts/admin_user
195c46a8960SAnves Kumar rayankula    ...  body={'Password': '0penBmc123'}
196c46a8960SAnves Kumar rayankula
197c46a8960SAnves Kumar rayankula    # Reboot BMC and verify persistency.
198e6c745acSAnves Kumar rayankula    Redfish OBMC Reboot (off)
199c46a8960SAnves Kumar rayankula
200c46a8960SAnves Kumar rayankula    # verify new password
201e6c745acSAnves Kumar rayankula    Redfish.Login  admin_user  0penBmc123
202c46a8960SAnves Kumar rayankula
20368f985b3SAnves Kumar rayankula
204a87b1b1fSAnves Kumar rayankula*** Keywords ***
205a87b1b1fSAnves Kumar rayankula
2064d4ef99fSGeorge KeishingSet Account Lockout Threshold
207e6c745acSAnves Kumar rayankula   [Documentation]  Set user account lockout threshold.
208a9d9341cSshrsuman123   [Arguments]  ${account_lockout_threshold}=${0}  ${account_lockout_duration}=${50}
209e6c745acSAnves Kumar rayankula
210e6c745acSAnves Kumar rayankula   # Description of argument(s):
211e6c745acSAnves Kumar rayankula   # account_lockout_threshold    Set lockout threshold value.
212a9d9341cSshrsuman123   # account_lockout_duration     Set lockout duration value.
213a87b1b1fSAnves Kumar rayankula
214a87b1b1fSAnves Kumar rayankula   Redfish.login
215a9d9341cSshrsuman123   ${payload}=  Create Dictionary  AccountLockoutThreshold=${account_lockout_threshold}
216a9d9341cSshrsuman123   ...  AccountLockoutDuration=${account_lockout_duration}
217a9d9341cSshrsuman123   Redfish.Patch  /redfish/v1/AccountService/  body=&{payload}
218e6c745acSAnves Kumar rayankula   gen_robot_valid.Valid Length  OPENBMC_PASSWORD  min_length=8
2199f42121dSAnvesh Kumar   Redfish.Logout
2209f42121dSAnvesh Kumar
221a87b1b1fSAnves Kumar rayankulaRestore Default Password For Root User
222a87b1b1fSAnves Kumar rayankula    [Documentation]  Restore default password for root user (i.e. 0penBmc).
223a87b1b1fSAnves Kumar rayankula
224a87b1b1fSAnves Kumar rayankula    # Set default password for root user.
22567921144SAnves Kumar rayankula    Redfish.Patch  /redfish/v1/AccountService/Accounts/${OPENBMC_USERNAME}
22667921144SAnves Kumar rayankula    ...   body={'Password': '${OPENBMC_PASSWORD}'}  valid_status_codes=[${HTTP_OK}]
227a87b1b1fSAnves Kumar rayankula    # Verify that root user is able to run Redfish command using default password.
2289f42121dSAnvesh Kumar    Redfish.Logout
2299f42121dSAnvesh Kumar
2309f42121dSAnvesh Kumar
2319f42121dSAnvesh KumarTest Teardown Execution
2329f42121dSAnvesh Kumar    [Documentation]  Do test teardown task.
2339f42121dSAnvesh Kumar
2349f42121dSAnvesh Kumar    Redfish.Login
2359f42121dSAnvesh Kumar    Wait Until Keyword Succeeds  1 min  10 sec  Restore Default Password For Root User
2369f42121dSAnvesh Kumar    Redfish.Logout
2374d4ef99fSGeorge Keishing    Set Account Lockout Threshold  account_lockout_threshold=${5}
23868f985b3SAnves Kumar rayankula    FFDC On Test Case Fail
239