1*** Settings *** 2 3Documentation Test Redfish SessionService. 4 5Resource ../../lib/bmc_redfish_utils.robot 6Resource ../../lib/openbmc_ffdc.robot 7 8Suite Setup Suite Setup Execution 9Suite Teardown Suite Teardown Execution 10Test Setup Printn 11Test Teardown FFDC On Test Case Fail 12 13 14*** Variables *** 15 16@{ADMIN} admin_user TestPwd123 17@{OPERATOR} operator_user TestPwd123 18# User-driven input parameter to skip operator user. 19# -v SKIP_OPERATOR_USER:1 to skip from CLI. 20${SKIP_OPERATOR_USER} ${0} 21${REDFISH_DELETE_SESSIONS} ${0} 22 23 24*** Test Cases *** 25 26Create Session And Verify Response Code Using Different Credentials 27 [Documentation] Create session and verify response code using different 28 ... credentials. 29 [Tags] Create_Session_And_Verify_Response_Code_Using_Different_Credentials 30 [Template] Create Session And Verify Response Code 31 32 # username password valid_status_code 33 ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${HTTP_CREATED} 34 r00t ${OPENBMC_PASSWORD} ${HTTP_UNAUTHORIZED} 35 ${OPENBMC_USERNAME} password ${HTTP_UNAUTHORIZED} 36 r00t password ${HTTP_UNAUTHORIZED} 37 admin_user TestPwd123 ${HTTP_CREATED} 38 39 40Create Session And Verify Response Code Using Operator Credentials 41 [Documentation] Create session and verify response code using operator 42 ... credentials. 43 [Tags] Create_Session_And_Verify_Response_Code_Using_Operator_Credentials 44 [Template] Create Session And Verify Response Code 45 46 # username password valid_status_code 47 operator_user TestPwd123 ${HTTP_CREATED} 48 49 50Set Session Timeout And Verify Response Code 51 [Documentation] Set Session Timeout And Verify Response Code. 52 [Tags] Set_Session_Timeout_And_Verify_Response_Code 53 [Template] Set Session Timeout And Verify 54 [Teardown] Set Session Timeout And Verify ${Default_Timeout_Value} ${HTTP_OK} 55 56 # The minimum & maximum allowed values for session timeout are 30 57 # seconds and 86400 seconds respectively as per the session service 58 # schema mentioned at 59 # https://redfish.dmtf.org/schemas/v1/SessionService.v1_1_7.json 60 61 # value valid_status_code 62 ${25} ${HTTP_BAD_REQUEST} 63 ${30} ${HTTP_OK} 64 ${3600} ${HTTP_OK} 65 ${86400} ${HTTP_OK} 66 ${86500} ${HTTP_BAD_REQUEST} 67 68 69Set Session Timeout And Verify Session After Timeout 70 [Documentation] Set timeout for session service and verify session is 71 ... deleted after timeout. 72 [Tags] Set_Session_Timeout_And_Verify_Session_After_Timeout 73 [Template] Set Session Timeout And Verify Session Deleted After Timeout 74 [Teardown] Set Session Timeout And Verify ${Default_Timeout_Value} ${HTTP_OK} 75 76 #timeout Value 77 ${30} 78 ${300} 79 80 81Verify Session Login And Logout For Newly Created User 82 [Documentation] Verify able to login and logout using the session created 83 ... for new user. 84 [Tags] Verify_Session_Login_And_Logout_For_Newly_Created_User 85 [Teardown] Redfish.Login 86 87 # Logout already created redfish session. 88 Redfish.Logout 89 Redfish.Login ${ADMIN}[0] ${ADMIN}[1] 90 ${systems}= Redfish.Get Properties /redfish/v1/Systems 91 Rprint Vars systems 92 Redfish.Logout 93 ${systems}= Redfish.Get /redfish/v1/Systems 94 ... valid_status_codes=[${HTTP_UNAUTHORIZED}] 95 96 97Verify SessionService Defaults 98 [Documentation] Verify SessionService default property values. 99 [Tags] Verify_SessionService_Defaults 100 101 ${session_service}= Redfish.Get Properties /redfish/v1/SessionService 102 Rprint Vars session_service 103 104 Valid Value session_service['@odata.id'] ['/redfish/v1/SessionService/'] 105 Valid Value session_service['Description'] ['Session Service'] 106 Valid Value session_service['Id'] ['SessionService'] 107 Valid Value session_service['Name'] ['Session Service'] 108 Valid Value session_service['ServiceEnabled'] [True] 109 Valid Value session_service['SessionTimeout'] [${Default_Timeout_Value}] 110 Valid Value session_service['Sessions']['@odata.id'] ['/redfish/v1/SessionService/Sessions'] 111 112 113Verify Sessions Defaults 114 [Documentation] Verify Sessions default property values. 115 [Tags] Verify_Sessions_Defaults 116 117 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions 118 Rprint Vars sessions 119 ${sessions_count}= Get length ${sessions['Members']} 120 121 Valid Value sessions['@odata.id'] ['/redfish/v1/SessionService/Sessions/'] 122 Valid Value sessions['Description'] ['Session Collection'] 123 Valid Value sessions['Name'] ['Session Collection'] 124 Valid Value sessions['Members@odata.count'] [${sessions_count}] 125 126 127Verify Current Session Defaults 128 [Documentation] Verify Current session default property values. 129 [Tags] Verify_Current_Session_Defaults 130 131 ${session_location}= Redfish.Get Session Location 132 ${session_id}= Evaluate os.path.basename($session_location) modules=os 133 ${session_properties}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session_id} 134 Rprint Vars session_location session_id session_properties 135 136 Valid Value session_properties['@odata.id'] ['/redfish/v1/SessionService/Sessions/${session_id}'] 137 Valid Value session_properties['Description'] ['Manager User Session'] 138 Valid Value session_properties['Name'] ['User Session'] 139 Valid Value session_properties['Id'] ['${session_id}'] 140 Valid Value session_properties['UserName'] ['${OPENBMC_USERNAME}'] 141 142 143Verify Managers Defaults 144 [Documentation] Verify managers defaults. 145 [Tags] Verify_Managers_Defaults 146 147 ${managers}= Redfish.Get Properties /redfish/v1/Managers 148 Rprint Vars managers 149 ${managers_count}= Get Length ${managers['Members']} 150 151 Valid Value managers['Name'] ['Manager Collection'] 152 Valid Value managers['@odata.id'] ['/redfish/v1/Managers'] 153 Valid Value managers['Members@odata.count'] [${managers_count}] 154 155 # Members can be one or more, hence checking in the list. 156 Valid List managers['Members'] required_values=[{'@odata.id': '/redfish/v1/Managers/${MANAGER_ID}'}] 157 158 159Verify Chassis Defaults 160 [Documentation] Verify chassis defaults. 161 [Tags] Verify_Chassis_Defaults 162 163 ${chassis}= Redfish.Get Properties /redfish/v1/Chassis 164 Rprint Vars chassis 165 ${chassis_count}= Get Length ${chassis['Members']} 166 167 Valid Value chassis['Name'] ['Chassis Collection'] 168 Valid Value chassis['@odata.id'] ['/redfish/v1/Chassis'] 169 Valid Value chassis['Members@odata.count'] [${chassis_count}] 170 Valid Value chassis['Members@odata.count'] [${chassis_count}] 171 172 # Members can be one or more, hence checking in the list. 173 Valid List chassis['Members'] 174 ... required_values=[{'@odata.id': '/redfish/v1/Chassis/${CHASSIS_ID}'}] 175 176 177Verify Systems Defaults 178 [Documentation] Verify systems defaults. 179 [Tags] Verify_Systems_Defaults 180 181 ${systems}= Redfish.Get Properties /redfish/v1/Systems 182 Rprint Vars systems 183 ${systems_count}= Get Length ${systems['Members']} 184 Valid Value systems['Name'] ['Computer System Collection'] 185 Valid Value systems['@odata.id'] ['/redfish/v1/Systems'] 186 Valid Value systems['Members@odata.count'] [${systems_count}] 187 Valid Value systems['Members@odata.count'] [${systems_count}] 188 # Members can be one or more, hence checking in the list. 189 Valid List systems['Members'] required_values=[{'@odata.id': '/redfish/v1/Systems/${SYSTEM_ID}'}] 190 191 192Verify Session Persistency After BMC Reboot 193 [Documentation] Verify session persistency after BMC reboot. 194 [Tags] Verify_Session_Persistency_After_BMC_Reboot 195 196 # Note the current session location. 197 ${session_location}= Redfish.Get Session Location 198 199 Redfish OBMC Reboot (off) stack_mode=normal 200 201 # Check for session persistency after BMC reboot. 202 # sessions here will have list of all sessions location. 203 ${sessions}= Redfish.Get Attribute /redfish/v1/SessionService/Sessions Members 204 ${payload}= Create Dictionary @odata.id=${session_location} 205 206 List Should Contain Value ${sessions} ${payload} 207 208*** Keywords *** 209 210Create Session And Verify Response Code 211 [Documentation] Create session and verify response code. 212 [Arguments] ${username}=${OPENBMC_USERNAME} ${password}=${OPENBMC_PASSWORD} 213 ... ${valid_status_code}=${HTTP_CREATED} 214 215 # Description of argument(s): 216 # username The username to create a session. 217 # password The password to create a session. 218 # valid_status_code Expected response code, default is ${HTTP_CREATED}. 219 220 ${resp}= Redfish.Post /redfish/v1/SessionService/Sessions 221 ... body={'UserName':'${username}', 'Password': '${password}'} 222 ... valid_status_codes=[${valid_status_code}] 223 224 225Set Session Timeout And Verify 226 [Documentation] Set Session Timeout And Verify. 227 [Arguments] ${value}=3600 ${valid_status_code}=${HTTP_OK} 228 229 # Description of argument(s): 230 # value The value to patch session timeout. 231 # valid_status_code Expected response code, default is ${HTTP_OK}. 232 233 Redfish.Login 234 ${data}= Create Dictionary SessionTimeout=${value} 235 Redfish.Patch ${REDFISH_BASE_URI}SessionService 236 ... body=&{data} 237 ... valid_status_codes=[${valid_status_code}] 238 239 ${session_timeout}= Redfish.Get Attribute 240 ... ${REDFISH_BASE_URI}SessionService SessionTimeout 241 242 IF ${valid_status_code}==${HTTP_OK} 243 Valid Value session_timeout [${value}] 244 END 245 246 247Create Session And Check Session Timeout 248 [Documentation] Create session and check session timeout. 249 [Arguments] ${value} 250 251 # Description of argument(s): 252 # value timeout value in integer to be configured. 253 254 ${resp}= Redfish.Post /redfish/v1/SessionService/Sessions 255 ... body={'UserName':'${OPENBMC_USERNAME}', 'Password': '${OPENBMC_PASSWORD}'} 256 ... valid_status_codes=[${HTTP_CREATED}] 257 ${session_id}= Set Variable ${resp.dict['@odata.id']} 258 Sleep ${value}s 259 260 Redfish.Get ${REDFISH_SESSION} valid_status_codes=[${HTTP_UNAUTHORIZED}] 261 # Since sessions will deleted so logging again. 262 Redfish.Login 263 ${session_list}= Redfish.Get Members List /redfish/v1/SessionService/Sessions 264 265 List Should Not Contain Value ${session_list} ${session_id} 266 267 268Set Session Timeout And Verify Session Deleted After Timeout 269 [Documentation] Set timeout for session service and verify session is deleted after timeout. 270 [Arguments] ${timeout_value} 271 272 # Description of argument(s): 273 # timeout_value timeout value in integer to be configured. 274 275 ${data}= Create Dictionary SessionTimeout=${timeout_value} 276 ${resp_patch}= Redfish.Patch /redfish/v1/SessionService 277 ... body=&{data} valid_status_codes=[${HTTP_OK}] 278 Create Session And Check Session Timeout ${timeout_value} 279 280 281Get Default Timeout Value 282 [Documentation] Get default session timeout value and set as a suite variable. 283 284 ${Default_Timeout_Value}= Redfish.Get Attribute /redfish/v1/SessionService SessionTimeout 285 Set Suite Variable ${Default_Timeout_Value} 286 287 288Suite Setup Execution 289 [Documentation] Suite Setup Execution. 290 291 Redfish.Login 292 293 # Skip operator user if SKIP_OPERATOR_USER is 1. 294 IF ${SKIP_OPERATOR_USER} == ${1} 295 Set Suite Variable &{USERS} Administrator=${ADMIN} 296 ELSE 297 Set Suite Variable &{USERS} Administrator=${ADMIN} Operator=${OPERATOR} 298 END 299 300 Create Users With Different Roles users=${USERS} force=${True} 301 Get Default Timeout Value 302 Set Redfish Delete Session Flag ${0} 303 304 305Suite Teardown Execution 306 [Documentation] Suite teardown execution. 307 308 Delete BMC Users Via Redfish users=${USERS} 309 Set Redfish Delete Session Flag ${1} 310 Run Keyword And Ignore Error Delete All Redfish Sessions 311 Redfish.Logout 312