blob: 63d024028233f1bbe1f4895a361b8d6fe7044be1 [file] [log] [blame]
*** Settings ***
Documentation Test OpenBMC GUI "Manage user account" sub-menu of
... "Users".
Resource ../../lib/resource.robot
Test Setup Test Setup Execution
Test Teardown Close Browser
*** Variables ***
${xpath_input_username} //input[@name='UserName']
${xpath_input_password} //input[@name='Password']
${xpath_input_retype_password} //input[@name='VerifyPassword']
${xpath_input_user_role} //select[@id='role']
${xpath_input_enabled_checkbox} //label[@for="user-manage__enabled"]
${xpath_input_lockout_time} //input[@id='lockoutTime']
${xpath_input_failed_login_attempts} //input[@id='lockoutThreshold']
${xpath_select_manage_users} //a[contains(text(), "Manage user account")]
${xpath_select_users} //button[contains(@class, "users")]
${xpath_save_setting_button} //button[text() ="Save settings"]
${xpath_create_user_button} //button[text() ="Create user"]
${xpath_edit_button} //button[text() ="Edit"]
${xpath_delete_button} //button[text() ="Delete"]
${label} //label[@class="control-check"]
${xpath_edit_save_button} //*[@id="user-accounts"]/form/section/div[7]/button[2]
&{user_password} testUser1=testUserPwd1 root=0penBmc
&{action_msg_relation} add=User has been created successfully
... modify=User has been updated successfully
... add_dup=Username exists
&{user_invalid_password} root=rootPwd1
${max_num_users} ${15}
${xpath_table_base} //*[@id="user-accounts"]/div[4]/div[2]
&{user_table_column_xpath_mapping} Username=/div[1]
... Enabled=/div[2]
... Role=/div[3]
... Edit=/div[5]/button[1]
... Delete=/div[5]/button[2]
*** Test Cases ***
Verify Existence Of All Section In User Page
[Documentation] Verify existence of all sections in user page.
[Tags] Verify_Existence_Of_All_Section_In_User_Page
Page should contain User account properties
Page should contain User account information
Page should contain User account settings
Verify Existence Of All Input Boxes In User Page
[Documentation] Verify existence of all input boxes in user page.
[Tags] Verify_Existence_Of_All_Input_Boxes_In_User_Page
# Input boxes under user account settings
Page Should Contain Element ${xpath_input_username}
Page Should Contain Element ${xpath_input_password}
Page Should Contain Element ${xpath_input_retype_password}
Page Should Contain Element ${xpath_input_user_role}
Page Should Contain Element ${xpath_input_enabled_checkbox}
# Input boxes under user account properties
Page Should Contain Element ${xpath_input_lockout_time}
Page Should Contain Element ${xpath_input_failed_login_attempts}
Verify Existence Of All Button In User Page
[Documentation] Verify existence of all button in user page.
[Tags] Verify_Existence_Of_All_Button_In_User_Page
# Buttons under user account properties
Page Should Contain Element ${xpath_save_setting_button}
# Buttons under user account settings
Page Should Contain Element ${xpath_create_user_button}
# Buttons under user account properties
Page Should Contain Element ${xpath_edit_button}
Page Should Contain Element ${xpath_delete_button}
Verify Error When Duplicate User Is Created
[Documentation] Verify error when duplicate user is created.
[Tags] Verify_Error_When_Duplicate_User_Is_Created
[Setup] Run Keywords Test Setup Execution AND Delete Given Users
Add Or Modify User root &{user_password}[root] action=add_dup
Delete User And Verify
[Documentation] Delete user and verify.
[Tags] Delete_User_And_Verify
[Setup] Run Keywords Test Setup Execution AND Delete Given Users
Add Or Modify User testUser1 &{user_password}[testUser1]
Delete Given Users delete_user=testUser1
Page Should Not Contain testUser1
Verify Invalid Password Error
[Documentation] Verify the error message when user logs in with invalid password.
[Tags] Verify_Invalid_Password_Error
[Setup] Run Keywords Test Setup Execution AND Delete Given Users
LogOut OpenBMC GUI
Login And Verify Message root &{user_invalid_password}[root] Invalid username or password
Edit And Verify User Property
[Documentation] Edit and verify the user property.
[Tags] Edit_And_Verify_User_Property
[Setup] Run Keywords Test Setup Execution AND Delete Given Users
Add Or Modify User testUser1 &{user_password}[testUser1] User
Reload Page
Edit User Role testUser1 &{user_password}[testUser1] Callback
${user_role}= Get User Property Value testUser1 Role
Should Be Equal ${user_role} Callback
*** Keywords ***
Test Setup Execution
[Documentation] Do test case setup tasks.
Launch Browser And Login OpenBMC GUI
Click Button ${xpath_select_users}
Sleep 2s
Wait Until Page Contains Element ${xpath_select_manage_users}
Click Element ${xpath_select_manage_users}
Wait Until Page Contains User account information
Add Or Modify User
[Documentation] Create or edit user.
[Arguments] ${username} ${password} ${role}=Administrator ${enabled}=${True}
... ${action}=add
# Description of argument(s):
# username Name of the user to be created.
# role Role of the new user.
# enabled If True, User is enabled (Default), False, User is disabled.
# action add - Creates a new user.
# modify - Edits an existing user.
# add_dup - Tries to add a duplicate user and verifies the error message.
Run Keyword If '${action}' == 'add' or '${action}' == 'add_dup'
... Input Text ${xpath_input_username} ${username}
Input Password ${xpath_input_password} ${password}
Input Password ${xpath_input_retype_password} ${password}
Select From List By Value ${xpath_input_user_role} ${role}
Run Keyword If '${enabled}' == 'True' Click Element ${xpath_input_enabled_checkbox}
Run Keyword If '${action}' == 'modify'
... Click Button ${xpath_edit_save_button}
... ELSE Click Button ${xpath_create_user_button}
Capture Page Screenshot
Page Should Contain &{action_msg_relation}[${action}]
Delete Given Users
[Documentation] Delete given users.
[Arguments] ${delete_user}=nonRoot
# Description of argument(s):
# delete_user values - nonRoot/username
# If nonRoot - Deletes all non-root users,
# username - Deletes the given user.
Wait Until Page Contains root
Run Keyword If '${delete_user}' != 'nonRoot' Page Should Contain ${delete_user}
# Row id that gets deleted in every iteration.
${deleting_row_id}= Set Variable 1
:FOR ${row} IN RANGE 1 ${max_num_users+1}
\ ${xpath_user}= Get Xpath For User Table Attribute Username ${row}
\ ${status}= Run Keyword And Return Status Page Should Contain Element ${xpath_user}
\ Exit For Loop If '${status}' == 'False'
\ ${user}= Get Text ${xpath_user}
\ ${deleting_row_id} Set Variable If '${user}' == 'root' or '${deleting_row_id}' == '2'
\ ... 2 1
\ Continue For Loop If '${user}' == 'root'
\ ${xpath_delete_user} Run Keyword If '${user}' == '${delete_user}' or '${delete_user}' == 'nonRoot'
\ ... Get Xpath For User Table Attribute Delete ${deleting_row_id}
\ Run Keyword If '${user}' == '${delete_user}' or '${delete_user}' == 'nonRoot'
\ ... Run Keywords Click Button ${xpath_delete_user}
\ ... AND Page Should Contain User has been deleted successfully
\ ... AND Reload Page
\ ... AND Exit For Loop If '${user}' == '${delete_user}'
Get User Property Value
[Documentation] Return property value for the given user.
[Arguments] ${username} ${property}=Role
# Description of argument(s):
# username BMC Username.
# property User property (e.g. "Role" or "Enabled").
# Maximum user limit is 15. Hence iterating only 15 times.
:FOR ${row_num} IN RANGE 1 ${max_num_users+1}
\ ${xpath_user}= Get Xpath For User Table Attribute Username ${row_num}
\ Page Should Contain Element ${xpath_user}
\ ${xpath_property}= Get Xpath For User Table Attribute ${property} ${row_num}
\ ${user}= Get Text ${xpath_user}
\ Run Keyword And Return If '${user}' == '${username}' Get Text ${xpath_property}
Login And Verify Message
[Documentation] Verifies the error message displayed on screen while logging in.
[Arguments] ${username} ${password} ${msg}
# Description of argument(s):
# username BMC Username.
# password BMC Password.
# msg Message which is expected to be found on login page after login attempt.
Input Text ${xpath_textbox_username} ${username}
Input Password ${xpath_textbox_password} ${password}
Click Element ${xpath_button_login}
Page Should Contain ${msg}
Edit User Role
[Documentation] Change the role of user to the given value.
[Arguments] ${username} ${password} ${user_role}
# Description of argument(s):
# username BMC Username.
# password BMC Password.
# user_role The user role to be assigned ("Administrator", "User", "Operator", "Callback").
# Maximum user limit is 15. Hence iterating only 15 times.
:FOR ${row_num} IN RANGE 1 ${max_num_users+1}
\ ${xpath_user}= Get Xpath For User Table Attribute Username ${row_num}
\ Page Should Contain Element ${xpath_user}
\ ${xpath_edit_user}= Get Xpath For User Table Attribute Edit ${row_num}
\ ${user}= Get Text ${xpath_user}
\ Run Keyword If '${user}' == '${username}' Run Keywords Click Element ${xpath_edit_user}
\ ... AND Add Or Modify user ${username} ${password} ${user_role} action=modify
\ ... AND Exit For Loop
Get Xpath For User Table Attribute
[Documentation] Get xpath for given user table attribute.
[Arguments] ${attribute} ${row_num}
# Description of argument(s):
# attribute User table attribute ("Username", "Enabled", "Role", "Edit", "Delete").
# row_num Row number.
[Return] ${xpath_table_base}/div[${row_num}]&{user_table_column_xpath_mapping}[${attribute}]