blob: ed2a938f6897745cf85bd5047f4a22510a9ee333 [file] [log] [blame]
Vijay53a00552020-01-08 04:24:47 -06001*** Settings ***
Vijaye6fa8552020-01-14 04:44:36 -06002
Vijay53a00552020-01-08 04:24:47 -06003Documentation Test Redfish SessionService.
4
Vijayff2c0bc2020-02-03 00:05:45 -06005Resource ../../lib/bmc_redfish_utils.robot
Vijay53a00552020-01-08 04:24:47 -06006Resource ../../lib/openbmc_ffdc.robot
7
Vijaye6fa8552020-01-14 04:44:36 -06008Suite Setup Suite Setup Execution
Vijay39373152020-02-14 08:08:20 -06009Suite Teardown Suite Teardown Execution
Vijay53a00552020-01-08 04:24:47 -060010Test Setup Printn
11Test Teardown FFDC On Test Case Fail
12
Igor Kanyukafeb79d62025-10-20 21:24:03 +010013Test Tags Sessions_Management
Vijay39373152020-02-14 08:08:20 -060014
Vijayff2c0bc2020-02-03 00:05:45 -060015*** Variables ***
Vijay39373152020-02-14 08:08:20 -060016
Vijayff2c0bc2020-02-03 00:05:45 -060017@{ADMIN} admin_user TestPwd123
18@{OPERATOR} operator_user TestPwd123
Rahul Maheshwarib0753972022-08-29 05:04:47 -050019# User-driven input parameter to skip operator user.
20# -v SKIP_OPERATOR_USER:1 to skip from CLI.
21${SKIP_OPERATOR_USER} ${0}
Yi Hu02d32762024-03-07 14:34:34 -080022${REDFISH_DELETE_SESSIONS} ${0}
Vijay53a00552020-01-08 04:24:47 -060023
Vijay39373152020-02-14 08:08:20 -060024
Vijay53a00552020-01-08 04:24:47 -060025*** Test Cases ***
26
Vijaye6fa8552020-01-14 04:44:36 -060027Create Session And Verify Response Code Using Different Credentials
George Keishing79fc7f02025-05-02 00:37:49 +053028 [Documentation] Create session and verify response code using different
29 ... credentials.
George Keishing0c8100f2022-01-13 00:24:57 -060030 [Tags] Create_Session_And_Verify_Response_Code_Using_Different_Credentials
Vijaye6fa8552020-01-14 04:44:36 -060031 [Template] Create Session And Verify Response Code
Vijay53a00552020-01-08 04:24:47 -060032
Vijaye6fa8552020-01-14 04:44:36 -060033 # username password valid_status_code
34 ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${HTTP_CREATED}
Vijayff2c0bc2020-02-03 00:05:45 -060035 r00t ${OPENBMC_PASSWORD} ${HTTP_UNAUTHORIZED}
36 ${OPENBMC_USERNAME} password ${HTTP_UNAUTHORIZED}
37 r00t password ${HTTP_UNAUTHORIZED}
Vijaye6fa8552020-01-14 04:44:36 -060038 admin_user TestPwd123 ${HTTP_CREATED}
Rahul Maheshwaribb79b9d2022-11-11 05:48:36 -060039
40
41Create Session And Verify Response Code Using Operator Credentials
George Keishing79fc7f02025-05-02 00:37:49 +053042 [Documentation] Create session and verify response code using operator
43 ... credentials.
Rahul Maheshwaribb79b9d2022-11-11 05:48:36 -060044 [Tags] Create_Session_And_Verify_Response_Code_Using_Operator_Credentials
45 [Template] Create Session And Verify Response Code
46
47 # username password valid_status_code
Vijaye6fa8552020-01-14 04:44:36 -060048 operator_user TestPwd123 ${HTTP_CREATED}
Vijay53a00552020-01-08 04:24:47 -060049
50
David Wangd511f5d2021-02-26 16:19:20 +080051Set Session Timeout And Verify Response Code
52 [Documentation] Set Session Timeout And Verify Response Code.
53 [Tags] Set_Session_Timeout_And_Verify_Response_Code
54 [Template] Set Session Timeout And Verify
nagarjunb22917d2e32022-04-20 09:57:29 +053055 [Teardown] Set Session Timeout And Verify ${Default_Timeout_Value} ${HTTP_OK}
David Wangd511f5d2021-02-26 16:19:20 +080056
George Keishing96143832021-03-23 07:55:08 -050057 # The minimum & maximum allowed values for session timeout are 30
David Wangd511f5d2021-02-26 16:19:20 +080058 # seconds and 86400 seconds respectively as per the session service
59 # schema mentioned at
60 # https://redfish.dmtf.org/schemas/v1/SessionService.v1_1_7.json
61
62 # value valid_status_code
63 ${25} ${HTTP_BAD_REQUEST}
64 ${30} ${HTTP_OK}
65 ${3600} ${HTTP_OK}
66 ${86400} ${HTTP_OK}
67 ${86500} ${HTTP_BAD_REQUEST}
68
69
nagarjunb22917d2e32022-04-20 09:57:29 +053070Set Session Timeout And Verify Session After Timeout
George Keishing79fc7f02025-05-02 00:37:49 +053071 [Documentation] Set timeout for session service and verify session is
72 ... deleted after timeout.
nagarjunb22917d2e32022-04-20 09:57:29 +053073 [Tags] Set_Session_Timeout_And_Verify_Session_After_Timeout
nagarjunb22917d2e32022-04-20 09:57:29 +053074 [Template] Set Session Timeout And Verify Session Deleted After Timeout
George Keishing79fc7f02025-05-02 00:37:49 +053075 [Teardown] Set Session Timeout And Verify ${Default_Timeout_Value} ${HTTP_OK}
nagarjunb22917d2e32022-04-20 09:57:29 +053076
77 #timeout Value
78 ${30}
79 ${300}
80
81
82Verify Session Login And Logout For Newly Created User
George Keishing79fc7f02025-05-02 00:37:49 +053083 [Documentation] Verify able to login and logout using the session created
84 ... for new user.
nagarjunb22917d2e32022-04-20 09:57:29 +053085 [Tags] Verify_Session_Login_And_Logout_For_Newly_Created_User
86 [Teardown] Redfish.Login
87
88 # Logout already created redfish session.
89 Redfish.Logout
90 Redfish.Login ${ADMIN}[0] ${ADMIN}[1]
91 ${systems}= Redfish.Get Properties /redfish/v1/Systems
92 Rprint Vars systems
93 Redfish.Logout
94 ${systems}= Redfish.Get /redfish/v1/Systems
95 ... valid_status_codes=[${HTTP_UNAUTHORIZED}]
96
97
Vijay53a00552020-01-08 04:24:47 -060098Verify SessionService Defaults
99 [Documentation] Verify SessionService default property values.
100 [Tags] Verify_SessionService_Defaults
101
102 ${session_service}= Redfish.Get Properties /redfish/v1/SessionService
103 Rprint Vars session_service
104
Vijay53a00552020-01-08 04:24:47 -0600105 Valid Value session_service['@odata.id'] ['/redfish/v1/SessionService/']
106 Valid Value session_service['Description'] ['Session Service']
107 Valid Value session_service['Id'] ['SessionService']
108 Valid Value session_service['Name'] ['Session Service']
109 Valid Value session_service['ServiceEnabled'] [True]
nagarjunb22917d2e32022-04-20 09:57:29 +0530110 Valid Value session_service['SessionTimeout'] [${Default_Timeout_Value}]
Vijay53a00552020-01-08 04:24:47 -0600111 Valid Value session_service['Sessions']['@odata.id'] ['/redfish/v1/SessionService/Sessions']
112
113
114Verify Sessions Defaults
115 [Documentation] Verify Sessions default property values.
116 [Tags] Verify_Sessions_Defaults
117
118 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions
119 Rprint Vars sessions
120 ${sessions_count}= Get length ${sessions['Members']}
121
Vijay53a00552020-01-08 04:24:47 -0600122 Valid Value sessions['@odata.id'] ['/redfish/v1/SessionService/Sessions/']
123 Valid Value sessions['Description'] ['Session Collection']
124 Valid Value sessions['Name'] ['Session Collection']
125 Valid Value sessions['Members@odata.count'] [${sessions_count}]
126
127
128Verify Current Session Defaults
129 [Documentation] Verify Current session default property values.
130 [Tags] Verify_Current_Session_Defaults
131
132 ${session_location}= Redfish.Get Session Location
133 ${session_id}= Evaluate os.path.basename($session_location) modules=os
134 ${session_properties}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session_id}
135 Rprint Vars session_location session_id session_properties
136
Vijay53a00552020-01-08 04:24:47 -0600137 Valid Value session_properties['@odata.id'] ['/redfish/v1/SessionService/Sessions/${session_id}']
138 Valid Value session_properties['Description'] ['Manager User Session']
139 Valid Value session_properties['Name'] ['User Session']
140 Valid Value session_properties['Id'] ['${session_id}']
141 Valid Value session_properties['UserName'] ['${OPENBMC_USERNAME}']
Vijay5b2f7792020-01-14 04:18:32 -0600142
143
144Verify Managers Defaults
145 [Documentation] Verify managers defaults.
146 [Tags] Verify_Managers_Defaults
147
148 ${managers}= Redfish.Get Properties /redfish/v1/Managers
149 Rprint Vars managers
150 ${managers_count}= Get Length ${managers['Members']}
151
Vijay5b2f7792020-01-14 04:18:32 -0600152 Valid Value managers['Name'] ['Manager Collection']
153 Valid Value managers['@odata.id'] ['/redfish/v1/Managers']
154 Valid Value managers['Members@odata.count'] [${managers_count}]
155
Vijayff2c0bc2020-02-03 00:05:45 -0600156 # Members can be one or more, hence checking in the list.
ganesanb4d430282023-04-27 14:33:23 +0000157 Valid List managers['Members'] required_values=[{'@odata.id': '/redfish/v1/Managers/${MANAGER_ID}'}]
Vijay5b2f7792020-01-14 04:18:32 -0600158
159
160Verify Chassis Defaults
161 [Documentation] Verify chassis defaults.
162 [Tags] Verify_Chassis_Defaults
163
164 ${chassis}= Redfish.Get Properties /redfish/v1/Chassis
165 Rprint Vars chassis
166 ${chassis_count}= Get Length ${chassis['Members']}
167
Vijay5b2f7792020-01-14 04:18:32 -0600168 Valid Value chassis['Name'] ['Chassis Collection']
169 Valid Value chassis['@odata.id'] ['/redfish/v1/Chassis']
170 Valid Value chassis['Members@odata.count'] [${chassis_count}]
171 Valid Value chassis['Members@odata.count'] [${chassis_count}]
172
Vijayff2c0bc2020-02-03 00:05:45 -0600173 # Members can be one or more, hence checking in the list.
Vijay5b2f7792020-01-14 04:18:32 -0600174 Valid List chassis['Members']
Tony Lee2b975822021-04-01 11:15:00 +0800175 ... required_values=[{'@odata.id': '/redfish/v1/Chassis/${CHASSIS_ID}'}]
Vijay5b2f7792020-01-14 04:18:32 -0600176
177
178Verify Systems Defaults
179 [Documentation] Verify systems defaults.
180 [Tags] Verify_Systems_Defaults
181
182 ${systems}= Redfish.Get Properties /redfish/v1/Systems
183 Rprint Vars systems
184 ${systems_count}= Get Length ${systems['Members']}
Vijay5b2f7792020-01-14 04:18:32 -0600185 Valid Value systems['Name'] ['Computer System Collection']
186 Valid Value systems['@odata.id'] ['/redfish/v1/Systems']
187 Valid Value systems['Members@odata.count'] [${systems_count}]
188 Valid Value systems['Members@odata.count'] [${systems_count}]
Vijayff2c0bc2020-02-03 00:05:45 -0600189 # Members can be one or more, hence checking in the list.
Yi Huc32434a2024-01-11 17:33:10 -0800190 Valid List systems['Members'] required_values=[{'@odata.id': '/redfish/v1/Systems/${SYSTEM_ID}'}]
Vijay5b2f7792020-01-14 04:18:32 -0600191
192
193Verify Session Persistency After BMC Reboot
194 [Documentation] Verify session persistency after BMC reboot.
195 [Tags] Verify_Session_Persistency_After_BMC_Reboot
196
Vijayff2c0bc2020-02-03 00:05:45 -0600197 # Note the current session location.
Vijay5b2f7792020-01-14 04:18:32 -0600198 ${session_location}= Redfish.Get Session Location
199
200 Redfish OBMC Reboot (off) stack_mode=normal
Vijay5b2f7792020-01-14 04:18:32 -0600201
Vijayff2c0bc2020-02-03 00:05:45 -0600202 # Check for session persistency after BMC reboot.
203 # sessions here will have list of all sessions location.
Vijay5b2f7792020-01-14 04:18:32 -0600204 ${sessions}= Redfish.Get Attribute /redfish/v1/SessionService/Sessions Members
205 ${payload}= Create Dictionary @odata.id=${session_location}
206
207 List Should Contain Value ${sessions} ${payload}
208
Vijaye6fa8552020-01-14 04:44:36 -0600209*** Keywords ***
210
211Create Session And Verify Response Code
212 [Documentation] Create session and verify response code.
213 [Arguments] ${username}=${OPENBMC_USERNAME} ${password}=${OPENBMC_PASSWORD}
214 ... ${valid_status_code}=${HTTP_CREATED}
215
216 # Description of argument(s):
217 # username The username to create a session.
218 # password The password to create a session.
Vijayff2c0bc2020-02-03 00:05:45 -0600219 # valid_status_code Expected response code, default is ${HTTP_CREATED}.
Vijaye6fa8552020-01-14 04:44:36 -0600220
221 ${resp}= Redfish.Post /redfish/v1/SessionService/Sessions
222 ... body={'UserName':'${username}', 'Password': '${password}'}
223 ... valid_status_codes=[${valid_status_code}]
224
225
David Wangd511f5d2021-02-26 16:19:20 +0800226Set Session Timeout And Verify
227 [Documentation] Set Session Timeout And Verify.
228 [Arguments] ${value}=3600 ${valid_status_code}=${HTTP_OK}
229
230 # Description of argument(s):
231 # value The value to patch session timeout.
232 # valid_status_code Expected response code, default is ${HTTP_OK}.
233
nagarjunb22917d2e32022-04-20 09:57:29 +0530234 Redfish.Login
David Wangd511f5d2021-02-26 16:19:20 +0800235 ${data}= Create Dictionary SessionTimeout=${value}
236 Redfish.Patch ${REDFISH_BASE_URI}SessionService
237 ... body=&{data}
238 ... valid_status_codes=[${valid_status_code}]
239
240 ${session_timeout}= Redfish.Get Attribute
241 ... ${REDFISH_BASE_URI}SessionService SessionTimeout
242
George Keishing79fc7f02025-05-02 00:37:49 +0530243 IF ${valid_status_code}==${HTTP_OK}
244 Valid Value session_timeout [${value}]
245 END
David Wangd511f5d2021-02-26 16:19:20 +0800246
247
nagarjunb22917d2e32022-04-20 09:57:29 +0530248Create Session And Check Session Timeout
249 [Documentation] Create session and check session timeout.
250 [Arguments] ${value}
251
252 # Description of argument(s):
253 # value timeout value in integer to be configured.
254
255 ${resp}= Redfish.Post /redfish/v1/SessionService/Sessions
256 ... body={'UserName':'${OPENBMC_USERNAME}', 'Password': '${OPENBMC_PASSWORD}'}
257 ... valid_status_codes=[${HTTP_CREATED}]
258 ${session_id}= Set Variable ${resp.dict['@odata.id']}
259 Sleep ${value}s
260
261 Redfish.Get ${REDFISH_SESSION} valid_status_codes=[${HTTP_UNAUTHORIZED}]
262 # Since sessions will deleted so logging again.
George Keishing79fc7f02025-05-02 00:37:49 +0530263 Redfish.Login
nagarjunb22917d2e32022-04-20 09:57:29 +0530264 ${session_list}= Redfish.Get Members List /redfish/v1/SessionService/Sessions
265
266 List Should Not Contain Value ${session_list} ${session_id}
267
268
269Set Session Timeout And Verify Session Deleted After Timeout
270 [Documentation] Set timeout for session service and verify session is deleted after timeout.
271 [Arguments] ${timeout_value}
272
273 # Description of argument(s):
274 # timeout_value timeout value in integer to be configured.
275
276 ${data}= Create Dictionary SessionTimeout=${timeout_value}
277 ${resp_patch}= Redfish.Patch /redfish/v1/SessionService
278 ... body=&{data} valid_status_codes=[${HTTP_OK}]
279 Create Session And Check Session Timeout ${timeout_value}
280
281
282Get Default Timeout Value
283 [Documentation] Get default session timeout value and set as a suite variable.
284
285 ${Default_Timeout_Value}= Redfish.Get Attribute /redfish/v1/SessionService SessionTimeout
286 Set Suite Variable ${Default_Timeout_Value}
287
288
Vijaye6fa8552020-01-14 04:44:36 -0600289Suite Setup Execution
290 [Documentation] Suite Setup Execution.
291
292 Redfish.Login
Rahul Maheshwarib0753972022-08-29 05:04:47 -0500293
294 # Skip operator user if SKIP_OPERATOR_USER is 1.
George Keishing79fc7f02025-05-02 00:37:49 +0530295 IF ${SKIP_OPERATOR_USER} == ${1}
296 Set Suite Variable &{USERS} Administrator=${ADMIN}
297 ELSE
298 Set Suite Variable &{USERS} Administrator=${ADMIN} Operator=${OPERATOR}
299 END
Rahul Maheshwarib0753972022-08-29 05:04:47 -0500300
Vijayff2c0bc2020-02-03 00:05:45 -0600301 Create Users With Different Roles users=${USERS} force=${True}
nagarjunb22917d2e32022-04-20 09:57:29 +0530302 Get Default Timeout Value
Yi Hu02d32762024-03-07 14:34:34 -0800303 Set Redfish Delete Session Flag ${0}
Vijay39373152020-02-14 08:08:20 -0600304
305
306Suite Teardown Execution
307 [Documentation] Suite teardown execution.
308
309 Delete BMC Users Via Redfish users=${USERS}
Yi Hu02d32762024-03-07 14:34:34 -0800310 Set Redfish Delete Session Flag ${1}
nagarjunb22917d2e32022-04-20 09:57:29 +0530311 Run Keyword And Ignore Error Delete All Redfish Sessions
Vijay39373152020-02-14 08:08:20 -0600312 Redfish.Logout