1a87b1b1fSAnves Kumar rayankula*** Settings ***
2a87b1b1fSAnves Kumar rayankulaDocumentation     Test root user expire password.
3a87b1b1fSAnves Kumar rayankula
4a87b1b1fSAnves Kumar rayankulaResource          ../lib/resource.robot
59233ce15SAnves Kumar rayankulaResource          ../gui/lib/resource.robot
6a87b1b1fSAnves Kumar rayankulaResource          ../lib/ipmi_client.robot
7a87b1b1fSAnves Kumar rayankulaLibrary           ../lib/bmc_ssh_utils.py
8a87b1b1fSAnves Kumar rayankulaLibrary           SSHLibrary
9a87b1b1fSAnves Kumar rayankula
1068f985b3SAnves Kumar rayankula*** Variables ***
119f42121dSAnvesh Kumar
1268f985b3SAnves Kumar rayankula# If user re-tries more than 5 time incorrectly, the user gets locked for 5 minutes.
1368f985b3SAnves Kumar rayankula${default_lockout_duration}   ${300}
1468f985b3SAnves Kumar rayankula
15a87b1b1fSAnves Kumar rayankula
16a87b1b1fSAnves Kumar rayankula*** Test Cases ***
17a87b1b1fSAnves Kumar rayankula
18a87b1b1fSAnves Kumar rayankulaExpire Root Password And Check IPMI Access Fails
19a87b1b1fSAnves Kumar rayankula    [Documentation]   Expire root user password and expect an error while access via IPMI.
20a87b1b1fSAnves Kumar rayankula    [Tags]  Expire_Root_Password_And_Check_IPMI_Access_Fails
2168f985b3SAnves Kumar rayankula    [Teardown]  Test Teardown Execution
22a87b1b1fSAnves Kumar rayankula
23a87b1b1fSAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
24a87b1b1fSAnves Kumar rayankula
25a87b1b1fSAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
26a87b1b1fSAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
27a87b1b1fSAnves Kumar rayankula
28a87b1b1fSAnves Kumar rayankula    ${status}=  Run Keyword And Return Status   Run External IPMI Standard Command  lan print -v
29a87b1b1fSAnves Kumar rayankula    Should Be Equal  ${status}  ${False}
30a87b1b1fSAnves Kumar rayankula
315df05f7dSAnves Kumar rayankula
325df05f7dSAnves Kumar rayankulaExpire Root Password And Check SSH Access Fails
335df05f7dSAnves Kumar rayankula    [Documentation]   Expire root user password and expect an error while access via SSH.
345df05f7dSAnves Kumar rayankula    [Tags]  Expire_Root_Password_And_Check_SSH_Access_Fails
3568f985b3SAnves Kumar rayankula    [Teardown]  Test Teardown Execution
365df05f7dSAnves Kumar rayankula
375df05f7dSAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
385df05f7dSAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
395df05f7dSAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
405df05f7dSAnves Kumar rayankula
415df05f7dSAnves Kumar rayankula    ${status}=  Run Keyword And Return Status
425df05f7dSAnves Kumar rayankula    ...  Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
435df05f7dSAnves Kumar rayankula    Should Be Equal  ${status}  ${False}
445df05f7dSAnves Kumar rayankula
455df05f7dSAnves Kumar rayankula
4667921144SAnves Kumar rayankulaExpire And Change Root User Password And Access Via SSH
4767921144SAnves Kumar rayankula    [Documentation]   Expire and change root user password and access via SSH.
4867921144SAnves Kumar rayankula    [Tags]  Expire_Root_User_Password_And_Access_Via_SSH
4967921144SAnves Kumar rayankula    [Teardown]  Run Keywords  Wait Until Keyword Succeeds  1 min  10 sec
5067921144SAnves Kumar rayankula    ...  Restore Default Password For Root User  AND  FFDC On Test Case Fail
5167921144SAnves Kumar rayankula
5267921144SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
5367921144SAnves Kumar rayankula
5467921144SAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
5567921144SAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
5667921144SAnves Kumar rayankula
579f42121dSAnvesh Kumar    Redfish.Login
5867921144SAnves Kumar rayankula    # Change to a valid password.
5967921144SAnves Kumar rayankula    ${resp}=  Redfish.Patch  /redfish/v1/AccountService/Accounts/${OPENBMC_USERNAME}
6067921144SAnves Kumar rayankula    ...  body={'Password': '0penBmc123'}  valid_status_codes=[${HTTP_OK}]
6167921144SAnves Kumar rayankula
6267921144SAnves Kumar rayankula    # Verify login with the new password through SSH.
6367921144SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  0penBmc123
6467921144SAnves Kumar rayankula
6567921144SAnves Kumar rayankula
6667921144SAnves Kumar rayankulaExpire Root Password And Update Bad Password Length Via Redfish
6767921144SAnves Kumar rayankula   [Documentation]  Expire root password and update bad password via Redfish and expect an error.
6867921144SAnves Kumar rayankula   [Tags]  Expire_Root_Password_And_Update_Bad_Password_Length_Via_Redfish
6967921144SAnves Kumar rayankula   [Teardown]  Run Keywords  Wait Until Keyword Succeeds  1 min  10 sec
7067921144SAnves Kumar rayankula   ...  Restore Default Password For Root User  AND  FFDC On Test Case Fail
7167921144SAnves Kumar rayankula
7267921144SAnves Kumar rayankula   Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
7367921144SAnves Kumar rayankula   ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
7467921144SAnves Kumar rayankula   Should Contain  ${output}  password expiry information changed
7567921144SAnves Kumar rayankula
769f42121dSAnvesh Kumar   Redfish.Login
7767921144SAnves Kumar rayankula   ${status}=  Run Keyword And Return Status
7867921144SAnves Kumar rayankula   ...  Redfish.Patch  /redfish/v1/AccountService/Accounts/${OPENBMC_USERNAME}
7967921144SAnves Kumar rayankula   ...  body={'Password': '0penBmc0penBmc0penBmc'}
8067921144SAnves Kumar rayankula   Should Be Equal  ${status}  ${False}
81a87b1b1fSAnves Kumar rayankula
829f42121dSAnvesh Kumar
839f42121dSAnvesh KumarExpire And Change Root User Password Via Redfish And Verify
849f42121dSAnvesh Kumar   [Documentation]   Expire and change root user password via Redfish and verify.
859f42121dSAnvesh Kumar   [Tags]  Expire_And_Change_Root_User_Password_Via_Redfish_And_Verify
869f42121dSAnvesh Kumar   [Teardown]  Run Keywords  FFDC On Test Case Fail  AND
879f42121dSAnvesh Kumar   ...  Wait Until Keyword Succeeds  1 min  10 sec
889f42121dSAnvesh Kumar   ...  Restore Default Password For Root User
899f42121dSAnvesh Kumar
909f42121dSAnvesh Kumar   Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
919f42121dSAnvesh Kumar
929f42121dSAnvesh Kumar   ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
939f42121dSAnvesh Kumar   Should Contain  ${output}  password expiry information changed
949f42121dSAnvesh Kumar
959f42121dSAnvesh Kumar   Redfish.Login
969f42121dSAnvesh Kumar   Verify Root Password Expired
979f42121dSAnvesh Kumar   # Change to a valid password.
989f42121dSAnvesh Kumar   Redfish.Patch  /redfish/v1/AccountService/Accounts/${OPENBMC_USERNAME}
999f42121dSAnvesh Kumar   ...  body={'Password': '0penBmc123'}
1009f42121dSAnvesh Kumar   Redfish.Logout
1019f42121dSAnvesh Kumar
1029f42121dSAnvesh Kumar   # Verify login with the new password.
1039f42121dSAnvesh Kumar   Redfish.Login  ${OPENBMC_USERNAME}  0penBmc123
1049f42121dSAnvesh Kumar
1059f42121dSAnvesh Kumar
106322e3aa9SAnves Kumar rayankulaVerify Error While Creating User With Expired Password
107322e3aa9SAnves Kumar rayankula    [Documentation]  Expire root password and expect an error while creating new user.
108322e3aa9SAnves Kumar rayankula    [Tags]  Verify_Error_While_Creating_User_With_Expired_Password
109322e3aa9SAnves Kumar rayankula    [Teardown]  Run Keywords  Wait Until Keyword Succeeds  1 min  10 sec
110322e3aa9SAnves Kumar rayankula    ...  Restore Default Password For Root User  AND  FFDC On Test Case Fail
111322e3aa9SAnves Kumar rayankula
112322e3aa9SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
113322e3aa9SAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
114322e3aa9SAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
115322e3aa9SAnves Kumar rayankula
116322e3aa9SAnves Kumar rayankula    Verify Root Password Expired
117322e3aa9SAnves Kumar rayankula    Redfish.Login
118322e3aa9SAnves Kumar rayankula    ${payload}=  Create Dictionary
119322e3aa9SAnves Kumar rayankula    ...  UserName=admin_user  Password=TestPwd123  RoleId=Administrator  Enabled=${True}
120322e3aa9SAnves Kumar rayankula    Redfish.Post  /redfish/v1/AccountService/Accounts/  body=&{payload}
121322e3aa9SAnves Kumar rayankula    ...  valid_status_codes=[${HTTP_FORBIDDEN}]
122322e3aa9SAnves Kumar rayankula
123322e3aa9SAnves Kumar rayankula
1249233ce15SAnves Kumar rayankulaExpire And Change Root Password Via GUI
1259233ce15SAnves Kumar rayankula    [Documentation]  Expire and change root password via GUI.
1269233ce15SAnves Kumar rayankula    [Tags]  Expire_And_Change_Root_Password_Via_GUI
1279233ce15SAnves Kumar rayankula    [Setup]  Run Keywords  Launch Browser And Login OpenBMC GUI
1289233ce15SAnves Kumar rayankula    [Teardown]  Run Keywords  Logout And Close Browser
1299233ce15SAnves Kumar rayankula    ...  AND  Restore Default Password For Root User  AND  FFDC On Test Case Fail
1309233ce15SAnves Kumar rayankula
1319233ce15SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
1329233ce15SAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
1339233ce15SAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
1349233ce15SAnves Kumar rayankula
1359233ce15SAnves Kumar rayankula    Click Button  ${xpath_button_user_action}
1369233ce15SAnves Kumar rayankula    Click Element  ${xpath_button_profile_settings}
1379233ce15SAnves Kumar rayankula    Page Should Contain  Change password
1389233ce15SAnves Kumar rayankula    Sleep  2s
1399233ce15SAnves Kumar rayankula    # Change valid password.
1409233ce15SAnves Kumar rayankula    Input Text  ${xpath_input_password}  0penBmc123
1419233ce15SAnves Kumar rayankula    Input Text  ${xpath_input_confirm_password}  0penBmc123
1429233ce15SAnves Kumar rayankula    Click Button  ${xpath_submit_button}
1439233ce15SAnves Kumar rayankula
1449233ce15SAnves Kumar rayankula    # Verify valid password.
1459233ce15SAnves Kumar rayankula    Open Browser With URL  ${obmc_gui_url}
1469233ce15SAnves Kumar rayankula    Login OpenBMC GUI  ${OPENBMC_USERNAME}  0penBmc123
1479233ce15SAnves Kumar rayankula    Redfish.Login  ${OPENBMC_USERNAME}  0penBmc123
1489233ce15SAnves Kumar rayankula
1499233ce15SAnves Kumar rayankula
15068f985b3SAnves Kumar rayankulaVerify Maximum Failed Attempts And Check Root User Account Locked
15168f985b3SAnves Kumar rayankula    [Documentation]  Verify maximum failed attempts and locks out root user account.
15268f985b3SAnves Kumar rayankula    [Tags]  Verify_Maximum_Failed_Attempts_And_Check_Root_User_Account_Locked
15368f985b3SAnves Kumar rayankula
15468f985b3SAnves Kumar rayankula    # Make maximum failed login attempts.
15568f985b3SAnves Kumar rayankula    Repeat Keyword  ${5} times
15668f985b3SAnves Kumar rayankula    ...  Run Keyword And Expect Error  InvalidCredentialsError*  Redfish.Login  root  0penBmc123
15768f985b3SAnves Kumar rayankula
15868f985b3SAnves Kumar rayankula    # Verify that legitimate login fails due to lockout.
15968f985b3SAnves Kumar rayankula    Run Keyword And Expect Error  InvalidCredentialsError*
16068f985b3SAnves Kumar rayankula    ...  Redfish.Login  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
16168f985b3SAnves Kumar rayankula
16268f985b3SAnves Kumar rayankula    # Wait for lockout duration to expire and then verify that login works.
16368f985b3SAnves Kumar rayankula    Sleep  ${default_lockout_duration}s
16468f985b3SAnves Kumar rayankula    Redfish.Login
16568f985b3SAnves Kumar rayankula    Redfish.Logout
16668f985b3SAnves Kumar rayankula
167*c46a8960SAnves Kumar rayankulaVerify New Password Persistency After BMC Reboot
168*c46a8960SAnves Kumar rayankula    [Documentation]  Verify new password persistency after BMC reboot.
169*c46a8960SAnves Kumar rayankula    [Tags]  Verify_New_Password_Persistency_After_BMC_Reboot
170*c46a8960SAnves Kumar rayankula    [Teardown]  Run Keywords  Restore Default Password For Root User
171*c46a8960SAnves Kumar rayankula    ...  AND  FFDC On Test Case Fail
172*c46a8960SAnves Kumar rayankula
173*c46a8960SAnves Kumar rayankula    Open Connection And Log In  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
174*c46a8960SAnves Kumar rayankula    ${output}  ${stderr}  ${rc}=  BMC Execute Command  passwd --expire ${OPENBMC_USERNAME}
175*c46a8960SAnves Kumar rayankula    Should Contain  ${output}  password expiry information changed
176*c46a8960SAnves Kumar rayankula
177*c46a8960SAnves Kumar rayankula    Redfish.Login
178*c46a8960SAnves Kumar rayankula    # Change to a valid password.
179*c46a8960SAnves Kumar rayankula    Redfish.Patch  /redfish/v1/AccountService/Accounts/${OPENBMC_USERNAME}
180*c46a8960SAnves Kumar rayankula    ...  body={'Password': '0penBmc123'}
181*c46a8960SAnves Kumar rayankula
182*c46a8960SAnves Kumar rayankula    # Reboot BMC and verify persistency.
183*c46a8960SAnves Kumar rayankula    OBMC Reboot (off)
184*c46a8960SAnves Kumar rayankula
185*c46a8960SAnves Kumar rayankula    # verify new password
186*c46a8960SAnves Kumar rayankula    Redfish.Login  ${OPENBMC_USERNAME}  0penBmc123
187*c46a8960SAnves Kumar rayankula
18868f985b3SAnves Kumar rayankula
189a87b1b1fSAnves Kumar rayankula*** Keywords ***
190a87b1b1fSAnves Kumar rayankula
19168f985b3SAnves Kumar rayankulaTest Setup Execution
192322e3aa9SAnves Kumar rayankula   [Documentation]  Suite setup  execution.
193a87b1b1fSAnves Kumar rayankula
194a87b1b1fSAnves Kumar rayankula   Redfish.login
1959f42121dSAnvesh Kumar   Redfish.Patch  /redfish/v1/AccountService/  body={"AccountLockoutThreshold": 0}
196a87b1b1fSAnves Kumar rayankula   Valid Length  OPENBMC_PASSWORD  min_length=8
1979f42121dSAnvesh Kumar   Redfish.Logout
1989f42121dSAnvesh Kumar
199a87b1b1fSAnves Kumar rayankulaRestore Default Password For Root User
200a87b1b1fSAnves Kumar rayankula    [Documentation]  Restore default password for root user (i.e. 0penBmc).
201a87b1b1fSAnves Kumar rayankula
202a87b1b1fSAnves Kumar rayankula    # Set default password for root user.
20367921144SAnves Kumar rayankula    Redfish.Patch  /redfish/v1/AccountService/Accounts/${OPENBMC_USERNAME}
20467921144SAnves Kumar rayankula    ...   body={'Password': '${OPENBMC_PASSWORD}'}  valid_status_codes=[${HTTP_OK}]
205a87b1b1fSAnves Kumar rayankula    # Verify that root user is able to run Redfish command using default password.
2069f42121dSAnvesh Kumar    Redfish.Logout
2079f42121dSAnvesh Kumar
2089f42121dSAnvesh Kumar
2099f42121dSAnvesh KumarTest Teardown Execution
2109f42121dSAnvesh Kumar    [Documentation]  Do test teardown task.
2119f42121dSAnvesh Kumar
2129f42121dSAnvesh Kumar    Redfish.Login
2139f42121dSAnvesh Kumar    Wait Until Keyword Succeeds  1 min  10 sec  Restore Default Password For Root User
2149f42121dSAnvesh Kumar    Redfish.Patch  /redfish/v1/AccountService/  body={"AccountLockoutThreshold": 5}
2159f42121dSAnvesh Kumar    Redfish.Logout
21668f985b3SAnves Kumar rayankula    FFDC On Test Case Fail
21768f985b3SAnves Kumar rayankula
2189f42121dSAnvesh Kumar
2199f42121dSAnvesh KumarVerify Root Password Expired
2209f42121dSAnvesh Kumar    [Documentation]  Checking whether root password expired or not.
2219f42121dSAnvesh Kumar
2229f42121dSAnvesh Kumar    Create Session  openbmc  ${AUTH_URI}
2239f42121dSAnvesh Kumar    ${headers}=  Create Dictionary  Content-Type=application/json
2249f42121dSAnvesh Kumar    @{credentials}=  Create List  ${OPENBMC_USERNAME}  ${OPENBMC_PASSWORD}
2259f42121dSAnvesh Kumar    ${data}=  Create Dictionary  data=@{credentials}
2269f42121dSAnvesh Kumar    ${resp}=  Post Request  openbmc  /login  data=${data}  headers=${headers}
2279f42121dSAnvesh Kumar    ${json}=  To JSON  ${resp.content}
2289f42121dSAnvesh Kumar    Should Contain  ${json["extendedMessage"]}  POST the new password
229