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}