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 13Test Tags Sessions_Management 14 15*** Variables *** 16 17@{ADMIN} admin_user TestPwd123 18@{OPERATOR} operator_user TestPwd123 19# User-driven input parameter to skip operator user. 20# -v SKIP_OPERATOR_USER:1 to skip from CLI. 21${SKIP_OPERATOR_USER} ${0} 22${REDFISH_DELETE_SESSIONS} ${0} 23 24 25*** Test Cases *** 26 27Create Session And Verify Response Code Using Different Credentials 28 [Documentation] Create session and verify response code using different 29 ... credentials. 30 [Tags] Create_Session_And_Verify_Response_Code_Using_Different_Credentials 31 [Template] Create Session And Verify Response Code 32 33 # username password valid_status_code 34 ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} ${HTTP_CREATED} 35 r00t ${OPENBMC_PASSWORD} ${HTTP_UNAUTHORIZED} 36 ${OPENBMC_USERNAME} password ${HTTP_UNAUTHORIZED} 37 r00t password ${HTTP_UNAUTHORIZED} 38 admin_user TestPwd123 ${HTTP_CREATED} 39 40 41Create Session And Verify Response Code Using Operator Credentials 42 [Documentation] Create session and verify response code using operator 43 ... credentials. 44 [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 48 operator_user TestPwd123 ${HTTP_CREATED} 49 50 51Set 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 55 [Teardown] Set Session Timeout And Verify ${Default_Timeout_Value} ${HTTP_OK} 56 57 # The minimum & maximum allowed values for session timeout are 30 58 # 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 70Set Session Timeout And Verify Session After Timeout 71 [Documentation] Set timeout for session service and verify session is 72 ... deleted after timeout. 73 [Tags] Set_Session_Timeout_And_Verify_Session_After_Timeout 74 [Template] Set Session Timeout And Verify Session Deleted After Timeout 75 [Teardown] Set Session Timeout And Verify ${Default_Timeout_Value} ${HTTP_OK} 76 77 #timeout Value 78 ${30} 79 ${300} 80 81 82Verify Session Login And Logout For Newly Created User 83 [Documentation] Verify able to login and logout using the session created 84 ... for new user. 85 [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 98Verify 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 105 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] 110 Valid Value session_service['SessionTimeout'] [${Default_Timeout_Value}] 111 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 122 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 137 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}'] 142 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 152 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 156 # Members can be one or more, hence checking in the list. 157 Valid List managers['Members'] required_values=[{'@odata.id': '/redfish/v1/Managers/${MANAGER_ID}'}] 158 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 168 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 173 # Members can be one or more, hence checking in the list. 174 Valid List chassis['Members'] 175 ... required_values=[{'@odata.id': '/redfish/v1/Chassis/${CHASSIS_ID}'}] 176 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']} 185 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}] 189 # Members can be one or more, hence checking in the list. 190 Valid List systems['Members'] required_values=[{'@odata.id': '/redfish/v1/Systems/${SYSTEM_ID}'}] 191 192 193Verify Session Persistency After BMC Reboot 194 [Documentation] Verify session persistency after BMC reboot. 195 [Tags] Verify_Session_Persistency_After_BMC_Reboot 196 197 # Note the current session location. 198 ${session_location}= Redfish.Get Session Location 199 200 Redfish OBMC Reboot (off) stack_mode=normal 201 202 # Check for session persistency after BMC reboot. 203 # sessions here will have list of all sessions location. 204 ${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 209*** 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. 219 # valid_status_code Expected response code, default is ${HTTP_CREATED}. 220 221 ${resp}= Redfish.Post /redfish/v1/SessionService/Sessions 222 ... body={'UserName':'${username}', 'Password': '${password}'} 223 ... valid_status_codes=[${valid_status_code}] 224 225 226Set 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 234 Redfish.Login 235 ${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 243 IF ${valid_status_code}==${HTTP_OK} 244 Valid Value session_timeout [${value}] 245 END 246 247 248Create 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. 263 Redfish.Login 264 ${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 289Suite Setup Execution 290 [Documentation] Suite Setup Execution. 291 292 Redfish.Login 293 294 # Skip operator user if SKIP_OPERATOR_USER is 1. 295 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 300 301 Create Users With Different Roles users=${USERS} force=${True} 302 Get Default Timeout Value 303 Set Redfish Delete Session Flag ${0} 304 305 306Suite Teardown Execution 307 [Documentation] Suite teardown execution. 308 309 Delete BMC Users Via Redfish users=${USERS} 310 Set Redfish Delete Session Flag ${1} 311 Run Keyword And Ignore Error Delete All Redfish Sessions 312 Redfish.Logout 313