blob: a2878f3ceceb0b41389ff59ffb3e5c485dc87deb [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
6Library ../lib/ipmi_utils.py
Anusha Dathatridd8e7d82019-12-03 07:45:30 -06007Test Setup Printn
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -06008
Rahul Maheshwarif646baa2019-02-20 12:29:35 -06009Test Teardown Test Teardown Execution
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060010
11*** Variables ***
12
13${invalid_username} user%
14${invalid_password} abc123
15${root_userid} 1
16${operator_level_priv} 0x3
Rahul Maheshwaric05bf562019-03-01 04:02:53 -060017${user_priv} 2
18${operator_priv} 3
Rahul Maheshwarief0a7352019-02-20 11:07:48 -060019${admin_level_priv} 4
Rahul Maheshwaric05bf562019-03-01 04:02:53 -060020${no_access_priv} 15
Rahul Maheshwaric19f8382019-02-20 08:19:22 -060021${valid_password} 0penBmc1
22${max_password_length} 20
Rahul Maheshwarief0a7352019-02-20 11:07:48 -060023${ipmi_setaccess_cmd} channel setaccess
Anusha Dathatridd8e7d82019-12-03 07:45:30 -060024&{password_values} 16=0penBmc10penBmc2 17=0penBmc10penBmc2B
25 ... 20=0penBmc10penBmc2Bmc3 21=0penBmc10penBmc2Bmc34
Anusha Dathatri466816f2020-01-30 05:12:36 -060026 ... 7=0penBmc 8=0penBmc0
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060027
Ashwini Chandrappa5cefabf2021-08-30 23:48:14 -050028# User defined count.
29${USER_LOOP_COUNT} 20
30
Rahul Maheshwaridd63c742019-02-27 23:03:54 -060031
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060032*** Test Cases ***
33
Rahul Maheshwariffc77352019-02-25 09:05:27 -060034Verify IPMI User Summary
35 [Documentation] Verify IPMI maximum supported IPMI user ID and
36 ... enabled user form user summary
37 [Tags] Verify_IPMI_User_Summary
Tony Leef9379e82020-01-08 18:20:38 +080038 [Teardown] Run Keywords FFDC On Test Case Fail AND
39 ... Delete Created User ${random_userid}
Rahul Maheshwariffc77352019-02-25 09:05:27 -060040 # Delete all non-root IPMI (i.e. except userid 1)
41 Delete All Non Root IPMI User
42
Anusha Dathatridd8e7d82019-12-03 07:45:30 -060043 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +080044 Set Test Variable ${random_userid}
Rahul Maheshwariffc77352019-02-25 09:05:27 -060045 Run IPMI Standard Command user enable ${random_userid}
46
47 # Verify maximum user count IPMI local user can have. Also verify
48 # currently enabled users.
Tony Lee86fd6732020-06-03 14:12:05 +080049 ${resp}= Wait Until Keyword Succeeds 15 sec 5 sec Run IPMI Standard Command
50 ... user summary ${CHANNEL_NUMBER}
Rahul Maheshwariffc77352019-02-25 09:05:27 -060051 ${enabled_user_count}=
52 ... Get Lines Containing String ${resp} Enabled User Count
53 ${maximum_ids}= Get Lines Containing String ${resp} Maximum IDs
54 Should Contain ${enabled_user_count} 2
55 Should Contain ${maximum_ids} 15
56
57
Tony Lee3d351ee2020-02-19 10:21:04 +080058Verify IPMI User List
59 [Documentation] Verify user list via IPMI.
60 [Tags] Verify_IPMI_User_List
61 [Teardown] Run Keywords FFDC On Test Case Fail AND
62 ... Delete Created User ${random_userid}
63
64 ${random_userid} ${random_username}= Create Random IPMI User
65 Set Test Variable ${random_userid}
66
67 Run IPMI Standard Command
68 ... user set password ${random_userid} ${valid_password}
69 Run IPMI Standard Command user enable ${random_userid}
70 # Delay added for IPMI user to get enabled.
71 Sleep 5s
72 # Set admin privilege and enable IPMI messaging for newly created user.
73 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
74
75 ${users_access}= Get User Access Ipmi ${CHANNEL_NUMBER}
76 Rprint Vars users_access
77
78 ${index}= Evaluate ${random_userid} - 1
79 # Verify the user access of created user.
80 Valid Value users_access[${index}]['id'] ['${random_userid}']
81 Valid Value users_access[${index}]['name'] ['${random_username}']
82 Valid Value users_access[${index}]['callin'] ['true']
83 Valid Value users_access[${index}]['link'] ['false']
84 Valid Value users_access[${index}]['auth'] ['true']
85 Valid Value users_access[${index}]['ipmi'] ['ADMINISTRATOR']
86
87
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060088Verify IPMI User Creation With Valid Name And ID
89 [Documentation] Create user via IPMI and verify.
George Keishingb98036a2022-01-31 12:39:47 -060090 [Tags] Verify_IPMI_User_Creation_With_Valid_Name_And_ID
Tony Leef9379e82020-01-08 18:20:38 +080091 [Teardown] Run Keywords FFDC On Test Case Fail AND
92 ... Delete Created User ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060093
Anusha Dathatridd8e7d82019-12-03 07:45:30 -060094 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +080095 Set Test Variable ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060096
97
98Verify IPMI User Creation With Invalid Name
99 [Documentation] Verify error while creating IPMI user with invalid
George Keishingc2a6f092019-02-20 12:26:54 -0600100 ... name(e.g. user name with special characters).
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600101 [Tags] Verify_IPMI_User_Creation_With_Invalid_Name
102
Rahul Maheshwari976a1702019-02-21 01:47:58 -0600103 ${random_userid}= Evaluate random.randint(2, 15) modules=random
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600104 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
105 ... user set name ${random_userid} ${invalid_username}
106 Should Contain ${msg} Invalid data
107
108
109Verify IPMI User Creation With Invalid ID
110 [Documentation] Verify error while creating IPMI user with invalid
111 ... ID(i.e. any number greater than 15 or 0).
112 [Tags] Verify_IPMI_User_Creation_With_Invalid_ID
113
114 @{id_list}= Create List
115 ${random_invalid_id}= Evaluate random.randint(16, 1000) modules=random
116 Append To List ${id_list} ${random_invalid_id}
117 Append To List ${id_list} 0
118
Sushil Singhbe97ffc2019-06-04 06:34:24 -0500119 FOR ${id} IN @{id_list}
120 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
121 ... user set name ${id} newuser
Tony Leec8ed7532020-01-09 16:15:16 +0800122 Should Contain Any ${msg} User ID is limited to range Parameter out of range
Sushil Singhbe97ffc2019-06-04 06:34:24 -0500123 END
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600124
125Verify Setting IPMI User With Invalid Password
126 [Documentation] Verify error while setting IPMI user with invalid
127 ... password.
128 [Tags] Verify_Setting_IPMI_User_With_Invalid_Password
Tony Leef9379e82020-01-08 18:20:38 +0800129 [Teardown] Run Keywords FFDC On Test Case Fail AND
130 ... Delete Created User ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600131
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600132 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800133 Set Test Variable ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600134
135 # Set invalid password for newly created user.
136 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
137 ... user set password ${random_userid} ${invalid_password}
138
Sushma M M97fccae2020-07-27 14:55:19 -0500139 # Delay added for user password to get set.
140 Sleep 5s
141
Anusha Dathatria54cddc2019-08-07 10:01:16 -0500142 Should Contain ${msg} Set User Password command failed
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600143
144Verify Setting IPMI Root User With New Name
145 [Documentation] Verify error while setting IPMI root user with new
146 ... name.
147 [Tags] Verify_Setting_IPMI_Root_User_With_New_Name
148
149 # Set invalid password for newly created user.
150 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
151 ... user set name ${root_userid} abcd
152
153 Should Contain ${msg} Set User Name command failed
154
155
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600156Verify IPMI User Password Via Test Command
157 [Documentation] Verify IPMI user password using test command.
158 [Tags] Verify_IPMI_User_Password_Via_Test_Command
Tony Leef9379e82020-01-08 18:20:38 +0800159 [Teardown] Run Keywords FFDC On Test Case Fail AND
160 ... Delete Created User ${random_userid}
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600161
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600162 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800163 Set Test Variable ${random_userid}
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600164
165 # Set valid password for newly created user.
166 Run IPMI Standard Command
167 ... user set password ${random_userid} ${valid_password}
168
169 # Verify newly set password using test command.
170 ${msg}= Run IPMI Standard Command
171 ... user test ${random_userid} ${max_password_length} ${valid_password}
172
173 Should Contain ${msg} Success
174
175
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600176Verify Setting Valid Password For IPMI User
177 [Documentation] Set valid password for IPMI user and verify.
178 [Tags] Verify_Setting_Valid_Password_For_IPMI_User
Tony Leef9379e82020-01-08 18:20:38 +0800179 [Teardown] Run Keywords FFDC On Test Case Fail AND
180 ... Delete Created User ${random_userid}
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600181
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600182 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800183 Set Test Variable ${random_userid}
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600184
185 # Set valid password for newly created user.
186 Run IPMI Standard Command
187 ... user set password ${random_userid} ${valid_password}
188
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600189 Run IPMI Standard Command user enable ${random_userid}
190
Rahul Maheshwari7d232ab2019-08-29 06:44:16 -0500191 # Delay added for IPMI user to get enable
192 Sleep 5s
193
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600194 # Set admin privilege and enable IPMI messaging for newly created user
195 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
196
197 Verify IPMI Username And Password ${random_username} ${valid_password}
198
199
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600200Verify IPMI User Creation With Same Name
201 [Documentation] Verify error while creating two IPMI user with same name.
202 [Tags] Verify_IPMI_User_Creation_With_Same_Name
Tony Leef9379e82020-01-08 18:20:38 +0800203 [Teardown] Run Keywords FFDC On Test Case Fail AND
204 ... Delete Created User 2
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600205
206 ${random_username}= Generate Random String 8 [LETTERS]
207 IPMI Create User 2 ${random_username}
208
209 # Set same username for another IPMI user.
210 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
211 ... user set name 3 ${random_username}
212 Should Contain ${msg} Invalid data field in request
213
214
215Verify Setting IPMI User With Null Password
216 [Documentation] Verify error while setting IPMI user with null
217 ... password.
218 [Tags] Verify_Setting_IPMI_User_With_Null_Password
Tony Leef9379e82020-01-08 18:20:38 +0800219 [Teardown] Run Keywords FFDC On Test Case Fail AND
220 ... Delete Created User ${random_userid}
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600221
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600222 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800223 Set Test Variable ${random_userid}
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600224
225 # Set null password for newly created user.
226 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
227 ... user set password ${random_userid} ""
228
229 Should Contain ${msg} Invalid data field in request
230
231
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600232Verify IPMI User Deletion
233 [Documentation] Delete user via IPMI and verify.
234 [Tags] Verify_IPMI_User_Deletion
Tony Leef9379e82020-01-08 18:20:38 +0800235 [Teardown] Run Keywords FFDC On Test Case Fail AND
236 ... Delete Created User ${random_userid}
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600237
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600238 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800239 Set Test Variable ${random_userid}
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600240 # Delete IPMI User and verify
241 Run IPMI Standard Command user set name ${random_userid} ""
Rahul Maheshwari4f4688f2019-02-28 00:49:10 -0600242 ${user_info}= Get User Info ${random_userid}
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600243 Should Be Equal ${user_info['user_name']} ${EMPTY}
244
245
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600246Test IPMI User Privilege Level
247 [Documentation] Verify IPMI user with user privilege can only run user level commands.
248 [Tags] Test_IPMI_User_Privilege_Level
249 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800250 [Teardown] Run Keywords FFDC On Test Case Fail AND
251 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600252
253 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
254 ${user_priv} Passed Failed Failed
255
256
257Test IPMI Operator Privilege Level
258 [Documentation] Verify IPMI user with operator privilege can only run user and operator levels commands.
259 ... level is set to operator.
260 [Tags] Test_IPMI_Operator_Privilege_Level
261 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800262 [Teardown] Run Keywords FFDC On Test Case Fail AND
263 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600264
265 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
266 ${operator_priv} Passed Passed Failed
267
268
269Test IPMI Administrator Privilege Level
270 [Documentation] Verify IPMI user with admin privilege can run all levels command.
271 [Tags] Test_IPMI_Administrator_Privilege_Level
272 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800273 [Teardown] Run Keywords FFDC On Test Case Fail AND
274 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600275
276 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
277 ${admin_level_priv} Passed Passed Passed
278
279
280Test IPMI No Access Privilege Level
281 [Documentation] Verify IPMI user with no access privilege can not run only any level command.
282 [Tags] Test_IPMI_No_Access_Privilege_Level
283 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800284 [Teardown] Run Keywords FFDC On Test Case Fail AND
285 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600286
287 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
288 ${no_access_priv} Failed Failed Failed
289
290
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600291Enable IPMI User And Verify
292 [Documentation] Enable IPMI user and verify that the user is able
293 ... to run IPMI command.
294 [Tags] Enable_IPMI_User_And_Verify
Tony Leef9379e82020-01-08 18:20:38 +0800295 [Teardown] Run Keywords FFDC On Test Case Fail AND
296 ... Delete Created User ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600297
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600298 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800299 Set Test Variable ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600300 Run IPMI Standard Command
301 ... user set password ${random_userid} ${valid_password}
302
303 # Set admin privilege and enable IPMI messaging for newly created user.
304 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
305
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600306 # Delay added for user privilege to get set.
Rahul Maheshwari62c8aea2019-09-27 05:23:12 -0500307 Sleep 5s
308
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600309 Enable IPMI User And Verify ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600310
311 # Verify that enabled IPMI user is able to run IPMI command.
312 Verify IPMI Username And Password ${random_username} ${valid_password}
313
314
315Disable IPMI User And Verify
316 [Documentation] Disable IPMI user and verify that that the user
317 ... is unable to run IPMI command.
318 [Tags] Disable_IPMI_User_And_Verify
Tony Leef9379e82020-01-08 18:20:38 +0800319 [Teardown] Run Keywords FFDC On Test Case Fail AND
320 ... Delete Created User ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600321
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600322 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800323 Set Test Variable ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600324 Run IPMI Standard Command
325 ... user set password ${random_userid} ${valid_password}
326
327 # Set admin privilege and enable IPMI messaging for newly created user.
328 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
329
330 # Disable IPMI user and verify.
331 Run IPMI Standard Command user disable ${random_userid}
332 ${user_info}= Get User Info ${random_userid}
333 Should Be Equal ${user_info['enable_status']} disabled
334
335 # Verify that disabled IPMI user is unable to run IPMI command.
336 ${msg}= Run Keyword And Expect Error * Verify IPMI Username And Password
337 ... ${random_username} ${valid_password}
Rahul Maheshwaric3d1e962019-03-06 23:53:21 -0600338 Should Contain ${msg} Unable to establish IPMI
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600339
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600340
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600341Verify IPMI Root User Password Change
342 [Documentation] Change IPMI root user password and verify that
343 ... root user is able to run IPMI command.
344 [Tags] Verify_IPMI_Root_User_Password_Change
Tony Leef9379e82020-01-08 18:20:38 +0800345 [Teardown] Run Keywords FFDC On Test Case Fail AND
346 ... Wait Until Keyword Succeeds 15 sec 5 sec
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600347 ... Set Default Password For IPMI Root User
348
Anusha Dathatri9f84bc82020-01-28 07:46:48 -0600349 # User input password should be minimum 8 characters long.
350 Valid Length OPENBMC_PASSWORD min_length=8
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600351 # Set new password for root user.
352 Run IPMI Standard Command
353 ... user set password ${root_userid} ${valid_password}
354
Sushma M M97fccae2020-07-27 14:55:19 -0500355 # Delay added for user password to get set.
356 Sleep 5s
357
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600358 # Verify that root user is able to run IPMI command using new password.
Rahul Maheshwari62c8aea2019-09-27 05:23:12 -0500359 Wait Until Keyword Succeeds 15 sec 5 sec Verify IPMI Username And Password
360 ... root ${valid_password}
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600361
362
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500363Verify Administrator And No Access Privilege For Different Channels
364 [Documentation] Set administrator and no access privilege for different channels and verify.
365 [Tags] Verify_Administrator_And_No_Access_Privilege_For_Different_Channels
Tony Leef9379e82020-01-08 18:20:38 +0800366 [Teardown] Run Keywords FFDC On Test Case Fail AND
367 ... Delete Created User ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500368
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600369 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800370 Set Test Variable ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500371 Run IPMI Standard Command
372 ... user set password ${random_userid} ${valid_password}
373
374 # Set admin privilege for newly created user with channel 1.
375 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} 1
376
377 # Set no access privilege for newly created user with channel 2.
378 Set Channel Access ${random_userid} ipmi=on privilege=${no_access_priv} 2
379
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600380 Enable IPMI User And Verify ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500381
382 # Verify that user is able to run administrator level IPMI command with channel 1.
383 Verify IPMI Command ${random_username} ${valid_password} Administrator 1
384
385 # Verify that user is unable to run IPMI command with channel 2.
386 Run IPMI Standard Command sel info 2 expected_rc=${1} U=${random_username} P=${valid_password}
387
388
389Verify Operator And User Privilege For Different Channels
390 [Documentation] Set operator and user privilege for different channels and verify.
391 [Tags] Verify_Operator_And_User_Privilege_For_Different_Channels
Tony Leef9379e82020-01-08 18:20:38 +0800392 [Teardown] Run Keywords FFDC On Test Case Fail AND
393 ... Delete Created User ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500394
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600395 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800396 Set Test Variable ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500397 Run IPMI Standard Command
398 ... user set password ${random_userid} ${valid_password}
399
400 # Set operator privilege for newly created user with channel 1.
401 Set Channel Access ${random_userid} ipmi=on privilege=${operator_priv} 1
402
403 # Set user privilege for newly created user with channel 2.
404 Set Channel Access ${random_userid} ipmi=on privilege=${user_priv} 2
405
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600406 Enable IPMI User And Verify ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500407
408 # Verify that user is able to run operator level IPMI command with channel 1.
409 Verify IPMI Command ${random_username} ${valid_password} Operator 1
410
411 # Verify that user is able to run user level IPMI command with channel 2.
412 Verify IPMI Command ${random_username} ${valid_password} User 2
413
414
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600415Verify Setting IPMI User With Max Password Length
416 [Documentation] Verify IPMI user creation with password length of 20 characters.
417 [Tags] Verify_Setting_IPMI_User_With_Max_Password_Length
418 [Template] Set User Password And Verify
419
420 # password_length password_option expected_status
421 20 20 ${True}
422
423
424Verify Setting IPMI User With Invalid Password Length
425 [Documentation] Verify that IPMI user cannot be set with 21 character password using 16 char
426 ... or 20 char password option.
427 [Tags] Verify_Setting_IPMI_User_With_Invalid_Password_Length
428 [Template] Set User Password And Verify
429
430 # password_length password_option expected_status
431 21 16 ${False}
432 21 20 ${False}
433
434
435Verify Setting IPMI User With 16 Character Password
436 [Documentation] Verify that IPMI user can create a 16 character password using 16 char or 20
437 ... char password option.
438 [Tags] Verify_Setting_IPMI_User_With_16_Character_Password
439 [Template] Set User Password And Verify
440
441 # password_length password_option expected_status
442 16 16 ${True}
443 16 20 ${True}
444
445
446Verify Default Selection Of 16 Character Password For IPMI User
447 [Documentation] Verify that ipmitool by default opts for the 16 character option when given a
448 ... password whose length is in between 17 and 20.
449 [Tags] Verify_Default_Selection_Of_16_Character_Password_For_IPMI_User
450 [Template] Set User Password And Verify
451
452 # password_length password_option expected_status
453 17 16 ${True}
454 20 16 ${True}
455
456
Anusha Dathatri466816f2020-01-30 05:12:36 -0600457Verify Minimum Password Length For IPMI User
458 [Documentation] Verify minimum password length of 8 characters.
459 [Tags] Verify_Minimum_Password_Length_For_IPMI_User
460 [Template] Set User Password And Verify
461
462 # password_length password_option expected_status
463 7 16 ${False}
464 8 16 ${True}
465 7 20 ${False}
466 8 20 ${True}
467
468
Ashwini Chandrappa5cefabf2021-08-30 23:48:14 -0500469Verify Continuous IPMI Command Execution
470 [Documentation] Verify that continuous IPMI command execution runs fine.
471 [Tags] Verify_Continuous_IPMI_Command_Execution
472
473 FOR ${i} IN RANGE ${USER_LOOP_COUNT}
474 Run IPMI Standard Command lan print
475 Run IPMI Standard Command power status
476 Run IPMI Standard Command fru list
477 Run IPMI Standard Command sel list
478 END
479
480
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600481*** Keywords ***
482
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600483Create Random IPMI User
484 [Documentation] Create IPMI user with random username and userid and return those fields.
485
486 ${random_username}= Generate Random String 8 [LETTERS]
487 ${random_userid}= Evaluate random.randint(2, 15) modules=random
488 IPMI Create User ${random_userid} ${random_username}
489 [Return] ${random_userid} ${random_username}
490
491
492Enable IPMI User And Verify
493 [Documentation] Enable the userid and verify that it has been enabled.
494 [Arguments] ${userid}
495
496 # Description of argument(s):
497 # userid A numeric userid (e.g. "4").
498
499 Run IPMI Standard Command user enable ${userid}
500 ${user_info}= Get User Info ${userid}
501 Valid Value user_info['enable_status'] ['enabled']
502
503
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600504Set Default Password For IPMI Root User
505 [Documentation] Set default password for IPMI root user (i.e. 0penBmc).
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600506 # Set default password for root user.
507 ${result}= Run External IPMI Standard Command
508 ... user set password ${root_userid} ${OPENBMC_PASSWORD}
509 ... P=${valid_password}
510 Should Contain ${result} Set User Password command successful
511
512 # Verify that root user is able to run IPMI command using default password.
513 Verify IPMI Username And Password root ${OPENBMC_PASSWORD}
514
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600515
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600516Test IPMI User Privilege
517 [Documentation] Test IPMI user privilege by executing IPMI command with different privileges.
518 [Arguments] ${privilege_level} ${user_cmd_status} ${operator_cmd_status} ${admin_cmd_status}
519
520 # Description of argument(s):
521 # privilege_level Privilege level of IPMI user (e.g. 4, 3).
522 # user_cmd_status Expected status of IPMI command run with the "User"
523 # privilege (i.e. "Passed" or "Failed").
524 # operator_cmd_status Expected status of IPMI command run with the "Operator"
525 # privilege (i.e. "Passed" or "Failed").
526 # admin_cmd_status Expected status of IPMI command run with the "Administrator"
527 # privilege (i.e. "Passed" or "Failed").
528
529 # Create IPMI user and set valid password.
530 ${random_username}= Generate Random String 8 [LETTERS]
531 ${random_userid}= Evaluate random.randint(2, 15) modules=random
532 IPMI Create User ${random_userid} ${random_username}
Tony Leef9379e82020-01-08 18:20:38 +0800533 Set Test Variable ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600534 Run IPMI Standard Command
535 ... user set password ${random_userid} ${valid_password}
536
537 # Set privilege and enable IPMI messaging for newly created user.
538 Set Channel Access ${random_userid} ipmi=on privilege=${privilege_level}
539
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600540 # Delay added for user privilege to get set.
Rahul Maheshwari62c8aea2019-09-27 05:23:12 -0500541 Sleep 5s
542
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600543 Enable IPMI User And Verify ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600544
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500545 Verify IPMI Command ${random_username} ${valid_password} User
546 ... expected_status=${user_cmd_status}
547 Verify IPMI Command ${random_username} ${valid_password} Operator
548 ... expected_status=${operator_cmd_status}
549 Verify IPMI Command ${random_username} ${valid_password} Administrator
550 ... expected_status=${admin_cmd_status}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600551
552
553Verify IPMI Command
554 [Documentation] Verify IPMI command execution with given username,
555 ... password, privilege and expected status.
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500556 [Arguments] ${username} ${password} ${privilege} ${channel}=${1} ${expected_status}=Passed
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600557 # Description of argument(s):
558 # username The user name (e.g. "root", "robert", etc.).
559 # password The user password (e.g. "0penBmc", "0penBmc1", etc.).
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600560 # privilege The session privilege for IPMI command (e.g. "User", "Operator", etc.).
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500561 # channel The user channel number (e.g. "1" or "2").
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600562 # expected_status Expected status of IPMI command run with the user
563 # of above password and privilege (i.e. "Passed" or "Failed").
564
565 ${expected_rc}= Set Variable If '${expected_status}' == 'Passed' ${0} ${1}
Rahul Maheshwariceb282e2019-09-16 00:11:41 -0500566 Wait Until Keyword Succeeds 15 sec 5 sec Run IPMI Standard Command
567 ... sel info ${channel} expected_rc=${expected_rc} U=${username} P=${password}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600568 ... L=${privilege}
569
570
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600571Set User Password And Verify
572 [Documentation] Create a user and set its password with given length and option.
573 [Arguments] ${password_length} ${password_option} ${expected_result}
Tony Leef9379e82020-01-08 18:20:38 +0800574 [Teardown] Run Keyword Delete Created User ${random_userid}
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600575 # Description of argument(s):
576 # password_length Length of password to be generated and used (e.g. "16").
577 # password_option Password length option to be given in IPMI command (e.g. "16", "20").
578 # expected_result Expected result for setting the user's password (e.g. "True", "False").
579
580 Rprint Vars password_length password_option expected_result
581 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800582 Set Test Variable ${random_userid}
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600583 ${password}= Get From Dictionary ${password_values} ${password_length}
584 Rprint Vars random_userid password
585
586 # Set password for newly created user.
587 ${status}= Run Keyword And Return Status Run IPMI Standard Command
588 ... user set password ${random_userid} ${password} ${password_option}
589 Rprint Vars status
590 Valid Value status [${expected_result}]
Anusha Dathatri7f810712020-01-07 04:13:16 -0600591 Return From Keyword If '${expected_result}' == '${False}'
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600592
593 # Set admin privilege and enable IPMI messaging for newly created user.
594 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
595
596 # Delay added for user privilege to get set.
597 Sleep 5s
598
599 Enable IPMI User And Verify ${random_userid}
600
601 # For password_option 16, passwords with length between 17 and 20 will be truncated.
602 # For all other cases, passwords will be retained as it is to verify.
603 ${truncated_password}= Set Variable ${password[:${password_option}]}
604 Rprint Vars truncated_password
605 ${status}= Run Keyword And Return Status Verify IPMI Username And Password ${random_username}
606 ... ${truncated_password}
607 Rprint Vars status
608 Valid Value status [${expected_result}]
609
610
Rahul Maheshwarif646baa2019-02-20 12:29:35 -0600611Test Teardown Execution
612 [Documentation] Do the test teardown execution.
613
614 FFDC On Test Case Fail
Tony Leef9379e82020-01-08 18:20:38 +0800615
616
617Delete Created User
618 [Documentation] Delete created IPMI user.
619 [Arguments] ${userid}
620 # Description of argument(s):
621 # userid The user ID (e.g. "1", "2", etc.).
622
623 Run IPMI Standard Command user set name ${userid} ""
Ashwini Chandrappa5cefabf2021-08-30 23:48:14 -0500624 Sleep 5s