blob: f3567366e080ef3ba921f1935500ab109ce24468 [file] [log] [blame]
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -06001*** Settings ***
2Documentation Test suite for OpenBMC IPMI user management.
3
4Resource ../lib/ipmi_client.robot
5Resource ../lib/openbmc_ffdc.robot
ganesanb0ae36202022-02-17 12:14:37 +00006Resource ../lib/bmc_network_utils.robot
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -06007Library ../lib/ipmi_utils.py
Anusha Dathatridd8e7d82019-12-03 07:45:30 -06008Test Setup Printn
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -06009
Ashwini Chandrappa12be4b42022-03-15 23:02:07 -050010Suite Setup Suite Setup Execution
Rahul Maheshwarif646baa2019-02-20 12:29:35 -060011Test Teardown Test Teardown Execution
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060012
George Keishing87dc4422023-10-20 12:56:30 +053013Force Tags IPMI_User
14
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060015*** Variables ***
16
17${invalid_username} user%
18${invalid_password} abc123
chithragc0582f72021-12-08 10:34:23 -050019${new_username} newuser
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060020${root_userid} 1
21${operator_level_priv} 0x3
Rahul Maheshwaric05bf562019-03-01 04:02:53 -060022${user_priv} 2
23${operator_priv} 3
Rahul Maheshwarief0a7352019-02-20 11:07:48 -060024${admin_level_priv} 4
Rahul Maheshwaric19f8382019-02-20 08:19:22 -060025${valid_password} 0penBmc1
26${max_password_length} 20
Rahul Maheshwarief0a7352019-02-20 11:07:48 -060027${ipmi_setaccess_cmd} channel setaccess
Anusha Dathatridd8e7d82019-12-03 07:45:30 -060028&{password_values} 16=0penBmc10penBmc2 17=0penBmc10penBmc2B
29 ... 20=0penBmc10penBmc2Bmc3 21=0penBmc10penBmc2Bmc34
Anusha Dathatri466816f2020-01-30 05:12:36 -060030 ... 7=0penBmc 8=0penBmc0
Gene Ratzlaffa631d692022-05-05 14:40:03 -040031${expected_max_ids} 15
32${root_pattern} ^.*\\sroot\\s.*ADMINISTRATOR.*$
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060033
Ashwini Chandrappa5cefabf2021-08-30 23:48:14 -050034# User defined count.
35${USER_LOOP_COUNT} 20
36
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060037*** Test Cases ***
38
Rahul Maheshwariffc77352019-02-25 09:05:27 -060039Verify IPMI User Summary
40 [Documentation] Verify IPMI maximum supported IPMI user ID and
Gene Ratzlaffa631d692022-05-05 14:40:03 -040041 ... enabled user from user summary.
Rahul Maheshwariffc77352019-02-25 09:05:27 -060042 [Tags] Verify_IPMI_User_Summary
Gene Ratzlaffa631d692022-05-05 14:40:03 -040043 [Teardown] Run Keywords FFDC On Test Case Fail AND
44 ... Delete Created User ${random_userid}
Rahul Maheshwariffc77352019-02-25 09:05:27 -060045
Gene Ratzlaffa631d692022-05-05 14:40:03 -040046 ${initial_user_count} ${maximum_ids}= Get Enabled User Count
47
Anusha Dathatridd8e7d82019-12-03 07:45:30 -060048 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +080049 Set Test Variable ${random_userid}
Rahul Maheshwariffc77352019-02-25 09:05:27 -060050 Run IPMI Standard Command user enable ${random_userid}
51
Gene Ratzlaffa631d692022-05-05 14:40:03 -040052 # Verify number of currently enabled users.
53 ${current_user_count} ${maximum_ids}= Get Enabled User Count
54 ${calculated_count}= Evaluate ${initial_user_count} + 1
55 Should Be Equal As Integers ${current_user_count} ${calculated_count}
Ashwini Chandrappa12be4b42022-03-15 23:02:07 -050056
Gene Ratzlaffa631d692022-05-05 14:40:03 -040057 # Verify maximum user count IPMI local user can have.
58 Should Be Equal As Integers ${maximum_ids} ${expected_max_ids}
Rahul Maheshwariffc77352019-02-25 09:05:27 -060059
60
Tony Lee3d351ee2020-02-19 10:21:04 +080061Verify IPMI User List
62 [Documentation] Verify user list via IPMI.
63 [Tags] Verify_IPMI_User_List
64 [Teardown] Run Keywords FFDC On Test Case Fail AND
65 ... Delete Created User ${random_userid}
66
67 ${random_userid} ${random_username}= Create Random IPMI User
68 Set Test Variable ${random_userid}
69
70 Run IPMI Standard Command
71 ... user set password ${random_userid} ${valid_password}
72 Run IPMI Standard Command user enable ${random_userid}
73 # Delay added for IPMI user to get enabled.
74 Sleep 5s
75 # Set admin privilege and enable IPMI messaging for newly created user.
76 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
77
78 ${users_access}= Get User Access Ipmi ${CHANNEL_NUMBER}
79 Rprint Vars users_access
80
81 ${index}= Evaluate ${random_userid} - 1
82 # Verify the user access of created user.
83 Valid Value users_access[${index}]['id'] ['${random_userid}']
84 Valid Value users_access[${index}]['name'] ['${random_username}']
85 Valid Value users_access[${index}]['callin'] ['true']
86 Valid Value users_access[${index}]['link'] ['false']
87 Valid Value users_access[${index}]['auth'] ['true']
88 Valid Value users_access[${index}]['ipmi'] ['ADMINISTRATOR']
89
90
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060091Verify IPMI User Creation With Valid Name And ID
92 [Documentation] Create user via IPMI and verify.
George Keishingb98036a2022-01-31 12:39:47 -060093 [Tags] Verify_IPMI_User_Creation_With_Valid_Name_And_ID
Tony Leef9379e82020-01-08 18:20:38 +080094 [Teardown] Run Keywords FFDC On Test Case Fail AND
95 ... Delete Created User ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060096
Anusha Dathatridd8e7d82019-12-03 07:45:30 -060097 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +080098 Set Test Variable ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060099
100
101Verify IPMI User Creation With Invalid Name
102 [Documentation] Verify error while creating IPMI user with invalid
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400103 ... name (e.g. user name with special characters).
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600104 [Tags] Verify_IPMI_User_Creation_With_Invalid_Name
105
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400106 ${random_userid}= Find Free User Id
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600107 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
108 ... user set name ${random_userid} ${invalid_username}
109 Should Contain ${msg} Invalid data
110
111
112Verify IPMI User Creation With Invalid ID
113 [Documentation] Verify error while creating IPMI user with invalid
114 ... ID(i.e. any number greater than 15 or 0).
115 [Tags] Verify_IPMI_User_Creation_With_Invalid_ID
116
117 @{id_list}= Create List
118 ${random_invalid_id}= Evaluate random.randint(16, 1000) modules=random
119 Append To List ${id_list} ${random_invalid_id}
120 Append To List ${id_list} 0
121
Sushil Singhbe97ffc2019-06-04 06:34:24 -0500122 FOR ${id} IN @{id_list}
123 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
124 ... user set name ${id} newuser
Tony Leec8ed7532020-01-09 16:15:16 +0800125 Should Contain Any ${msg} User ID is limited to range Parameter out of range
Sushil Singhbe97ffc2019-06-04 06:34:24 -0500126 END
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600127
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400128
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600129Verify Setting IPMI User With Invalid Password
130 [Documentation] Verify error while setting IPMI user with invalid
131 ... password.
132 [Tags] Verify_Setting_IPMI_User_With_Invalid_Password
Tony Leef9379e82020-01-08 18:20:38 +0800133 [Teardown] Run Keywords FFDC On Test Case Fail AND
134 ... Delete Created User ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600135
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600136 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800137 Set Test Variable ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600138
139 # Set invalid password for newly created user.
140 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
141 ... user set password ${random_userid} ${invalid_password}
142
Sushma M M97fccae2020-07-27 14:55:19 -0500143 # Delay added for user password to get set.
144 Sleep 5s
145
Anusha Dathatria54cddc2019-08-07 10:01:16 -0500146 Should Contain ${msg} Set User Password command failed
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600147
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400148
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600149Verify Setting IPMI Root User With New Name
150 [Documentation] Verify error while setting IPMI root user with new
151 ... name.
152 [Tags] Verify_Setting_IPMI_Root_User_With_New_Name
153
154 # Set invalid password for newly created user.
155 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
156 ... user set name ${root_userid} abcd
157
158 Should Contain ${msg} Set User Name command failed
159
160
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600161Verify IPMI User Password Via Test Command
162 [Documentation] Verify IPMI user password using test command.
163 [Tags] Verify_IPMI_User_Password_Via_Test_Command
Tony Leef9379e82020-01-08 18:20:38 +0800164 [Teardown] Run Keywords FFDC On Test Case Fail AND
165 ... Delete Created User ${random_userid}
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600166
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600167 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800168 Set Test Variable ${random_userid}
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600169
170 # Set valid password for newly created user.
171 Run IPMI Standard Command
172 ... user set password ${random_userid} ${valid_password}
173
174 # Verify newly set password using test command.
175 ${msg}= Run IPMI Standard Command
176 ... user test ${random_userid} ${max_password_length} ${valid_password}
177
178 Should Contain ${msg} Success
179
180
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600181Verify Setting Valid Password For IPMI User
182 [Documentation] Set valid password for IPMI user and verify.
183 [Tags] Verify_Setting_Valid_Password_For_IPMI_User
Tony Leef9379e82020-01-08 18:20:38 +0800184 [Teardown] Run Keywords FFDC On Test Case Fail AND
185 ... Delete Created User ${random_userid}
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600186
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600187 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800188 Set Test Variable ${random_userid}
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600189
190 # Set valid password for newly created user.
191 Run IPMI Standard Command
192 ... user set password ${random_userid} ${valid_password}
193
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600194 Run IPMI Standard Command user enable ${random_userid}
195
Rahul Maheshwari7d232ab2019-08-29 06:44:16 -0500196 # Delay added for IPMI user to get enable
197 Sleep 5s
198
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600199 # Set admin privilege and enable IPMI messaging for newly created user
200 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
201
202 Verify IPMI Username And Password ${random_username} ${valid_password}
203
204
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600205Verify IPMI User Creation With Same Name
206 [Documentation] Verify error while creating two IPMI user with same name.
207 [Tags] Verify_IPMI_User_Creation_With_Same_Name
Tony Leef9379e82020-01-08 18:20:38 +0800208 [Teardown] Run Keywords FFDC On Test Case Fail AND
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400209 ... Delete Created User ${random_userid}
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600210
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400211 ${random_userid} ${random_username}= Create Random IPMI User
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600212
213 # Set same username for another IPMI user.
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400214 ${rand_userid_two}= Find Free User Id
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600215 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400216 ... user set name ${rand_userid_two} ${random_username}
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600217 Should Contain ${msg} Invalid data field in request
218
219
220Verify Setting IPMI User With Null Password
221 [Documentation] Verify error while setting IPMI user with null
222 ... password.
223 [Tags] Verify_Setting_IPMI_User_With_Null_Password
Tony Leef9379e82020-01-08 18:20:38 +0800224 [Teardown] Run Keywords FFDC On Test Case Fail AND
225 ... Delete Created User ${random_userid}
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600226
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600227 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800228 Set Test Variable ${random_userid}
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600229
230 # Set null password for newly created user.
231 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
232 ... user set password ${random_userid} ""
233
234 Should Contain ${msg} Invalid data field in request
235
236
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600237Verify IPMI User Deletion
238 [Documentation] Delete user via IPMI and verify.
239 [Tags] Verify_IPMI_User_Deletion
Tony Leef9379e82020-01-08 18:20:38 +0800240 [Teardown] Run Keywords FFDC On Test Case Fail AND
241 ... Delete Created User ${random_userid}
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600242
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600243 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800244 Set Test Variable ${random_userid}
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600245 # Delete IPMI User and verify
246 Run IPMI Standard Command user set name ${random_userid} ""
Nagarjun B26499142023-02-16 15:20:14 +0530247 ${user_info}= Get User Info ${random_userid} ${CHANNEL_NUMBER}
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600248 Should Be Equal ${user_info['user_name']} ${EMPTY}
249
250
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600251Test IPMI User Privilege Level
252 [Documentation] Verify IPMI user with user privilege can only run user level commands.
253 [Tags] Test_IPMI_User_Privilege_Level
254 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800255 [Teardown] Run Keywords FFDC On Test Case Fail AND
256 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600257
258 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
259 ${user_priv} Passed Failed Failed
260
261
262Test IPMI Operator Privilege Level
263 [Documentation] Verify IPMI user with operator privilege can only run user and operator levels commands.
264 ... level is set to operator.
265 [Tags] Test_IPMI_Operator_Privilege_Level
266 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800267 [Teardown] Run Keywords FFDC On Test Case Fail AND
268 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600269
270 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
271 ${operator_priv} Passed Passed Failed
272
273
274Test IPMI Administrator Privilege Level
275 [Documentation] Verify IPMI user with admin privilege can run all levels command.
276 [Tags] Test_IPMI_Administrator_Privilege_Level
277 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800278 [Teardown] Run Keywords FFDC On Test Case Fail AND
279 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600280
281 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
282 ${admin_level_priv} Passed Passed Passed
283
284
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600285Enable IPMI User And Verify
286 [Documentation] Enable IPMI user and verify that the user is able
287 ... to run IPMI command.
288 [Tags] Enable_IPMI_User_And_Verify
Tony Leef9379e82020-01-08 18:20:38 +0800289 [Teardown] Run Keywords FFDC On Test Case Fail AND
290 ... Delete Created User ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600291
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600292 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800293 Set Test Variable ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600294 Run IPMI Standard Command
295 ... user set password ${random_userid} ${valid_password}
296
297 # Set admin privilege and enable IPMI messaging for newly created user.
298 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
299
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600300 # Delay added for user privilege to get set.
Rahul Maheshwari62c8aea2019-09-27 05:23:12 -0500301 Sleep 5s
302
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600303 Enable IPMI User And Verify ${random_userid}
Gene Ratzlaff3a3d5d52022-05-05 08:30:52 -0400304 Wait And Confirm New Username And Password ${random_username} ${valid_password}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600305
306 # Verify that enabled IPMI user is able to run IPMI command.
307 Verify IPMI Username And Password ${random_username} ${valid_password}
308
309
310Disable IPMI User And Verify
311 [Documentation] Disable IPMI user and verify that that the user
312 ... is unable to run IPMI command.
313 [Tags] Disable_IPMI_User_And_Verify
Tony Leef9379e82020-01-08 18:20:38 +0800314 [Teardown] Run Keywords FFDC On Test Case Fail AND
315 ... Delete Created User ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600316
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600317 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800318 Set Test Variable ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600319 Run IPMI Standard Command
320 ... user set password ${random_userid} ${valid_password}
321
322 # Set admin privilege and enable IPMI messaging for newly created user.
323 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
324
325 # Disable IPMI user and verify.
326 Run IPMI Standard Command user disable ${random_userid}
Nagarjun B26499142023-02-16 15:20:14 +0530327 ${user_info}= Get User Info ${random_userid} ${CHANNEL_NUMBER}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600328 Should Be Equal ${user_info['enable_status']} disabled
329
330 # Verify that disabled IPMI user is unable to run IPMI command.
331 ${msg}= Run Keyword And Expect Error * Verify IPMI Username And Password
332 ... ${random_username} ${valid_password}
Rahul Maheshwaric3d1e962019-03-06 23:53:21 -0600333 Should Contain ${msg} Unable to establish IPMI
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600334
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600335
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600336Verify IPMI Root User Password Change
337 [Documentation] Change IPMI root user password and verify that
338 ... root user is able to run IPMI command.
339 [Tags] Verify_IPMI_Root_User_Password_Change
Ruud A. Haringa6622cb2023-11-16 12:04:59 -0500340 [Setup] Skip if len( '${OPENBMC_PASSWORD}' ) < 8
341 ... msg= Do not run this test if len( OPENBMC_PASSWORD ) < 8
342 # Reason: if OPENBMC_PASSWORD is not at least 8 characters,
343 # it cannot be restored in the Teardown step.
Tony Leef9379e82020-01-08 18:20:38 +0800344 [Teardown] Run Keywords FFDC On Test Case Fail AND
Ruud A. Haringa6622cb2023-11-16 12:04:59 -0500345 ... Run Keyword If "${TEST STATUS}" != "SKIP"
Tony Leef9379e82020-01-08 18:20:38 +0800346 ... Wait Until Keyword Succeeds 15 sec 5 sec
Ruud A. Haringa6622cb2023-11-16 12:04:59 -0500347 ... Restore Default Password For IPMI Root User
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600348
349 # Set new password for root user.
350 Run IPMI Standard Command
351 ... user set password ${root_userid} ${valid_password}
352
Sushma M M97fccae2020-07-27 14:55:19 -0500353 # Delay added for user password to get set.
354 Sleep 5s
355
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600356 # Verify that root user is able to run IPMI command using new password.
Rahul Maheshwari62c8aea2019-09-27 05:23:12 -0500357 Wait Until Keyword Succeeds 15 sec 5 sec Verify IPMI Username And Password
358 ... root ${valid_password}
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600359
360
ganesanb5e775732023-10-31 11:13:20 +0000361Verify Administrator And User Privilege For Different Channels
362 [Documentation] Set administrator and user privilege for different channels and verify.
363 [Tags] Verify_Administrator_And_User_Privilege_For_Different_Channels
ganesanb0ae36202022-02-17 12:14:37 +0000364 [Setup] Check Active Ethernet Channels
Tony Leef9379e82020-01-08 18:20:38 +0800365 [Teardown] Run Keywords FFDC On Test Case Fail AND
366 ... Delete Created User ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500367
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600368 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800369 Set Test Variable ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500370 Run IPMI Standard Command
371 ... user set password ${random_userid} ${valid_password}
372
373 # Set admin privilege for newly created user with channel 1.
ganesanb0ae36202022-02-17 12:14:37 +0000374 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} ${CHANNEL_NUMBER}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500375
ganesanb5e775732023-10-31 11:13:20 +0000376 # Set user privilege for newly created user with channel 2.
377 Set Channel Access ${random_userid} ipmi=on privilege=${user_priv} ${secondary_channel_number}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500378
Ruud A. Haring9e4481b2023-12-08 12:08:01 -0500379 # Delay added for user privileges to get set.
380 Sleep 5s
381
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600382 Enable IPMI User And Verify ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500383
384 # Verify that user is able to run administrator level IPMI command with channel 1.
ganesanb0ae36202022-02-17 12:14:37 +0000385 Verify IPMI Command ${random_username} ${valid_password} Administrator ${CHANNEL_NUMBER}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500386
387 # Verify that user is unable to run IPMI command with channel 2.
George Keishing6e641262022-05-05 10:46:22 -0500388 Run IPMI Standard Command
389 ... sel info ${secondary_channel_number} expected_rc=${1} U=${random_username} P=${valid_password}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500390
391
392Verify Operator And User Privilege For Different Channels
393 [Documentation] Set operator and user privilege for different channels and verify.
394 [Tags] Verify_Operator_And_User_Privilege_For_Different_Channels
ganesanb0ae36202022-02-17 12:14:37 +0000395 [Setup] Check Active Ethernet Channels
Tony Leef9379e82020-01-08 18:20:38 +0800396 [Teardown] Run Keywords FFDC On Test Case Fail AND
397 ... Delete Created User ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500398
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600399 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800400 Set Test Variable ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500401 Run IPMI Standard Command
402 ... user set password ${random_userid} ${valid_password}
403
404 # Set operator privilege for newly created user with channel 1.
ganesanb0ae36202022-02-17 12:14:37 +0000405 Set Channel Access ${random_userid} ipmi=on privilege=${operator_priv} ${CHANNEL_NUMBER}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500406
407 # Set user privilege for newly created user with channel 2.
ganesanb0ae36202022-02-17 12:14:37 +0000408 Set Channel Access ${random_userid} ipmi=on privilege=${user_priv} ${secondary_channel_number}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500409
Ruud A. Haring9e4481b2023-12-08 12:08:01 -0500410 # Delay added for user privileges to get set.
411 Sleep 5s
412
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600413 Enable IPMI User And Verify ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500414
415 # Verify that user is able to run operator level IPMI command with channel 1.
ganesanb0ae36202022-02-17 12:14:37 +0000416 Verify IPMI Command ${random_username} ${valid_password} Operator ${CHANNEL_NUMBER}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500417
418 # Verify that user is able to run user level IPMI command with channel 2.
ganesanb0ae36202022-02-17 12:14:37 +0000419 Verify IPMI Command ${random_username} ${valid_password} User ${secondary_channel_number}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500420
421
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600422Verify Setting IPMI User With Max Password Length
423 [Documentation] Verify IPMI user creation with password length of 20 characters.
424 [Tags] Verify_Setting_IPMI_User_With_Max_Password_Length
425 [Template] Set User Password And Verify
426
427 # password_length password_option expected_status
428 20 20 ${True}
429
430
431Verify Setting IPMI User With Invalid Password Length
432 [Documentation] Verify that IPMI user cannot be set with 21 character password using 16 char
433 ... or 20 char password option.
434 [Tags] Verify_Setting_IPMI_User_With_Invalid_Password_Length
435 [Template] Set User Password And Verify
436
437 # password_length password_option expected_status
438 21 16 ${False}
439 21 20 ${False}
440
441
442Verify Setting IPMI User With 16 Character Password
443 [Documentation] Verify that IPMI user can create a 16 character password using 16 char or 20
444 ... char password option.
445 [Tags] Verify_Setting_IPMI_User_With_16_Character_Password
446 [Template] Set User Password And Verify
447
448 # password_length password_option expected_status
449 16 16 ${True}
450 16 20 ${True}
451
452
453Verify Default Selection Of 16 Character Password For IPMI User
454 [Documentation] Verify that ipmitool by default opts for the 16 character option when given a
455 ... password whose length is in between 17 and 20.
456 [Tags] Verify_Default_Selection_Of_16_Character_Password_For_IPMI_User
457 [Template] Set User Password And Verify
458
459 # password_length password_option expected_status
460 17 16 ${True}
461 20 16 ${True}
462
463
Anusha Dathatri466816f2020-01-30 05:12:36 -0600464Verify Minimum Password Length For IPMI User
465 [Documentation] Verify minimum password length of 8 characters.
466 [Tags] Verify_Minimum_Password_Length_For_IPMI_User
467 [Template] Set User Password And Verify
468
469 # password_length password_option expected_status
470 7 16 ${False}
471 8 16 ${True}
472 7 20 ${False}
473 8 20 ${True}
474
475
Ashwini Chandrappa5cefabf2021-08-30 23:48:14 -0500476Verify Continuous IPMI Command Execution
477 [Documentation] Verify that continuous IPMI command execution runs fine.
478 [Tags] Verify_Continuous_IPMI_Command_Execution
479
480 FOR ${i} IN RANGE ${USER_LOOP_COUNT}
481 Run IPMI Standard Command lan print
482 Run IPMI Standard Command power status
483 Run IPMI Standard Command fru list
484 Run IPMI Standard Command sel list
485 END
486
487
chithragc0582f72021-12-08 10:34:23 -0500488Modify IPMI User
489 [Documentation] Verify modified IPMI user is communicating via IPMI.
490 [Tags] Modify_IPMI_User
491 [Teardown] Run Keywords FFDC On Test Case Fail AND
492 ... Delete Created User ${random_userid}
493
494 ${random_userid} ${random_username}= Create Random IPMI User
495 Set Test Variable ${random_userid}
496 Run IPMI Standard Command
497 ... user set password ${random_userid} ${valid_password}
498
499 # Set admin privilege and enable IPMI messaging for newly created user.
500 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
501
502 # Delay added for user privilege to get set.
503 Sleep 5s
504
505 Enable IPMI User And Verify ${random_userid}
506
507 # Verify that user is able to run administrator level IPMI command.
508 Verify IPMI Command ${random_username} ${valid_password} Administrator ${CHANNEL_NUMBER}
509
510 # Set different username for same IPMI user.
511 Run IPMI Standard Command
512 ... user set name ${random_userid} ${new_username}
Gene Ratzlaff3a3d5d52022-05-05 08:30:52 -0400513 Wait And Confirm New Username And Password ${new_username} ${valid_password}
chithragc0582f72021-12-08 10:34:23 -0500514
515 # Verify that user is able to run administrator level IPMI command.
516 Verify IPMI Command ${new_username} ${valid_password} Administrator ${CHANNEL_NUMBER}
517
518
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600519*** Keywords ***
520
Ruud A. Haringa6622cb2023-11-16 12:04:59 -0500521Restore Default Password For IPMI Root User
522 [Documentation] Restore default password for IPMI root user
523
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600524 ${result}= Run External IPMI Standard Command
525 ... user set password ${root_userid} ${OPENBMC_PASSWORD}
526 ... P=${valid_password}
527 Should Contain ${result} Set User Password command successful
528
529 # Verify that root user is able to run IPMI command using default password.
530 Verify IPMI Username And Password root ${OPENBMC_PASSWORD}
531
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600532
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600533Test IPMI User Privilege
534 [Documentation] Test IPMI user privilege by executing IPMI command with different privileges.
535 [Arguments] ${privilege_level} ${user_cmd_status} ${operator_cmd_status} ${admin_cmd_status}
536
537 # Description of argument(s):
538 # privilege_level Privilege level of IPMI user (e.g. 4, 3).
539 # user_cmd_status Expected status of IPMI command run with the "User"
540 # privilege (i.e. "Passed" or "Failed").
541 # operator_cmd_status Expected status of IPMI command run with the "Operator"
542 # privilege (i.e. "Passed" or "Failed").
543 # admin_cmd_status Expected status of IPMI command run with the "Administrator"
544 # privilege (i.e. "Passed" or "Failed").
545
546 # Create IPMI user and set valid password.
Ruud A. Haring9e4481b2023-12-08 12:08:01 -0500547 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800548 Set Test Variable ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600549 Run IPMI Standard Command
550 ... user set password ${random_userid} ${valid_password}
551
552 # Set privilege and enable IPMI messaging for newly created user.
553 Set Channel Access ${random_userid} ipmi=on privilege=${privilege_level}
554
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600555 # Delay added for user privilege to get set.
Rahul Maheshwari62c8aea2019-09-27 05:23:12 -0500556 Sleep 5s
557
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600558 Enable IPMI User And Verify ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600559
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500560 Verify IPMI Command ${random_username} ${valid_password} User
561 ... expected_status=${user_cmd_status}
562 Verify IPMI Command ${random_username} ${valid_password} Operator
563 ... expected_status=${operator_cmd_status}
564 Verify IPMI Command ${random_username} ${valid_password} Administrator
565 ... expected_status=${admin_cmd_status}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600566
567
568Verify IPMI Command
569 [Documentation] Verify IPMI command execution with given username,
570 ... password, privilege and expected status.
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500571 [Arguments] ${username} ${password} ${privilege} ${channel}=${1} ${expected_status}=Passed
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600572 # Description of argument(s):
573 # username The user name (e.g. "root", "robert", etc.).
574 # password The user password (e.g. "0penBmc", "0penBmc1", etc.).
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600575 # privilege The session privilege for IPMI command (e.g. "User", "Operator", etc.).
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500576 # channel The user channel number (e.g. "1" or "2").
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600577 # expected_status Expected status of IPMI command run with the user
578 # of above password and privilege (i.e. "Passed" or "Failed").
579
580 ${expected_rc}= Set Variable If '${expected_status}' == 'Passed' ${0} ${1}
Rahul Maheshwariceb282e2019-09-16 00:11:41 -0500581 Wait Until Keyword Succeeds 15 sec 5 sec Run IPMI Standard Command
582 ... sel info ${channel} expected_rc=${expected_rc} U=${username} P=${password}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600583 ... L=${privilege}
584
585
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600586Set User Password And Verify
587 [Documentation] Create a user and set its password with given length and option.
588 [Arguments] ${password_length} ${password_option} ${expected_result}
Tony Leef9379e82020-01-08 18:20:38 +0800589 [Teardown] Run Keyword Delete Created User ${random_userid}
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600590 # Description of argument(s):
591 # password_length Length of password to be generated and used (e.g. "16").
592 # password_option Password length option to be given in IPMI command (e.g. "16", "20").
593 # expected_result Expected result for setting the user's password (e.g. "True", "False").
594
595 Rprint Vars password_length password_option expected_result
596 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800597 Set Test Variable ${random_userid}
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600598 ${password}= Get From Dictionary ${password_values} ${password_length}
599 Rprint Vars random_userid password
600
601 # Set password for newly created user.
602 ${status}= Run Keyword And Return Status Run IPMI Standard Command
603 ... user set password ${random_userid} ${password} ${password_option}
604 Rprint Vars status
605 Valid Value status [${expected_result}]
Anusha Dathatri7f810712020-01-07 04:13:16 -0600606 Return From Keyword If '${expected_result}' == '${False}'
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600607
608 # Set admin privilege and enable IPMI messaging for newly created user.
609 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
610
611 # Delay added for user privilege to get set.
612 Sleep 5s
613
614 Enable IPMI User And Verify ${random_userid}
615
616 # For password_option 16, passwords with length between 17 and 20 will be truncated.
617 # For all other cases, passwords will be retained as it is to verify.
618 ${truncated_password}= Set Variable ${password[:${password_option}]}
619 Rprint Vars truncated_password
620 ${status}= Run Keyword And Return Status Verify IPMI Username And Password ${random_username}
621 ... ${truncated_password}
622 Rprint Vars status
623 Valid Value status [${expected_result}]
624
625
Rahul Maheshwarif646baa2019-02-20 12:29:35 -0600626Test Teardown Execution
627 [Documentation] Do the test teardown execution.
628
629 FFDC On Test Case Fail
Tony Leef9379e82020-01-08 18:20:38 +0800630
631
ganesanb0ae36202022-02-17 12:14:37 +0000632Check Active Ethernet Channels
633 [Documentation] Check active ethernet channels and set suite variables.
634
635 ${channel_number_list}= Get Active Ethernet Channel List
636 ${channel_length}= Get Length ${channel_number_list}
637 Skip If '${channel_length}' == '1'
638 ... msg= Skips this test case as only one channel was in active.
639
640 FOR ${channel_num} IN @{channel_number_list}
641 ${secondary_channel_number}= Set Variable If ${channel_num} != ${CHANNEL_NUMBER} ${channel_num}
642 END
643
644 Set Suite Variable ${secondary_channel_number}
Ashwini Chandrappa12be4b42022-03-15 23:02:07 -0500645
646
647Suite Setup Execution
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400648 [Documentation] Make sure the enabled user count is below maximum,
649 ... and prepares administrative user list suite variables.
650
651 Check Enabled User Count
George Keishingca9a7842022-07-07 03:44:44 -0500652 # Skip root user checking if user decides not to use root user as default.
653 Run Keyword If '${IPMI_USERNAME}' == 'root' Determine Root User Id
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400654
655
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400656Determine Root User Id
657 [Documentation] Determines the user ID of the root user.
658
659 ${resp}= Wait Until Keyword Succeeds 15 sec 1 sec Run IPMI Standard Command
660 ... user list
661 @{lines}= Split To Lines ${resp}
662
663 ${root_userid}= Set Variable ${-1}
664 ${line_count}= Get Length ${lines}
665 FOR ${id_index} IN RANGE 1 ${line_count}
666 ${line}= Get From List ${lines} ${id_index}
667 ${root_found}= Get Lines Matching Regexp ${line} ${root_pattern}
668 IF '${root_found}' != '${EMPTY}'
669 ${root_userid}= Set Variable ${id_index}
George Keishinge9e44c42022-05-26 08:41:39 -0500670 Exit For Loop
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400671 END
672 END
673 Set Suite Variable ${root_userid}
674
675 Log To Console The root user ID is ${root_userid}.
676 Run Keyword If ${root_userid} < ${1} Fail msg= Did not identify root user ID.
677
678
Gene Ratzlaff3a3d5d52022-05-05 08:30:52 -0400679Wait And Confirm New Username And Password
George Keishing5e9fbbf2022-04-29 03:48:14 -0500680 [Documentation] Wait in loop trying to to confirm Username And Password.
681 [Arguments] ${username} ${password}
682
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400683 # Description of argument(s):
684 # username The user name (e.g. "root", "robert", etc.).
685 # password The user password (e.g. "0penBmc", "0penBmc1", etc.).
686
George Keishing5e9fbbf2022-04-29 03:48:14 -0500687 # Give time for previous command to complete.
688 Sleep 5s
689
690 # Looping verify that root user is able to run IPMI command using new password.
691 Wait Until Keyword Succeeds 15 sec 5 sec Verify IPMI Username And Password
692 ... ${username} ${password}
Gene Ratzlaffa631d692022-05-05 14:40:03 -0400693
694
695Get Enabled User Count
696 [Documentation] Return as integers: current number of enabled users and
697 ... Maximum number of Ids.
698
699 # Isolate 'Enabled User Count' value and convert to integer
700 ${resp}= Wait Until Keyword Succeeds 15 sec 1 sec Run IPMI Standard Command
701 ... user summary ${CHANNEL_NUMBER}
702 ${user_count_line}= Get Lines Containing String ${resp} Enabled User Count
703 ${count}= Fetch From Right ${user_count_line} \:
704 ${user_count}= Convert To Integer ${count}
705
706 # Isolate 'Maximum IDs' value and convert to integer
707 ${maximum_ids}= Get Lines Containing String ${resp} Maximum IDs
708 ${max_ids}= Fetch From Right ${maximum_ids} \:
709 ${int_maximum_ids_count}= Convert To Integer ${max_ids}
710
711 [Return] ${user_count} ${int_maximum_ids_count}