Fix for maximum user creation
Changes:
Fix for maximum user creation test case
Tested:
Tested changes on BMC environment
Change-Id: I72da35ab5439599044db114423804f97980b2cee
Signed-off-by: Sridevi Ramesh <sridevra@in.ibm.com>
diff --git a/redfish/account_service/test_ipmi_redfish_user.robot b/redfish/account_service/test_ipmi_redfish_user.robot
index 79b0eed..0e95921 100644
--- a/redfish/account_service/test_ipmi_redfish_user.robot
+++ b/redfish/account_service/test_ipmi_redfish_user.robot
@@ -18,11 +18,12 @@
${admin_level_priv} 4
${operator_level_priv} 3
${readonly_level_priv} 2
+${user_count} 0
${ipmi_max_num_users} ${15}
${max_num_users} ${15}
${empty_name_pattern} ^User Name\\s.*\\s:\\s$
-** Test Cases **
+*** Test Cases ***
Create Admin Redfish User And Verify Login Via IPMI
[Documentation] Create user using redfish and verify via IPMI.
@@ -214,14 +215,14 @@
Verify Failure To Exceed Max Number Of Users
- [Documentation] Verify failure attempting to exceed the max number of user accounts.
+ [Documentation] Verify failure attempting to exceed the max number of
+ ... user accounts.
[Tags] Verify_Failure_To_Exceed_Max_Number_Of_Users
[Teardown] Run Keywords Test Teardown Execution
... AND Delete Users Via Redfish ${username_list}
# Get existing user count.
- ${resp}= Redfish.Get /redfish/v1/AccountService/Accounts/
- ${current_user_count}= Get From Dictionary ${resp.dict} Members@odata.count
+ ${existing_user_count}= Get User Count Of Not IPMI Account Type
${payload}= Create Dictionary Password=${valid_password}
... RoleId=Administrator Enabled=${True}
@@ -229,7 +230,7 @@
@{username_list}= Create List
# Create users to reach maximum users count (i.e. 15 users).
- FOR ${INDEX} IN RANGE ${current_user_count} ${max_num_users}
+ FOR ${INDEX} IN RANGE ${existing_user_count} ${max_num_users}
${random_username}= Generate Random String 8 [LETTERS]
Set To Dictionary ${payload} UserName ${random_username}
Redfish.Post ${REDFISH_ACCOUNTS_URI} body=&{payload}
@@ -330,7 +331,6 @@
${access}= Run IPMI Standard Command channel getaccess ${CHANNEL_NUMBER} ${random_userid}
${name_line}= Get Lines Containing String ${access} User Name
- Log To Console For ID ${random_userid}: ${name_line}
${is_empty}= Run Keyword And Return Status
... Should Match Regexp ${name_line} ${empty_name_pattern}
@@ -338,3 +338,30 @@
END
IF '${jj}' == '299' Fail msg=A free user ID could not be found.
RETURN ${random_userid}
+
+
+Get All User Account Names
+ [Documentation] Get all user account names in list format.
+
+ @{username_list}= Create List
+ ${resp}= Redfish.Get /redfish/v1/AccountService/Accounts/
+ ${current_users}= Get From Dictionary ${resp.dict} Members
+ FOR ${user} IN @{current_users}
+ ${output}= Split String ${user["@odata.id"]} /redfish/v1/AccountService/Accounts/
+ Append To List ${username_list} ${output[1]}
+ END
+ RETURN ${username_list}
+
+
+Get User Count Of Not IPMI Account Type
+ [Documentation] Get user count of not IPMI account type.
+
+ ${username_list}= Get All User Account Names
+ FOR ${user} IN @{username_list}
+ ${resp}= Redfish.Get /redfish/v1/AccountService/Accounts/${user}
+ @{account_type}= Get From Dictionary ${resp.dict} AccountTypes
+ IF "IPMI" not in ${account_type}
+ ${user_count}= Evaluate ${user_count} + 1
+ END
+ END
+ RETURN ${user_count}