blob: 7cccf29decdaf0d6842e07595813cfe80378c989 [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
13*** Variables ***
14
15${invalid_username} user%
16${invalid_password} abc123
chithragc0582f72021-12-08 10:34:23 -050017${new_username} newuser
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060018${root_userid} 1
19${operator_level_priv} 0x3
Rahul Maheshwaric05bf562019-03-01 04:02:53 -060020${user_priv} 2
21${operator_priv} 3
Rahul Maheshwarief0a7352019-02-20 11:07:48 -060022${admin_level_priv} 4
Rahul Maheshwaric05bf562019-03-01 04:02:53 -060023${no_access_priv} 15
Rahul Maheshwaric19f8382019-02-20 08:19:22 -060024${valid_password} 0penBmc1
25${max_password_length} 20
Rahul Maheshwarief0a7352019-02-20 11:07:48 -060026${ipmi_setaccess_cmd} channel setaccess
Anusha Dathatridd8e7d82019-12-03 07:45:30 -060027&{password_values} 16=0penBmc10penBmc2 17=0penBmc10penBmc2B
28 ... 20=0penBmc10penBmc2Bmc3 21=0penBmc10penBmc2Bmc34
Anusha Dathatri466816f2020-01-30 05:12:36 -060029 ... 7=0penBmc 8=0penBmc0
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060030
Ashwini Chandrappa5cefabf2021-08-30 23:48:14 -050031# User defined count.
32${USER_LOOP_COUNT} 20
33
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060034*** Test Cases ***
35
Rahul Maheshwariffc77352019-02-25 09:05:27 -060036Verify IPMI User Summary
37 [Documentation] Verify IPMI maximum supported IPMI user ID and
38 ... enabled user form user summary
39 [Tags] Verify_IPMI_User_Summary
Ashwini Chandrappa12be4b42022-03-15 23:02:07 -050040 [Teardown] Run Keywords FFDC On Test Case Fail AND Delete Created User ${random_userid}
Rahul Maheshwariffc77352019-02-25 09:05:27 -060041
Ashwini Chandrappa12be4b42022-03-15 23:02:07 -050042 # Create random user
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
Ashwini Chandrappa12be4b42022-03-15 23:02:07 -050047 ${output}= Run IPMI Standard Command user summary ${CHANNEL_NUMBER}
48 # TODO: Verification of enabled IPMI user needs to be done.
49 # https://github.com/openbmc/openbmc-test-automation/issues/2189
50
51 ${maximum_ids}= Get Lines Containing String ${output} Maximum IDs
52
Rahul Maheshwariffc77352019-02-25 09:05:27 -060053 Should Contain ${maximum_ids} 15
54
55
Tony Lee3d351ee2020-02-19 10:21:04 +080056Verify IPMI User List
57 [Documentation] Verify user list via IPMI.
58 [Tags] Verify_IPMI_User_List
59 [Teardown] Run Keywords FFDC On Test Case Fail AND
60 ... Delete Created User ${random_userid}
61
62 ${random_userid} ${random_username}= Create Random IPMI User
63 Set Test Variable ${random_userid}
64
65 Run IPMI Standard Command
66 ... user set password ${random_userid} ${valid_password}
67 Run IPMI Standard Command user enable ${random_userid}
68 # Delay added for IPMI user to get enabled.
69 Sleep 5s
70 # Set admin privilege and enable IPMI messaging for newly created user.
71 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
72
73 ${users_access}= Get User Access Ipmi ${CHANNEL_NUMBER}
74 Rprint Vars users_access
75
76 ${index}= Evaluate ${random_userid} - 1
77 # Verify the user access of created user.
78 Valid Value users_access[${index}]['id'] ['${random_userid}']
79 Valid Value users_access[${index}]['name'] ['${random_username}']
80 Valid Value users_access[${index}]['callin'] ['true']
81 Valid Value users_access[${index}]['link'] ['false']
82 Valid Value users_access[${index}]['auth'] ['true']
83 Valid Value users_access[${index}]['ipmi'] ['ADMINISTRATOR']
84
85
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060086Verify IPMI User Creation With Valid Name And ID
87 [Documentation] Create user via IPMI and verify.
George Keishingb98036a2022-01-31 12:39:47 -060088 [Tags] Verify_IPMI_User_Creation_With_Valid_Name_And_ID
Tony Leef9379e82020-01-08 18:20:38 +080089 [Teardown] Run Keywords FFDC On Test Case Fail AND
90 ... Delete Created User ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060091
Anusha Dathatridd8e7d82019-12-03 07:45:30 -060092 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +080093 Set Test Variable ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060094
95
96Verify IPMI User Creation With Invalid Name
97 [Documentation] Verify error while creating IPMI user with invalid
George Keishingc2a6f092019-02-20 12:26:54 -060098 ... name(e.g. user name with special characters).
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -060099 [Tags] Verify_IPMI_User_Creation_With_Invalid_Name
100
Rahul Maheshwari976a1702019-02-21 01:47:58 -0600101 ${random_userid}= Evaluate random.randint(2, 15) modules=random
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600102 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
103 ... user set name ${random_userid} ${invalid_username}
104 Should Contain ${msg} Invalid data
105
106
107Verify IPMI User Creation With Invalid ID
108 [Documentation] Verify error while creating IPMI user with invalid
109 ... ID(i.e. any number greater than 15 or 0).
110 [Tags] Verify_IPMI_User_Creation_With_Invalid_ID
111
112 @{id_list}= Create List
113 ${random_invalid_id}= Evaluate random.randint(16, 1000) modules=random
114 Append To List ${id_list} ${random_invalid_id}
115 Append To List ${id_list} 0
116
Sushil Singhbe97ffc2019-06-04 06:34:24 -0500117 FOR ${id} IN @{id_list}
118 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
119 ... user set name ${id} newuser
Tony Leec8ed7532020-01-09 16:15:16 +0800120 Should Contain Any ${msg} User ID is limited to range Parameter out of range
Sushil Singhbe97ffc2019-06-04 06:34:24 -0500121 END
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600122
123Verify Setting IPMI User With Invalid Password
124 [Documentation] Verify error while setting IPMI user with invalid
125 ... password.
126 [Tags] Verify_Setting_IPMI_User_With_Invalid_Password
Tony Leef9379e82020-01-08 18:20:38 +0800127 [Teardown] Run Keywords FFDC On Test Case Fail AND
128 ... Delete Created User ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600129
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600130 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800131 Set Test Variable ${random_userid}
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600132
133 # Set invalid password for newly created user.
134 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
135 ... user set password ${random_userid} ${invalid_password}
136
Sushma M M97fccae2020-07-27 14:55:19 -0500137 # Delay added for user password to get set.
138 Sleep 5s
139
Anusha Dathatria54cddc2019-08-07 10:01:16 -0500140 Should Contain ${msg} Set User Password command failed
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600141
142Verify Setting IPMI Root User With New Name
143 [Documentation] Verify error while setting IPMI root user with new
144 ... name.
145 [Tags] Verify_Setting_IPMI_Root_User_With_New_Name
146
147 # Set invalid password for newly created user.
148 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
149 ... user set name ${root_userid} abcd
150
151 Should Contain ${msg} Set User Name command failed
152
153
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600154Verify IPMI User Password Via Test Command
155 [Documentation] Verify IPMI user password using test command.
156 [Tags] Verify_IPMI_User_Password_Via_Test_Command
Tony Leef9379e82020-01-08 18:20:38 +0800157 [Teardown] Run Keywords FFDC On Test Case Fail AND
158 ... Delete Created User ${random_userid}
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600159
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600160 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800161 Set Test Variable ${random_userid}
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600162
163 # Set valid password for newly created user.
164 Run IPMI Standard Command
165 ... user set password ${random_userid} ${valid_password}
166
167 # Verify newly set password using test command.
168 ${msg}= Run IPMI Standard Command
169 ... user test ${random_userid} ${max_password_length} ${valid_password}
170
171 Should Contain ${msg} Success
172
173
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600174Verify Setting Valid Password For IPMI User
175 [Documentation] Set valid password for IPMI user and verify.
176 [Tags] Verify_Setting_Valid_Password_For_IPMI_User
Tony Leef9379e82020-01-08 18:20:38 +0800177 [Teardown] Run Keywords FFDC On Test Case Fail AND
178 ... Delete Created User ${random_userid}
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600179
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600180 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800181 Set Test Variable ${random_userid}
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600182
183 # Set valid password for newly created user.
184 Run IPMI Standard Command
185 ... user set password ${random_userid} ${valid_password}
186
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600187 Run IPMI Standard Command user enable ${random_userid}
188
Rahul Maheshwari7d232ab2019-08-29 06:44:16 -0500189 # Delay added for IPMI user to get enable
190 Sleep 5s
191
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600192 # Set admin privilege and enable IPMI messaging for newly created user
193 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
194
195 Verify IPMI Username And Password ${random_username} ${valid_password}
196
197
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600198Verify IPMI User Creation With Same Name
199 [Documentation] Verify error while creating two IPMI user with same name.
200 [Tags] Verify_IPMI_User_Creation_With_Same_Name
Tony Leef9379e82020-01-08 18:20:38 +0800201 [Teardown] Run Keywords FFDC On Test Case Fail AND
202 ... Delete Created User 2
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600203
204 ${random_username}= Generate Random String 8 [LETTERS]
205 IPMI Create User 2 ${random_username}
206
207 # Set same username for another IPMI user.
208 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
209 ... user set name 3 ${random_username}
210 Should Contain ${msg} Invalid data field in request
211
212
213Verify Setting IPMI User With Null Password
214 [Documentation] Verify error while setting IPMI user with null
215 ... password.
216 [Tags] Verify_Setting_IPMI_User_With_Null_Password
Tony Leef9379e82020-01-08 18:20:38 +0800217 [Teardown] Run Keywords FFDC On Test Case Fail AND
218 ... Delete Created User ${random_userid}
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600219
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600220 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800221 Set Test Variable ${random_userid}
Rahul Maheshwari404da0d2019-02-18 23:24:17 -0600222
223 # Set null password for newly created user.
224 ${msg}= Run Keyword And Expect Error * Run IPMI Standard Command
225 ... user set password ${random_userid} ""
226
227 Should Contain ${msg} Invalid data field in request
228
229
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600230Verify IPMI User Deletion
231 [Documentation] Delete user via IPMI and verify.
232 [Tags] Verify_IPMI_User_Deletion
Tony Leef9379e82020-01-08 18:20:38 +0800233 [Teardown] Run Keywords FFDC On Test Case Fail AND
234 ... Delete Created User ${random_userid}
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600235
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600236 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800237 Set Test Variable ${random_userid}
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600238 # Delete IPMI User and verify
239 Run IPMI Standard Command user set name ${random_userid} ""
Rahul Maheshwari4f4688f2019-02-28 00:49:10 -0600240 ${user_info}= Get User Info ${random_userid}
Rahul Maheshwari645a1132019-02-18 03:29:27 -0600241 Should Be Equal ${user_info['user_name']} ${EMPTY}
242
243
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600244Test IPMI User Privilege Level
245 [Documentation] Verify IPMI user with user privilege can only run user level commands.
246 [Tags] Test_IPMI_User_Privilege_Level
247 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800248 [Teardown] Run Keywords FFDC On Test Case Fail AND
249 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600250
251 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
252 ${user_priv} Passed Failed Failed
253
254
255Test IPMI Operator Privilege Level
256 [Documentation] Verify IPMI user with operator privilege can only run user and operator levels commands.
257 ... level is set to operator.
258 [Tags] Test_IPMI_Operator_Privilege_Level
259 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800260 [Teardown] Run Keywords FFDC On Test Case Fail AND
261 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600262
263 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
264 ${operator_priv} Passed Passed Failed
265
266
267Test IPMI Administrator Privilege Level
268 [Documentation] Verify IPMI user with admin privilege can run all levels command.
269 [Tags] Test_IPMI_Administrator_Privilege_Level
270 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800271 [Teardown] Run Keywords FFDC On Test Case Fail AND
272 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600273
274 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
275 ${admin_level_priv} Passed Passed Passed
276
277
278Test IPMI No Access Privilege Level
279 [Documentation] Verify IPMI user with no access privilege can not run only any level command.
280 [Tags] Test_IPMI_No_Access_Privilege_Level
281 [Template] Test IPMI User Privilege
Tony Leef9379e82020-01-08 18:20:38 +0800282 [Teardown] Run Keywords FFDC On Test Case Fail AND
283 ... Delete Created User ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600284
285 #Privilege level User Cmd Status Operator Cmd Status Admin Cmd Status
286 ${no_access_priv} Failed Failed Failed
287
288
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600289Enable IPMI User And Verify
290 [Documentation] Enable IPMI user and verify that the user is able
291 ... to run IPMI command.
292 [Tags] Enable_IPMI_User_And_Verify
Tony Leef9379e82020-01-08 18:20:38 +0800293 [Teardown] Run Keywords FFDC On Test Case Fail AND
294 ... Delete Created User ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600295
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600296 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800297 Set Test Variable ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600298 Run IPMI Standard Command
299 ... user set password ${random_userid} ${valid_password}
300
301 # Set admin privilege and enable IPMI messaging for newly created user.
302 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
303
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600304 # Delay added for user privilege to get set.
Rahul Maheshwari62c8aea2019-09-27 05:23:12 -0500305 Sleep 5s
306
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600307 Enable IPMI User And Verify ${random_userid}
Gene Ratzlaff3a3d5d52022-05-05 08:30:52 -0400308 Wait And Confirm New Username And Password ${random_username} ${valid_password}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600309
310 # Verify that enabled IPMI user is able to run IPMI command.
311 Verify IPMI Username And Password ${random_username} ${valid_password}
312
313
314Disable IPMI User And Verify
315 [Documentation] Disable IPMI user and verify that that the user
316 ... is unable to run IPMI command.
317 [Tags] Disable_IPMI_User_And_Verify
Tony Leef9379e82020-01-08 18:20:38 +0800318 [Teardown] Run Keywords FFDC On Test Case Fail AND
319 ... Delete Created User ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600320
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600321 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800322 Set Test Variable ${random_userid}
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600323 Run IPMI Standard Command
324 ... user set password ${random_userid} ${valid_password}
325
326 # Set admin privilege and enable IPMI messaging for newly created user.
327 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
328
329 # Disable IPMI user and verify.
330 Run IPMI Standard Command user disable ${random_userid}
331 ${user_info}= Get User Info ${random_userid}
332 Should Be Equal ${user_info['enable_status']} disabled
333
334 # Verify that disabled IPMI user is unable to run IPMI command.
335 ${msg}= Run Keyword And Expect Error * Verify IPMI Username And Password
336 ... ${random_username} ${valid_password}
Rahul Maheshwaric3d1e962019-03-06 23:53:21 -0600337 Should Contain ${msg} Unable to establish IPMI
Rahul Maheshwari0c71f5e2019-02-20 03:52:55 -0600338
Rahul Maheshwaric19f8382019-02-20 08:19:22 -0600339
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600340Verify IPMI Root User Password Change
341 [Documentation] Change IPMI root user password and verify that
342 ... root user is able to run IPMI command.
343 [Tags] Verify_IPMI_Root_User_Password_Change
Tony Leef9379e82020-01-08 18:20:38 +0800344 [Teardown] Run Keywords FFDC On Test Case Fail AND
345 ... Wait Until Keyword Succeeds 15 sec 5 sec
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600346 ... Set Default Password For IPMI Root User
347
Anusha Dathatri9f84bc82020-01-28 07:46:48 -0600348 # User input password should be minimum 8 characters long.
349 Valid Length OPENBMC_PASSWORD min_length=8
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600350 # Set new password for root user.
351 Run IPMI Standard Command
352 ... user set password ${root_userid} ${valid_password}
353
Sushma M M97fccae2020-07-27 14:55:19 -0500354 # Delay added for user password to get set.
355 Sleep 5s
356
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600357 # Verify that root user is able to run IPMI command using new password.
Rahul Maheshwari62c8aea2019-09-27 05:23:12 -0500358 Wait Until Keyword Succeeds 15 sec 5 sec Verify IPMI Username And Password
359 ... root ${valid_password}
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600360
361
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500362Verify Administrator And No Access Privilege For Different Channels
363 [Documentation] Set administrator and no access privilege for different channels and verify.
364 [Tags] Verify_Administrator_And_No_Access_Privilege_For_Different_Channels
ganesanb0ae36202022-02-17 12:14:37 +0000365 [Setup] Check Active Ethernet 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.
ganesanb0ae36202022-02-17 12:14:37 +0000375 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv} ${CHANNEL_NUMBER}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500376
377 # Set no access privilege for newly created user with channel 2.
ganesanb0ae36202022-02-17 12:14:37 +0000378 Set Channel Access ${random_userid} ipmi=on privilege=${no_access_priv} ${secondary_channel_number}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500379
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.
ganesanb0ae36202022-02-17 12:14:37 +0000383 Verify IPMI Command ${random_username} ${valid_password} Administrator ${CHANNEL_NUMBER}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500384
385 # Verify that user is unable to run IPMI command with channel 2.
George Keishing6e641262022-05-05 10:46:22 -0500386 Run IPMI Standard Command
387 ... sel info ${secondary_channel_number} expected_rc=${1} U=${random_username} P=${valid_password}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500388
389
390Verify Operator And User Privilege For Different Channels
391 [Documentation] Set operator and user privilege for different channels and verify.
392 [Tags] Verify_Operator_And_User_Privilege_For_Different_Channels
ganesanb0ae36202022-02-17 12:14:37 +0000393 [Setup] Check Active Ethernet Channels
Tony Leef9379e82020-01-08 18:20:38 +0800394 [Teardown] Run Keywords FFDC On Test Case Fail AND
395 ... Delete Created User ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500396
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600397 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800398 Set Test Variable ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500399 Run IPMI Standard Command
400 ... user set password ${random_userid} ${valid_password}
401
402 # Set operator privilege for newly created user with channel 1.
ganesanb0ae36202022-02-17 12:14:37 +0000403 Set Channel Access ${random_userid} ipmi=on privilege=${operator_priv} ${CHANNEL_NUMBER}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500404
405 # Set user privilege for newly created user with channel 2.
ganesanb0ae36202022-02-17 12:14:37 +0000406 Set Channel Access ${random_userid} ipmi=on privilege=${user_priv} ${secondary_channel_number}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500407
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600408 Enable IPMI User And Verify ${random_userid}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500409
410 # Verify that user is able to run operator level IPMI command with channel 1.
ganesanb0ae36202022-02-17 12:14:37 +0000411 Verify IPMI Command ${random_username} ${valid_password} Operator ${CHANNEL_NUMBER}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500412
413 # Verify that user is able to run user level IPMI command with channel 2.
ganesanb0ae36202022-02-17 12:14:37 +0000414 Verify IPMI Command ${random_username} ${valid_password} User ${secondary_channel_number}
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500415
416
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600417Verify Setting IPMI User With Max Password Length
418 [Documentation] Verify IPMI user creation with password length of 20 characters.
419 [Tags] Verify_Setting_IPMI_User_With_Max_Password_Length
420 [Template] Set User Password And Verify
421
422 # password_length password_option expected_status
423 20 20 ${True}
424
425
426Verify Setting IPMI User With Invalid Password Length
427 [Documentation] Verify that IPMI user cannot be set with 21 character password using 16 char
428 ... or 20 char password option.
429 [Tags] Verify_Setting_IPMI_User_With_Invalid_Password_Length
430 [Template] Set User Password And Verify
431
432 # password_length password_option expected_status
433 21 16 ${False}
434 21 20 ${False}
435
436
437Verify Setting IPMI User With 16 Character Password
438 [Documentation] Verify that IPMI user can create a 16 character password using 16 char or 20
439 ... char password option.
440 [Tags] Verify_Setting_IPMI_User_With_16_Character_Password
441 [Template] Set User Password And Verify
442
443 # password_length password_option expected_status
444 16 16 ${True}
445 16 20 ${True}
446
447
448Verify Default Selection Of 16 Character Password For IPMI User
449 [Documentation] Verify that ipmitool by default opts for the 16 character option when given a
450 ... password whose length is in between 17 and 20.
451 [Tags] Verify_Default_Selection_Of_16_Character_Password_For_IPMI_User
452 [Template] Set User Password And Verify
453
454 # password_length password_option expected_status
455 17 16 ${True}
456 20 16 ${True}
457
458
Anusha Dathatri466816f2020-01-30 05:12:36 -0600459Verify Minimum Password Length For IPMI User
460 [Documentation] Verify minimum password length of 8 characters.
461 [Tags] Verify_Minimum_Password_Length_For_IPMI_User
462 [Template] Set User Password And Verify
463
464 # password_length password_option expected_status
465 7 16 ${False}
466 8 16 ${True}
467 7 20 ${False}
468 8 20 ${True}
469
470
Ashwini Chandrappa5cefabf2021-08-30 23:48:14 -0500471Verify Continuous IPMI Command Execution
472 [Documentation] Verify that continuous IPMI command execution runs fine.
473 [Tags] Verify_Continuous_IPMI_Command_Execution
474
475 FOR ${i} IN RANGE ${USER_LOOP_COUNT}
476 Run IPMI Standard Command lan print
477 Run IPMI Standard Command power status
478 Run IPMI Standard Command fru list
479 Run IPMI Standard Command sel list
480 END
481
482
chithragc0582f72021-12-08 10:34:23 -0500483Modify IPMI User
484 [Documentation] Verify modified IPMI user is communicating via IPMI.
485 [Tags] Modify_IPMI_User
486 [Teardown] Run Keywords FFDC On Test Case Fail AND
487 ... Delete Created User ${random_userid}
488
489 ${random_userid} ${random_username}= Create Random IPMI User
490 Set Test Variable ${random_userid}
491 Run IPMI Standard Command
492 ... user set password ${random_userid} ${valid_password}
493
494 # Set admin privilege and enable IPMI messaging for newly created user.
495 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
496
497 # Delay added for user privilege to get set.
498 Sleep 5s
499
500 Enable IPMI User And Verify ${random_userid}
501
502 # Verify that user is able to run administrator level IPMI command.
503 Verify IPMI Command ${random_username} ${valid_password} Administrator ${CHANNEL_NUMBER}
504
505 # Set different username for same IPMI user.
506 Run IPMI Standard Command
507 ... user set name ${random_userid} ${new_username}
Gene Ratzlaff3a3d5d52022-05-05 08:30:52 -0400508 Wait And Confirm New Username And Password ${new_username} ${valid_password}
chithragc0582f72021-12-08 10:34:23 -0500509
510 # Verify that user is able to run administrator level IPMI command.
511 Verify IPMI Command ${new_username} ${valid_password} Administrator ${CHANNEL_NUMBER}
512
513
Rahul Maheshwariddfc0cb2019-02-07 23:43:19 -0600514*** Keywords ***
515
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600516Create Random IPMI User
517 [Documentation] Create IPMI user with random username and userid and return those fields.
518
519 ${random_username}= Generate Random String 8 [LETTERS]
520 ${random_userid}= Evaluate random.randint(2, 15) modules=random
521 IPMI Create User ${random_userid} ${random_username}
522 [Return] ${random_userid} ${random_username}
523
524
525Enable IPMI User And Verify
526 [Documentation] Enable the userid and verify that it has been enabled.
527 [Arguments] ${userid}
528
529 # Description of argument(s):
530 # userid A numeric userid (e.g. "4").
531
532 Run IPMI Standard Command user enable ${userid}
533 ${user_info}= Get User Info ${userid}
534 Valid Value user_info['enable_status'] ['enabled']
535
536
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600537Set Default Password For IPMI Root User
538 [Documentation] Set default password for IPMI root user (i.e. 0penBmc).
Rahul Maheshwaridd63c742019-02-27 23:03:54 -0600539 # Set default password for root user.
540 ${result}= Run External IPMI Standard Command
541 ... user set password ${root_userid} ${OPENBMC_PASSWORD}
542 ... P=${valid_password}
543 Should Contain ${result} Set User Password command successful
544
545 # Verify that root user is able to run IPMI command using default password.
546 Verify IPMI Username And Password root ${OPENBMC_PASSWORD}
547
Rahul Maheshwarief0a7352019-02-20 11:07:48 -0600548
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600549Test IPMI User Privilege
550 [Documentation] Test IPMI user privilege by executing IPMI command with different privileges.
551 [Arguments] ${privilege_level} ${user_cmd_status} ${operator_cmd_status} ${admin_cmd_status}
552
553 # Description of argument(s):
554 # privilege_level Privilege level of IPMI user (e.g. 4, 3).
555 # user_cmd_status Expected status of IPMI command run with the "User"
556 # privilege (i.e. "Passed" or "Failed").
557 # operator_cmd_status Expected status of IPMI command run with the "Operator"
558 # privilege (i.e. "Passed" or "Failed").
559 # admin_cmd_status Expected status of IPMI command run with the "Administrator"
560 # privilege (i.e. "Passed" or "Failed").
561
562 # Create IPMI user and set valid password.
563 ${random_username}= Generate Random String 8 [LETTERS]
564 ${random_userid}= Evaluate random.randint(2, 15) modules=random
565 IPMI Create User ${random_userid} ${random_username}
Tony Leef9379e82020-01-08 18:20:38 +0800566 Set Test Variable ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600567 Run IPMI Standard Command
568 ... user set password ${random_userid} ${valid_password}
569
570 # Set privilege and enable IPMI messaging for newly created user.
571 Set Channel Access ${random_userid} ipmi=on privilege=${privilege_level}
572
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600573 # Delay added for user privilege to get set.
Rahul Maheshwari62c8aea2019-09-27 05:23:12 -0500574 Sleep 5s
575
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600576 Enable IPMI User And Verify ${random_userid}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600577
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500578 Verify IPMI Command ${random_username} ${valid_password} User
579 ... expected_status=${user_cmd_status}
580 Verify IPMI Command ${random_username} ${valid_password} Operator
581 ... expected_status=${operator_cmd_status}
582 Verify IPMI Command ${random_username} ${valid_password} Administrator
583 ... expected_status=${admin_cmd_status}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600584
585
586Verify IPMI Command
587 [Documentation] Verify IPMI command execution with given username,
588 ... password, privilege and expected status.
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500589 [Arguments] ${username} ${password} ${privilege} ${channel}=${1} ${expected_status}=Passed
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600590 # Description of argument(s):
591 # username The user name (e.g. "root", "robert", etc.).
592 # password The user password (e.g. "0penBmc", "0penBmc1", etc.).
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600593 # privilege The session privilege for IPMI command (e.g. "User", "Operator", etc.).
Rahul Maheshwari8e175622019-05-20 05:30:32 -0500594 # channel The user channel number (e.g. "1" or "2").
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600595 # expected_status Expected status of IPMI command run with the user
596 # of above password and privilege (i.e. "Passed" or "Failed").
597
598 ${expected_rc}= Set Variable If '${expected_status}' == 'Passed' ${0} ${1}
Rahul Maheshwariceb282e2019-09-16 00:11:41 -0500599 Wait Until Keyword Succeeds 15 sec 5 sec Run IPMI Standard Command
600 ... sel info ${channel} expected_rc=${expected_rc} U=${username} P=${password}
Rahul Maheshwaric05bf562019-03-01 04:02:53 -0600601 ... L=${privilege}
602
603
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600604Set User Password And Verify
605 [Documentation] Create a user and set its password with given length and option.
606 [Arguments] ${password_length} ${password_option} ${expected_result}
Tony Leef9379e82020-01-08 18:20:38 +0800607 [Teardown] Run Keyword Delete Created User ${random_userid}
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600608 # Description of argument(s):
609 # password_length Length of password to be generated and used (e.g. "16").
610 # password_option Password length option to be given in IPMI command (e.g. "16", "20").
611 # expected_result Expected result for setting the user's password (e.g. "True", "False").
612
613 Rprint Vars password_length password_option expected_result
614 ${random_userid} ${random_username}= Create Random IPMI User
Tony Leef9379e82020-01-08 18:20:38 +0800615 Set Test Variable ${random_userid}
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600616 ${password}= Get From Dictionary ${password_values} ${password_length}
617 Rprint Vars random_userid password
618
619 # Set password for newly created user.
620 ${status}= Run Keyword And Return Status Run IPMI Standard Command
621 ... user set password ${random_userid} ${password} ${password_option}
622 Rprint Vars status
623 Valid Value status [${expected_result}]
Anusha Dathatri7f810712020-01-07 04:13:16 -0600624 Return From Keyword If '${expected_result}' == '${False}'
Anusha Dathatridd8e7d82019-12-03 07:45:30 -0600625
626 # Set admin privilege and enable IPMI messaging for newly created user.
627 Set Channel Access ${random_userid} ipmi=on privilege=${admin_level_priv}
628
629 # Delay added for user privilege to get set.
630 Sleep 5s
631
632 Enable IPMI User And Verify ${random_userid}
633
634 # For password_option 16, passwords with length between 17 and 20 will be truncated.
635 # For all other cases, passwords will be retained as it is to verify.
636 ${truncated_password}= Set Variable ${password[:${password_option}]}
637 Rprint Vars truncated_password
638 ${status}= Run Keyword And Return Status Verify IPMI Username And Password ${random_username}
639 ... ${truncated_password}
640 Rprint Vars status
641 Valid Value status [${expected_result}]
642
643
Rahul Maheshwarif646baa2019-02-20 12:29:35 -0600644Test Teardown Execution
645 [Documentation] Do the test teardown execution.
646
647 FFDC On Test Case Fail
Tony Leef9379e82020-01-08 18:20:38 +0800648
649
650Delete Created User
651 [Documentation] Delete created IPMI user.
652 [Arguments] ${userid}
653 # Description of argument(s):
654 # userid The user ID (e.g. "1", "2", etc.).
655
656 Run IPMI Standard Command user set name ${userid} ""
Ashwini Chandrappa5cefabf2021-08-30 23:48:14 -0500657 Sleep 5s
ganesanb0ae36202022-02-17 12:14:37 +0000658
659
660Check Active Ethernet Channels
661 [Documentation] Check active ethernet channels and set suite variables.
662
663 ${channel_number_list}= Get Active Ethernet Channel List
664 ${channel_length}= Get Length ${channel_number_list}
665 Skip If '${channel_length}' == '1'
666 ... msg= Skips this test case as only one channel was in active.
667
668 FOR ${channel_num} IN @{channel_number_list}
669 ${secondary_channel_number}= Set Variable If ${channel_num} != ${CHANNEL_NUMBER} ${channel_num}
670 END
671
672 Set Suite Variable ${secondary_channel_number}
Ashwini Chandrappa12be4b42022-03-15 23:02:07 -0500673
674
675Suite Setup Execution
676 [Documentation] Check for the enabled user.
677
678 # Check for the enabled user count
679 ${resp}= Run IPMI Standard Command user summary ${CHANNEL_NUMBER}
680 ${enabled_user_count}=
681 ... Get Lines Containing String ${resp} Enabled User Count
682
683 Should not contain ${enabled_user_count} 15
684 ... msg=IPMI have reached maximum user count
George Keishing5e9fbbf2022-04-29 03:48:14 -0500685
686
Gene Ratzlaff3a3d5d52022-05-05 08:30:52 -0400687Wait And Confirm New Username And Password
George Keishing5e9fbbf2022-04-29 03:48:14 -0500688 [Documentation] Wait in loop trying to to confirm Username And Password.
689 [Arguments] ${username} ${password}
690
691 # Give time for previous command to complete.
692 Sleep 5s
693
694 # Looping verify that root user is able to run IPMI command using new password.
695 Wait Until Keyword Succeeds 15 sec 5 sec Verify IPMI Username And Password
696 ... ${username} ${password}