| *** Settings *** |
| |
| Documentation This suite is for testing Open BMC user account management. |
| ... The randomness of the string generated is limited to the |
| ... instance per test case however we end up running multiple |
| ... test and multiple iteration. This creates scenario where |
| ... the same previous user is generated. |
| ... As a good pratice, clean up all the users at the end of |
| ... test. |
| |
| Resource ../lib/rest_client.robot |
| Resource ../lib/utils.robot |
| Resource ../lib/openbmc_ffdc.robot |
| |
| Library OperatingSystem |
| Library SSHLibrary |
| Library String |
| Test Teardown Log FFDC |
| |
| *** Variables *** |
| ${RANDOM_STRING_LENGTH} ${8} |
| ${VALID_PASSWORD} abc123 |
| ${NON_EXISTING_USER} aaaaa |
| *** Test Cases *** |
| |
| Create and delete user group |
| [Documentation] ***GOOD PATH*** |
| ... This testcase is for testing user group creation |
| ... and deletion in open bmc.\n |
| |
| ${groupname} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${resp} = Create UserGroup ${groupname} |
| Should Be Equal ${resp} ok |
| ${usergroup_list} = Get GroupListUsr |
| Should Contain ${usergroup_list} ${groupname} |
| ${resp} = Delete Group ${groupname} |
| Should Be Equal ${resp} ok |
| |
| Create and delete user without group name |
| [Documentation] ***GOOD PATH*** |
| ... This testcase is for testing user creation with |
| ... without groupname in open bmc.\n |
| [Tags] Create_and_delete_user_without_group_name |
| |
| ${username} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${password} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${comment} = Generate Random String ${RANDOM_STRING_LENGTH} |
| |
| ${resp} = Create User ${comment} ${username} ${EMPTY} ${password} |
| Should Be Equal ${resp} ok |
| ${user_list} = Get UserList |
| Should Contain ${user_list} ${username} |
| |
| Login BMC ${username} ${password} |
| ${rc}= Execute Command echo Login return_stdout=False return_rc=True |
| Should Be Equal ${rc} ${0} |
| |
| ${resp} = Delete User ${username} |
| Should Be Equal ${resp} ok |
| |
| Create and delete user with user group name |
| [Documentation] ***GOOD PATH*** |
| ... This testcase is for testing user creation with |
| ... user name, password, comment and group name(user group) |
| ... in open bmc.\n |
| [Tags] Create_and_delete_user_with_user_group_name |
| |
| ${username} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${password} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${comment} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${groupname} = Generate Random String ${RANDOM_STRING_LENGTH} |
| |
| ${resp} = Create UserGroup ${groupname} |
| Should Be Equal ${resp} ok |
| ${resp} = Create User ${comment} ${username} ${groupname} ${password} |
| Should Be Equal ${resp} ok |
| ${user_list} = Get UserList |
| Should Contain ${user_list} ${username} |
| |
| Login BMC ${username} ${password} |
| ${rc}= Execute Command echo Login return_stdout=False return_rc=True |
| Should Be Equal ${rc} ${0} |
| |
| ${resp} = Delete User ${username} |
| Should Be Equal ${resp} ok |
| ${resp} = Delete Group ${groupname} |
| Should Be Equal ${resp} ok |
| |
| Create multiple users |
| [Documentation] ***GOOD PATH*** |
| ... This testcase is to verify that multiple users creation |
| ... in open bmc.\n |
| [Tags] Create_multiple_users |
| |
| : FOR ${INDEX} IN RANGE 1 10 |
| \ Log ${INDEX} |
| \ ${username} = Generate Random String ${RANDOM_STRING_LENGTH} |
| \ ${password} = Generate Random String ${RANDOM_STRING_LENGTH} |
| \ ${comment} = Generate Random String ${RANDOM_STRING_LENGTH} |
| \ ${resp} = Create User ${comment} ${username} ${EMPTY} ${password} |
| \ Should Be Equal ${resp} ok |
| \ ${user_list} = Get UserList |
| \ Should Contain ${user_list} ${username} |
| \ Login BMC ${username} ${password} |
| \ ${rc}= Execute Command echo Login return_stdout=False return_rc=True |
| \ Should Be Equal ${rc} ${0} |
| |
| Create and delete user without password |
| [Documentation] ***GOOD PATH*** |
| ... This testcase is to create and delete a user without password |
| ... in open bmc.\n |
| [Tags] Create_and_delete_user_without_password |
| |
| ${username} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${password} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${comment} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${groupname} = Generate Random String ${RANDOM_STRING_LENGTH} |
| |
| ${resp} = Create UserGroup ${groupname} |
| Should Be Equal ${resp} ok |
| ${resp} = Create User ${comment} ${username} ${groupname} ${EMPTY} |
| Should Be Equal ${resp} ok |
| ${user_list} = Get UserList |
| Should Contain ${user_list} ${username} |
| |
| Login BMC ${username} ${EMPTY} |
| ${rc}= Execute Command echo Login return_stdout=False return_rc=True |
| Should Be Equal ${rc} ${0} |
| |
| ${resp} = Delete User ${username} |
| Should Be Equal ${resp} ok |
| ${resp} = Delete Group ${groupname} |
| Should Be Equal ${resp} ok |
| |
| Set password for existing user |
| [Documentation] ***GOOD PATH*** |
| ... This testcase is for testing password set for user |
| ... in open bmc.\n |
| [Tags] Set_password_for_existing_user |
| |
| ${username} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${password} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${comment} = Generate Random String ${RANDOM_STRING_LENGTH} |
| |
| ${resp} = Create User ${comment} ${username} ${EMPTY} ${password} |
| Should Be Equal ${resp} ok |
| ${user_list} = Get UserList |
| Should Contain ${user_list} ${username} |
| |
| Login BMC ${username} ${password} |
| ${rc}= Execute Command echo Login return_stdout=False return_rc=True |
| Should Be Equal ${rc} ${0} |
| |
| ${resp} = Change Password ${username} ${VALID_PASSWORD} |
| Should Be Equal ${resp} ok |
| |
| Login BMC ${username} ${VALID_PASSWORD} |
| ${rc}= Execute Command echo Login return_stdout=False return_rc=True |
| Should Be Equal ${rc} ${0} |
| |
| ${resp} = Delete User ${username} |
| Should Be Equal ${resp} ok |
| |
| Set password with empty password for existing |
| [Documentation] ***GOOD PATH*** |
| ... This testcase is to verify that empty password can be set |
| ... for a existing user.\n |
| [Tags] Set_password_with_empty_password_for_existing |
| |
| ${username} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${password} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${comment} = Generate Random String ${RANDOM_STRING_LENGTH} |
| |
| ${resp} = Create User ${comment} ${username} ${EMPTY} ${password} |
| Should Be Equal ${resp} ok |
| ${user_list} = Get UserList |
| Should Contain ${user_list} ${username} |
| |
| Login BMC ${username} ${password} |
| ${rc}= Execute Command echo Login return_stdout=False return_rc=True |
| Should Be Equal ${rc} ${0} |
| |
| ${resp} = Change Password ${username} ${EMPTY} |
| Should Be Equal ${resp} ok |
| |
| Login BMC ${username} ${EMPTY} |
| ${rc}= Execute Command echo Login return_stdout=False return_rc=True |
| Should Be Equal ${rc} ${0} |
| |
| Set password for non existing user |
| [Documentation] ***BAD PATH*** |
| ... This testcase is for testing password set for non-existing user |
| ... in open bmc.\n |
| |
| ${resp} = Change Password ${NON_EXISTING_USER} ${VALID_PASSWORD} |
| Should Be Equal ${resp} error |
| |
| Create existing user |
| [Documentation] ***BAD PATH*** |
| ... This testcase is for checking that user creation is not allowed |
| ... for existing user in open bmc.\n |
| [Tags] Create_existing_user |
| |
| ${username} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${password} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${comment} = Generate Random String ${RANDOM_STRING_LENGTH} |
| |
| ${resp} = Create User ${comment} ${username} ${EMPTY} ${EMPTY} |
| Should Be Equal ${resp} ok |
| ${resp} = Create User ${comment} ${username} ${EMPTY} ${EMPTY} |
| Should Be Equal ${resp} error |
| |
| ${resp} = Delete User ${username} |
| Should Be Equal ${resp} ok |
| |
| Create user with no name |
| [Documentation] ***BAD PATH*** |
| ... This testcase is for checking that user creation is not allowed |
| ... with empty username in open bmc.\n |
| |
| ${username} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${password} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${comment} = Generate Random String ${RANDOM_STRING_LENGTH} |
| ${groupname} = Generate Random String ${RANDOM_STRING_LENGTH} |
| |
| ${resp} = Create User ${comment} ${EMPTY} ${groupname} ${password} |
| Should Be Equal ${resp} error |
| ${user_list} = Get UserList |
| Should Not Contain ${user_list} ${EMPTY} |
| |
| Create existing user group |
| [Documentation] ***BAD PATH*** |
| ... This testcase is for checking that user group creation is not allowed |
| ... for existing user group in open bmc.\n |
| |
| ${groupname} = Generate Random String ${RANDOM_STRING_LENGTH} |
| |
| ${resp} = Create UserGroup ${groupname} |
| Should Be Equal ${resp} ok |
| ${resp} = Create UserGroup ${groupname} |
| Should Be Equal ${resp} error |
| |
| ${resp} = Delete Group ${groupname} |
| Should Be Equal ${resp} ok |
| |
| Create user group with no name |
| [Documentation] ***BAD PATH*** |
| ... This testcase is for checking that user group creation is not allowed |
| ... with empty groupname in open bmc.\n |
| |
| ${resp} = Create UserGroup ${EMPTY} |
| Should Be Equal ${resp} error |
| ${usergroup_list} = Get GroupListUsr |
| Should Not Contain ${usergroup_list} ${EMPTY} |
| |
| Cleanup Users List |
| [Documentation] ***GOOD PATH*** |
| ... This testcase is to clean up multiple users created by |
| ... the test so as to leave the system in cleaner state. |
| ... This is a no-op if there is no user list on the BMC. |
| [Tags] CleanupUsersList |
| |
| ${user_list} = Get UserList |
| : FOR ${username} IN @{user_list} |
| \ ${resp} = Delete User ${username} |
| \ Should Be Equal ${resp} ok |
| |
| |
| *** Keywords *** |
| |
| Get UserList |
| ${data} = create dictionary data=@{EMPTY} |
| ${resp} = OpenBMC Post Request /org/openbmc/UserManager/Users/action/UserList data=${data} |
| should be equal as strings ${resp.status_code} ${HTTP_OK} |
| ${jsondata} = to json ${resp.content} |
| [return] ${jsondata['data']} |
| |
| Get GroupListUsr |
| ${data} = create dictionary data=@{EMPTY} |
| ${resp} = OpenBMC Post Request /org/openbmc/UserManager/Groups/action/GroupListUsr data=${data} |
| should be equal as strings ${resp.status_code} ${HTTP_OK} |
| ${jsondata} = to json ${resp.content} |
| [return] ${jsondata['data']} |
| |
| Create User |
| [Arguments] ${comment} ${username} ${groupname} ${password} |
| @{user_list} = Create List ${comment} ${username} ${groupname} ${password} |
| ${data} = create dictionary data=@{user_list} |
| ${resp} = OpenBMC Post Request /org/openbmc/UserManager/Users/action/UserAdd data=${data} |
| ${jsondata} = to json ${resp.content} |
| [return] ${jsondata['status']} |
| |
| Change Password |
| [Arguments] ${username} ${password} |
| @{user_list} = Create List ${username} ${password} |
| ${data} = create dictionary data=@{user_list} |
| ${resp} = OpenBMC Post Request /org/openbmc/UserManager/User/action/Passwd data=${data} |
| ${jsondata} = to json ${resp.content} |
| [return] ${jsondata['status']} |
| |
| Create UserGroup |
| [Arguments] ${args} |
| @{group_list} = Create List ${args} |
| ${data} = create dictionary data=@{group_list} |
| ${resp} = OpenBMC Post Request /org/openbmc/UserManager/Groups/action/GroupAddUsr data=${data} |
| ${jsondata} = to json ${resp.content} |
| [return] ${jsondata['status']} |
| |
| Delete Group |
| [Arguments] ${args} |
| @{group_list} = Create List ${args} |
| ${data} = create dictionary data=@{group_list} |
| ${resp} = OpenBMC Post Request /org/openbmc/UserManager/Group/action/GroupDel data=${data} |
| ${jsondata} = to json ${resp.content} |
| [return] ${jsondata['status']} |
| |
| Delete User |
| [Arguments] ${args} |
| @{user_list} = Create List ${args} |
| ${data} = create dictionary data=@{user_list} |
| ${resp} = OpenBMC Post Request /org/openbmc/UserManager/User/action/Userdel data=${data} |
| ${jsondata} = to json ${resp.content} |
| [return] ${jsondata['status']} |
| |
| Login BMC |
| [Arguments] ${username} ${password} |
| Open connection ${OPENBMC_HOST} |
| ${resp} = Login ${username} ${password} |
| [return] ${resp} |