blob: cdb160c488ba0e981adb24e11ec44f889cc714db [file] [log] [blame]
Rahul Maheshwari51dee262019-03-06 23:36:21 -06001*** Settings ***
2Documentation Test IPMI and Redfish combinations for user management.
3
4Resource ../../lib/resource.robot
5Resource ../../lib/bmc_redfish_resource.robot
6Resource ../../lib/openbmc_ffdc.robot
7Resource ../../lib/ipmi_client.robot
Rahul Maheshwari75e91fe2019-03-29 05:32:28 -05008Library ../lib/ipmi_utils.py
Rahul Maheshwari51dee262019-03-06 23:36:21 -06009
10Test Setup Test Setup Execution
11Test Teardown Test Teardown Execution
12
13
14*** Variables ***
15
16${valid_password} 0penBmc1
Rahul Maheshwaricf2336e2019-03-15 00:49:13 -050017${valid_password2} 0penBmc2
Rahul Maheshwari75e91fe2019-03-29 05:32:28 -050018${admin_level_priv} 4
19${operator_level_priv} 3
Rahul Maheshwari51dee262019-03-06 23:36:21 -060020
21** Test Cases **
22
23Create Admin Redfish User And Verify Login Via IPMI
24 [Documentation] Create user using redfish and verify via IPMI.
25 [Tags] Create_Admin_Redfish_User_And_Verify_Login_Via_IPMI
26
27 ${random_username}= Generate Random String 8 [LETTERS]
28 Set Test Variable ${random_username}
29
30 ${payload}= Create Dictionary
31 ... UserName=${random_username} Password=${valid_password}
32 ... RoleId=Administrator Enabled=${True}
33 Redfish.Post /redfish/v1/AccountService/Accounts body=&{payload}
34 ... valid_status_codes=[${HTTP_CREATED}]
35
36 Verify IPMI Username And Password ${random_username} ${valid_password}
37
38
Rahul Maheshwaricf2336e2019-03-15 00:49:13 -050039Update User Password Via Redfish And Verify Using IPMI
40 [Documentation] Update user password via Redfish and verify using IPMI.
41 [Tags] Update_User_Password_Via_Redfish_And_Verify_Using_IPMI
42
43 # Create user using Redfish.
44 ${random_username}= Generate Random String 8 [LETTERS]
45 Set Test Variable ${random_username}
46
47 ${payload}= Create Dictionary
48 ... UserName=${random_username} Password=${valid_password}
49 ... RoleId=Administrator Enabled=${True}
50 Redfish.Post /redfish/v1/AccountService/Accounts body=&{payload}
51 ... valid_status_codes=[${HTTP_CREATED}]
52
53 # Update user password using Redfish.
54 ${payload}= Create Dictionary Password=${valid_password2}
55 Redfish.Patch /redfish/v1/AccountService/Accounts/${random_username} body=&{payload}
56
57 # Verify that IPMI command works with new password and fails with older password.
58 Verify IPMI Username And Password ${random_username} ${valid_password2}
59
60 Run Keyword And Expect Error Error: Unable to establish IPMI*
61 ... Verify IPMI Username And Password ${random_username} ${valid_password}
62
63
64Delete User Via Redfish And Verify Using IPMI
65 [Documentation] Delete user via redfish and verify using IPMI.
66 [Tags] Delete_User_Via_Redfish_And_Verify_Using_IPMI
67
68 # Create user using Redfish.
69 ${random_username}= Generate Random String 8 [LETTERS]
70 Set Test Variable ${random_username}
71
72 ${payload}= Create Dictionary
73 ... UserName=${random_username} Password=${valid_password}
74 ... RoleId=Administrator Enabled=${True}
75 Redfish.Post /redfish/v1/AccountService/Accounts body=&{payload}
76 ... valid_status_codes=[${HTTP_CREATED}]
77
78 # Delete user using Redfish.
79 Redfish.Delete /redfish/v1/AccountService/Accounts/${random_username}
80
81 # Verify that IPMI command fails with deleted user.
82 Run Keyword And Expect Error Error: Unable to establish IPMI*
83 ... Verify IPMI Username And Password ${random_username} ${valid_password}
84
85
Rahul Maheshwari75e91fe2019-03-29 05:32:28 -050086Create IPMI User And Verify Login Via Redfish
87 [Documentation] Create user using IPMI and verify user login via Redfish.
88 [Tags] Create_IPMI_User_And_Verify_Login_Via_Redfish
89
90 ${username} ${userid}= IPMI Create Random User Plus Password And Privilege
91 ... ${valid_password} ${admin_level_priv}
92
93 # Verify user login using Redfish.
94 Redfish.Login ${username} ${valid_password}
95
96
97Update User Password Via IPMI And Verify Using Redfish
98 [Documentation] Update user password using IPMI and verify user
99 ... login via Redfish.
100 [Tags] Update_User_Password_Via_IPMI_And_Verify_Using_Redfish
101
102 ${username} ${userid}= IPMI Create Random User Plus Password And Privilege
103 ... ${valid_password} ${admin_level_priv}
104
105 # Update user password using IPMI.
106 Run IPMI Standard Command
107 ... user set password ${userid} ${valid_password2}
108
109 # Verify that user login works with new password using Redfish.
110 Redfish.Login ${username} ${valid_password2}
111
112
113Update User Privilege Via IPMI And Verify Using Redfish
114 [Documentation] Update user privilege via IPMI and verify using Redfish.
115 [Tags] Update_User_Privilege_Via_IPMI_And_Verify_Using_Redfish
116
117 # Create user using IPMI with admin privilege.
118 ${username} ${userid}= IPMI Create Random User Plus Password And Privilege
119 ... ${valid_password} ${admin_level_priv}
120
121 # Change user privilege to opetrator using IPMI.
122 Run IPMI Standard Command
123 ... user priv ${userid} ${operator_level_priv}
124
125 # Verify new user privilege level via Redfish.
126 ${privilege}= Redfish_Utils.Get Attribute
127 ... /redfish/v1/AccountService/Accounts/${username} RoleId
128 Should Be Equal ${privilege} Operator
129
130
131Delete User Via IPMI And Verify Using Redfish
132 [Documentation] Delete user using IPMI and verify error while doing
133 ... user login with deleted user via Redfish.
134 [Tags] Delete_User_Via_IPMI_And_Verify_Using_Redfish
135
136 ${username} ${userid}= IPMI Create Random User Plus Password And Privilege
137 ... ${valid_password} ${admin_level_priv}
138
139 # Delete IPMI User.
140 Run IPMI Standard Command user set name ${userid} ""
141
142 # Verify that Redfish login fails with deleted user.
143 Run Keyword And Expect Error *InvalidCredentialsError*
144 ... Redfish.Login ${username} ${valid_password}
145
146
Rahul Maheshwari51dee262019-03-06 23:36:21 -0600147*** Keywords ***
148
Rahul Maheshwari75e91fe2019-03-29 05:32:28 -0500149IPMI Create Random User Plus Password And Privilege
150 [Documentation] Create random IPMI user with given password and privilege
151 ... level.
152 [Arguments] ${password} ${privilege}
153
154 # Description of argument(s):
155 # password Password to be assigned for the user.
156 # privilege Privilege level for the user (e.g. "1", "2", "3", etc.).
157
158 # Create IPMI user.
159 ${random_username}= Generate Random String 8 [LETTERS]
160 Set Suite Variable ${random_username}
161
162 ${random_userid}= Evaluate random.randint(2, 15) modules=random
163 IPMI Create User ${random_userid} ${random_username}
164
165 # Set given password for newly created user.
166 Run IPMI Standard Command
167 ... user set password ${random_userid} ${password}
168
169 # Enable IPMI user.
170 Run IPMI Standard Command user enable ${random_userid}
171
172 # Set given privilege and enable IPMI messaging for newly created user.
173 Set Channel Access ${random_userid} ipmi=on privilege=${privilege}
174
175 [Return] ${random_username} ${random_userid}
176
177
Rahul Maheshwari51dee262019-03-06 23:36:21 -0600178Test Setup Execution
179 [Documentation] Do test case setup tasks.
180
181 Redfish.Login
182
183
184Test Teardown Execution
185 [Documentation] Do the post test teardown.
186
187 FFDC On Test Case Fail
188 # Delete the test user.
189 Run Keyword And Ignore Error
190 ... Redfish.Delete /redfish/v1/AccountService/Accounts/${random_username}
191
192 Redfish.Logout