1*** Settings *** 2Documentation Test suite for verifying Redfish admin, readonly operation user accounts. 3 4Resource ../../lib/resource.robot 5Resource ../../lib/bmc_redfish_resource.robot 6Resource ../../lib/openbmc_ffdc.robot 7Resource ../../lib/bmc_redfish_utils.robot 8 9Library SSHLibrary 10 11Test Setup Redfish.Login 12Test Teardown Test Teardown Execution 13 14Test Tags User_Account 15 16*** Variables *** 17 18${account_lockout_duration} ${30} 19${account_lockout_threshold} ${3} 20${ssh_status} ${True} 21 22*** Test Cases *** 23 24Verify AccountService Available 25 [Documentation] Verify Redfish account service is available. 26 [Tags] Verify_AccountService_Available 27 28 ${resp} = Redfish_utils.Get Attribute /redfish/v1/AccountService ServiceEnabled 29 Should Be Equal As Strings ${resp} ${True} 30 31 32Verify Redfish Admin User Persistence After Reboot 33 [Documentation] Verify Redfish admin user persistence after reboot. 34 [Tags] Verify_Redfish_Admin_User_Persistence_After_Reboot 35 [Setup] Run Keywords Redfish.Login AND 36 ... Redfish Create User admin_user TestPwd123 Administrator ${True} 37 [Teardown] Run Keywords Redfish.Delete /redfish/v1/AccountService/Accounts/admin_user 38 ... AND Test Teardown Execution 39 40 # Reboot BMC. 41 Redfish OBMC Reboot (off) stack_mode=normal 42 43 # Verify users after reboot. 44 Redfish Verify User admin_user TestPwd123 Administrator ${True} 45 46 47Verify Redfish Operator User Persistence After Reboot 48 [Documentation] Verify Redfish operator user persistence after reboot. 49 [Tags] Verify_Redfish_Operator_User_Persistence_After_Reboot 50 [Setup] Run Keywords Redfish.Login AND 51 ... Redfish Create User operator_user TestPwd123 Operator ${True} 52 [Teardown] Run Keywords Redfish.Delete /redfish/v1/AccountService/Accounts/operator_user 53 ... AND Test Teardown Execution 54 55 # Reboot BMC. 56 Redfish OBMC Reboot (off) stack_mode=normal 57 58 # Verify users after reboot. 59 Redfish Verify User operator_user TestPwd123 Operator ${True} 60 61 62Verify Redfish Readonly User Persistence After Reboot 63 [Documentation] Verify Redfish readonly user persistence after reboot. 64 [Tags] Verify_Redfish_Readonly_User_Persistence_After_Reboot 65 [Setup] Run Keywords Redfish.Login AND 66 ... Redfish Create User readonly_user TestPwd123 ReadOnly ${True} 67 [Teardown] Run Keywords Redfish.Delete /redfish/v1/AccountService/Accounts/readonly_user 68 ... AND Test Teardown Execution 69 70 # Reboot BMC. 71 Redfish OBMC Reboot (off) stack_mode=normal 72 73 # Verify users after reboot. 74 Redfish Verify User readonly_user TestPwd123 ReadOnly ${True} 75 76Redfish Create and Verify Admin User 77 [Documentation] Create a Redfish user with administrator role and verify. 78 [Tags] Redfish_Create_and_Verify_Admin_User 79 [Template] Redfish Create And Verify User 80 81 #username password role_id enabled 82 admin_user TestPwd123 Administrator ${True} 83 84 85Redfish Create and Verify Operator User 86 [Documentation] Create a Redfish user with operator role and verify. 87 [Tags] Redfish_Create_and_Verify_Operator_User 88 [Template] Redfish Create And Verify User 89 90 #username password role_id enabled 91 operator_user TestPwd123 Operator ${True} 92 93 94Redfish Create and Verify Readonly User 95 [Documentation] Create a Redfish user with readonly role and verify. 96 [Tags] Redfish_Create_and_Verify_Readonly_User 97 [Template] Redfish Create And Verify User 98 99 #username password role_id enabled 100 readonly_user TestPwd123 ReadOnly ${True} 101 102 103Verify Redfish Admin User Login With Wrong Password 104 [Documentation] Verify Redfish create admin user with valid password and make sure 105 ... admin user failed to login with wrong password. 106 [Tags] Verify_Redfish_Admin_User_Login_With_Wrong_Password 107 [Template] Verify Redfish User Login With Wrong Password 108 109 #username password role_id enabled wrong_password 110 admin_user TestPwd123 Administrator ${True} alskjhfwurh 111 112 113Verify Redfish Operator User Login With Wrong Password 114 [Documentation] Verify Redfish create operator user with valid password and make sure 115 ... operator user failed to login with wrong password. 116 [Tags] Verify_Redfish_Operator_User_Login_With_Wrong_Password 117 [Template] Verify Redfish User Login With Wrong Password 118 119 #username password role_id enabled wrong_password 120 operator_user TestPwd123 Operator ${True} 12j8a8uakjhdaosiruf024 121 122 123Verify Redfish Readonly User Login With Wrong Password 124 [Documentation] Verify Redfish create readonly user with valid password and make sure 125 ... readonly user failed to login with wrong password. 126 [Tags] Verify_Redfish_Readonly_User_Login_With_Wrong_Password 127 [Template] Verify Redfish User Login With Wrong Password 128 129 #username password role_id enabled wrong_password 130 readonly_user TestPwd123 ReadOnly ${True} 12 131 132 133Verify Login with Deleted Redfish Admin User 134 [Documentation] Verify login with deleted Redfish admin user. 135 [Tags] Verify_Login_with_Deleted_Redfish_Admin_User 136 [Template] Verify Login with Deleted Redfish User 137 138 #username password role_id enabled 139 admin_user TestPwd123 Administrator ${True} 140 141 142Verify Login with Deleted Redfish Operator User 143 [Documentation] Verify login with deleted Redfish operator user. 144 [Tags] Verify_Login_with_Deleted_Redfish_Operator_User 145 [Template] Verify Login with Deleted Redfish User 146 147 #username password role_id enabled 148 operator_user TestPwd123 Operator ${True} 149 150 151Verify Login with Deleted Redfish Readonly User 152 [Documentation] Verify login with deleted Redfish readonly user. 153 [Tags] Verify_Login_with_Deleted_Redfish_Readonly_User 154 [Template] Verify Login with Deleted Redfish User 155 156 #username password role_id enabled 157 readonly_user TestPwd123 ReadOnly ${True} 158 159 160Verify Admin User Creation Without Enabling It 161 [Documentation] Verify admin user creation without enabling it. 162 [Tags] Verify_Admin_User_Creation_Without_Enabling_It 163 [Template] Verify Create User Without Enabling 164 165 #username password role_id enabled 166 admin_user TestPwd123 Administrator ${False} 167 168 169Verify Operator User Creation Without Enabling It 170 [Documentation] Verify operator user creation without enabling it. 171 [Tags] Verify_Operator_User_Creation_Without_Enabling_It 172 [Template] Verify Create User Without Enabling 173 174 #username password role_id enabled 175 operator_user TestPwd123 Operator ${False} 176 177 178Verify Readonly User Creation Without Enabling It 179 [Documentation] Verify readonly user creation without enabling it. 180 [Tags] Verify_Readonly_User_Creation_Without_Enabling_It 181 [Template] Verify Create User Without Enabling 182 183 #username password role_id enabled 184 readonly_user TestPwd123 ReadOnly ${False} 185 186 187Verify User Creation With Invalid Role Id 188 [Documentation] Verify user creation with invalid role ID. 189 [Tags] Verify_User_Creation_With_Invalid_Role_Id 190 191 # Make sure the user account in question does not already exist. 192 Redfish.Delete /redfish/v1/AccountService/Accounts/test_user 193 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NOT_FOUND}] 194 195 # Create specified user. 196 ${payload}= Create Dictionary 197 ... UserName=test_user Password=TestPwd123 RoleId=wrongroleid Enabled=${True} 198 Redfish.Post /redfish/v1/AccountService/Accounts/ body=&{payload} 199 ... valid_status_codes=[${HTTP_BAD_REQUEST}] 200 201Verify Error Upon Creating Same Users With Different Privileges 202 [Documentation] Verify error upon creating same users with different privileges. 203 [Tags] Verify_Error_Upon_Creating_Same_Users_With_Different_Privileges 204 205 Redfish Create User test_user TestPwd123 Administrator ${True} 206 207 # Create specified user. 208 ${payload}= Create Dictionary 209 ... UserName=test_user Password=TestPwd123 RoleId=ReadOnly Enabled=${True} 210 Redfish.Post /redfish/v1/AccountService/Accounts/ body=&{payload} 211 ... valid_status_codes=[${HTTP_BAD_REQUEST}] 212 213 Redfish.Delete /redfish/v1/AccountService/Accounts/test_user 214 215 216Verify Modifying User Attributes 217 [Documentation] Verify modifying user attributes. 218 [Tags] Verify_Modifying_User_Attributes 219 220 # Create Redfish users. 221 Redfish Create User admin_user TestPwd123 Administrator ${True} 222 Redfish Create User readonly_user TestPwd123 ReadOnly ${True} 223 224 # Make sure the new user account does not already exist. 225 Redfish.Delete /redfish/v1/AccountService/Accounts/newadmin_user 226 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NOT_FOUND}] 227 228 # Update admin_user username using Redfish. 229 ${payload}= Create Dictionary UserName=newadmin_user 230 Redfish.Patch /redfish/v1/AccountService/Accounts/admin_user body=&{payload} 231 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}] 232 233 # Update readonly_user role using Redfish. 234 ${payload}= Create Dictionary RoleId=Administrator 235 Redfish.Patch /redfish/v1/AccountService/Accounts/readonly_user body=&{payload} 236 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}] 237 238 # Verify users after updating 239 Redfish Verify User newadmin_user TestPwd123 Administrator ${True} 240 Redfish Verify User readonly_user TestPwd123 Administrator ${True} 241 242 # Delete created users. 243 Redfish.Delete /redfish/v1/AccountService/Accounts/newadmin_user 244 Redfish.Delete /redfish/v1/AccountService/Accounts/readonly_user 245 246 247Verify Modifying Operator User Attributes 248 [Documentation] Verify modifying operator user attributes. 249 [Tags] Verify_Modifying_Operator_User_Attributes 250 [Setup] Run Keywords Redfish.Login AND 251 ... Redfish Create User operator_user TestPwd123 Operator ${True} 252 [Teardown] Run Keywords Redfish.Delete /redfish/v1/AccountService/Accounts/operator_user 253 ... AND Test Teardown Execution 254 255 # Update operator_user password using Redfish. 256 ${payload}= Create Dictionary Password=NewTestPwd123 257 Redfish.Patch /redfish/v1/AccountService/Accounts/operator_user body=&{payload} 258 259 # Verify users after updating 260 Redfish Verify User operator_user NewTestPwd123 Operator ${True} 261 262 263Verify User Account Locked 264 [Documentation] Verify user account locked upon trying with invalid password. 265 [Tags] Verify_User_Account_Locked 266 267 Redfish Create User admin_user TestPwd123 Administrator ${True} 268 269 ${payload}= Create Dictionary AccountLockoutThreshold=${account_lockout_threshold} 270 ... AccountLockoutDuration=${account_lockout_duration} 271 Redfish.Patch ${REDFISH_ACCOUNTS_SERVICE_URI} body=${payload} 272 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}] 273 274 Redfish.Logout 275 276 # Make ${account_lockout_threshold} failed login attempts. 277 Repeat Keyword ${account_lockout_threshold} times 278 ... Run Keyword And Expect Error *InvalidCredentialsError* Redfish.Login admin_user abcd1234 279 280 # Verify that legitimate login fails due to lockout. 281 Run Keyword And Expect Error *InvalidCredentialsError* 282 ... Redfish.Login admin_user TestPwd123 283 284 # Wait for lockout duration to expire and adding 5 sec delay to the account lock timeout 285 # ... then verify that login works. 286 ${total_wait_duartion}= Evaluate ${account_lockout_duration} + 5 287 Sleep ${total_wait_duartion}s 288 289 Redfish.Login admin_user TestPwd123 290 291 Redfish.Logout 292 293 Redfish.Login 294 295 Redfish.Delete /redfish/v1/AccountService/Accounts/admin_user 296 297 298Verify User Account Unlock 299 [Documentation] Verify manually unlocking the account before lockout time 300 [Tags] Verify_User_Account_Unlock 301 [Teardown] Run Keywords Redfish.Logout 302 ... AND Redfish.Login 303 ... AND Redfish.Delete /redfish/v1/AccountService/Accounts/test_user 304 ... AND SSHLibrary.Close All Connections 305 306 Redfish Create User test_user TestPwd123 Administrator ${True} 307 308 ${payload}= Create Dictionary 309 ... AccountLockoutThreshold=${account_lockout_threshold} 310 ... AccountLockoutDuration=${account_lockout_duration} 311 Redfish.Patch ${REDFISH_ACCOUNTS_SERVICE_URI} body=${payload} 312 313 Redfish.Logout 314 315 # Make ${account_lockout_threshold} failed login attempts. 316 Repeat Keyword ${account_lockout_threshold} times 317 ... Run Keyword And Expect Error InvalidCredentialsError* 318 ... Redfish.Login test_user abc123 319 320 # Ensure SSH Login with locked account gets failed 321 SSHLibrary.Open Connection ${OPENBMC_HOST} 322 Run Keyword And Expect Error Authentication failed* 323 ... SSHLibrary.Login test_user TestPwd123 324 325 # Verify that legitimate login fails due to lockout. 326 Run Keyword And Expect Error InvalidCredentialsError* 327 ... Redfish.Login test_user TestPwd123 328 329 ${payload}= Create Dictionary Locked=${FALSE} 330 331 # Manually unlock the account before lockout threshold expires 332 Redfish.Login 333 Redfish.Patch ${REDFISH_ACCOUNTS_URI}test_user body=${payload} 334 Redfish.Logout 335 336 # Try redfish login with the recently unlocked account 337 Redfish.Login test_user TestPwd123 338 339 # Try SSH login with the unlocked account 340 SSHLibrary.Open Connection ${OPENBMC_HOST} 341 SSHLibrary.Login test_user TestPwd123 342 343 344Verify Admin User Privilege 345 [Documentation] Verify admin user privilege. 346 [Tags] Verify_Admin_User_Privilege 347 348 Redfish Create User admin_user TestPwd123 Administrator ${True} 349 Redfish Create User readonly_user TestPwd123 ReadOnly ${True} 350 351 Redfish.Logout 352 353 Redfish.Login admin_user TestPwd123 354 355 # Change password of 'readonly' user with admin user. 356 Redfish.Patch /redfish/v1/AccountService/Accounts/readonly_user body={'Password': 'NewTestPwd123'} 357 358 # Verify modified user. 359 Redfish Verify User readonly_user NewTestPwd123 ReadOnly ${True} 360 361 # Note: Delete user would work here because a root login is 362 # performed as part of "Redfish Verify User" keyword's teardown. 363 Redfish.Delete /redfish/v1/AccountService/Accounts/admin_user 364 Redfish.Delete /redfish/v1/AccountService/Accounts/readonly_user 365 366 367Verify Operator User Role Change Using Admin Privilege User 368 [Documentation] Verify operator user role change using admin privilege user 369 [Tags] Verify_Operator_User_Role_Change_Using_Admin_Privilege_User 370 371 Redfish Create User admin_user TestPwd123 Administrator ${True} 372 Redfish Create User operator_user TestPwd123 Operator ${True} 373 374 Redfish.Logout 375 376 # Change role ID of operator user with admin user. 377 # Login with admin user. 378 Redfish.Login admin_user TestPwd123 379 380 # Modify Role ID of Operator user. 381 Redfish.Patch /redfish/v1/AccountService/Accounts/operator_user body={'RoleId': 'Administrator'} 382 383 # Verify modified user. 384 Redfish Verify User operator_user TestPwd123 Administrator ${True} 385 386 Redfish.Delete /redfish/v1/AccountService/Accounts/admin_user 387 Redfish.Delete /redfish/v1/AccountService/Accounts/operator_user 388 389 390Verify Operator User Privilege 391 [Documentation] Verify operator user privilege. 392 [Tags] Verify_Operator_User_Privilege 393 394 Redfish Create User admin_user TestPwd123 Administrator ${True} 395 Redfish Create User operator_user TestPwd123 Operator ${True} 396 397 Redfish.Logout 398 # Login with operator user. 399 Redfish.Login operator_user TestPwd123 400 401 # Verify BMC reset. 402 Run Keyword And Expect Error ValueError* Redfish BMC Reset Operation 403 404 # Attempt to change password of admin user with operator user. 405 Redfish.Patch /redfish/v1/AccountService/Accounts/admin_user body={'Password': 'NewTestPwd123'} 406 ... valid_status_codes=[${HTTP_FORBIDDEN}] 407 408 Redfish.Logout 409 410 Redfish.Login 411 412 Redfish.Delete /redfish/v1/AccountService/Accounts/admin_user 413 Redfish.Delete /redfish/v1/AccountService/Accounts/operator_user 414 415 416Verify ReadOnly User Privilege 417 [Documentation] Verify ReadOnly user privilege. 418 [Tags] Verify_ReadOnly_User_Privilege 419 420 Redfish Create User readonly_user TestPwd123 ReadOnly ${True} 421 Redfish.Logout 422 423 # Login with read_only user. 424 Redfish.Login readonly_user TestPwd123 425 426 # Read system level data. 427 ${system_model}= Redfish_Utils.Get Attribute 428 ... ${SYSTEM_BASE_URI} Model 429 430 Redfish.Logout 431 Redfish.Login 432 Redfish.Delete ${REDFISH_ACCOUNTS_URI}readonly_user 433 434 435Verify Minimum Password Length For Redfish Admin And Readonly User 436 [Documentation] Verify minimum password length for new and existing admin or 437 ... readonly user. 438 [Template] Verify Minimum Password Length For Redfish User 439 440 #username role_id 441 admin_user Administrator 442 readonly_user ReadOnly 443 444 445Verify Standard User Roles Defined By Redfish 446 [Documentation] Verify standard user roles defined by Redfish. 447 [Tags] Verify_Standard_User_Roles_Defined_By_Redfish 448 449 ${member_list}= Redfish_Utils.Get Member List 450 ... /redfish/v1/AccountService/Roles 451 452 @{roles}= Create List 453 ... /redfish/v1/AccountService/Roles/Administrator 454 ... /redfish/v1/AccountService/Roles/Operator 455 ... /redfish/v1/AccountService/Roles/ReadOnly 456 457 List Should Contain Sub List ${member_list} ${roles} 458 459 # The standard roles are: 460 461 # | Role name | Assigned privileges | 462 # | Administrator | Login, ConfigureManager, ConfigureUsers, ConfigureComponents, ConfigureSelf | 463 # | Operator | Login, ConfigureComponents, ConfigureSelf | 464 # | ReadOnly | Login, ConfigureSelf | 465 466 @{admin}= Create List Login ConfigureManager ConfigureUsers ConfigureComponents ConfigureSelf 467 @{operator}= Create List Login ConfigureComponents ConfigureSelf 468 @{readOnly}= Create List Login ConfigureSelf 469 470 ${roles_dict}= create dictionary admin_privileges=${admin} operator_privileges=${operator} 471 ... readOnly_privileges=${readOnly} 472 473 ${resp}= redfish.Get /redfish/v1/AccountService/Roles/Administrator 474 List Should Contain Sub List ${resp.dict['AssignedPrivileges']} ${roles_dict['admin_privileges']} 475 476 ${resp}= redfish.Get /redfish/v1/AccountService/Roles/Operator 477 List Should Contain Sub List ${resp.dict['AssignedPrivileges']} ${roles_dict['operator_privileges']} 478 479 ${resp}= redfish.Get /redfish/v1/AccountService/Roles/ReadOnly 480 List Should Contain Sub List ${resp.dict['AssignedPrivileges']} ${roles_dict['readOnly_privileges']} 481 482 483Verify Error While Deleting Root User 484 [Documentation] Verify error while deleting root user. 485 [Tags] Verify_Error_While_Deleting_Root_User 486 487 Redfish.Delete /redfish/v1/AccountService/Accounts/root valid_status_codes=[${HTTP_FORBIDDEN}] 488 489 490Verify SSH Login Access With Admin User 491 [Documentation] Verify that admin user have SSH login access. 492 ... By default, admin should have access but there could be 493 ... case where admin user shell access is restricted by design 494 ... in the community sphere.. 495 [Tags] Verify_SSH_Login_Access_With_Admin_User 496 497 #Create an admin user and verify SSH login. 498 Create Admin User And Verify SSH Login 499 500 Redfish.Login 501 Redfish.Delete /redfish/v1/AccountService/Accounts/new_admin 502 503Verify SSH Login Is Revoked For Deleted User 504 [Documentation] Verify SSH login access is revoked for deleted User. 505 [Tags] Verify_SSH_Login_Is_Revoked_For_Deleted_User 506 507 #Create an admin user and verify SSH login. 508 Create Admin User And Verify SSH Login 509 510 #Login with root user. 511 Redfish.Login 512 513 # Delete the admin user. 514 Redfish.Delete /redfish/v1/AccountService/Accounts/new_admin 515 ... valid_status_codes=[${HTTP_OK}] 516 517 # Attempt SSH login with Deleted user. 518 SSHLibrary.Open Connection ${OPENBMC_HOST} 519 Run Keyword And Expect Error Authentication failed* 520 ... SSHLibrary.Login new_admin TestPwd1 521 522Verify Configure BasicAuth Enable And Disable 523 [Documentation] Verify configure basicauth enable and disable 524 [Tags] Verify_Configure_BasicAuth_Enable_And_Disable 525 [Template] Template For Configure Auth Methods 526 527 # auth_method 528 BasicAuth 529 XToken 530 531 532Redfish Create and Verify Admin User With Invalid Password Format 533 [Documentation] Create a admin user with invalid password format and verify. 534 [Template] Create User With Unsupported Password Format And Verify 535 [Tags] Redfish_Create_and_Verify_Admin_User_With_Invalid_Password_Format 536 537 #username role_id password 538 admin_user Administrator snellens 539 admin_user Administrator 10000001 540 admin_user Administrator 12345678 541 admin_user Administrator abcdefgh 542 admin_user Administrator abf12345 543 admin_user Administrator helloworld 544 admin_user Administrator HELLOWORLD 545 admin_user Administrator &$%**!*@ 546 admin_user Administrator Dictation 547 548 549Redfish Create and Verify Readonly User With Invalid Password Format 550 [Documentation] Create a readonly user with invalid password format and verify. 551 [Template] Create User With Unsupported Password Format And Verify 552 [Tags] Redfish_Create_and_Verify_Readonly_User_With_Invalid_Password_Format 553 554 #username role_id password 555 readonly_user ReadOnly snellens 556 readonly_user ReadOnly 10000001 557 readonly_user ReadOnly 12345678 558 readonly_user ReadOnly abcdefgh 559 readonly_user ReadOnly abf12345 560 readonly_user ReadOnly helloworld 561 readonly_user ReadOnly HELLOWORLD 562 readonly_user ReadOnly &$%**!*@ 563 readonly_user ReadOnly Dictation 564 565 566Verify Admin And Readonly User Password Is Not Same As Username 567 [Documentation] Verify that admin and readonly user creation is failed if 568 ... password is same as username. 569 [Template] Create User With Unsupported Password Format And Verify 570 [Tags] Verify_Admin_And_Readonly_User_Password_Is_Not_Same_As_Username 571 572 #username role_id password 573 AdminUser1 Administrator AdminUser1 574 ReadOnlyUser1 ReadOnly ReadOnlyUser1 575 576Verify AccountService Unsupported Methods 577 [Documentation] Verify Unsupported methods of AccountService 578 [Tags] Verify_AccountService_Unsupported_Methods 579 580 # Put operation on Account Services 581 Redfish.Put /redfish/v1/AccountService 582 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 583 584 # Post operation on Account Services 585 Redfish.Post /redfish/v1/AccountService 586 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 587 588 # Delete operation on Account Services 589 Redfish.Delete /redfish/v1/AccountService 590 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 591 592Verify AccountService Roles Unsupported Methods 593 [Documentation] Verify Unsupported methods of AccountService/Roles 594 [Tags] Verify_AccountService_Roles_Unsupported_Methods 595 596 # Put operation on Account Services Roles 597 Redfish.Put /redfish/v1/AccountService/Roles 598 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 599 600 # Post operation on Account Services Roles 601 Redfish.Post /redfish/v1/AccountService/Roles 602 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 603 604 # Delete operation on Account Services Roles 605 Redfish.Delete /redfish/v1/AccountService/Roles 606 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 607 608 # Patch operation on Account Services Roles 609 Redfish.Patch /redfish/v1/AccountService/Roles 610 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 611 612Verify AccountService Roles Instance With Unsupported Methods 613 [Documentation] Verify Instance Roles for AccountService and Unsupported Methods 614 [Tags] Verify_AccountService_Roles_Instance_With_Unsupported_Methods 615 616 # GET Administrator Role Instance 617 Redfish.Get /redfish/v1/AccountService/Roles/Administrator 618 ... valid_status_codes=[${HTTP_OK}] 619 620 # GET Operator Role Instance 621 Redfish.Get /redfish/v1/AccountService/Roles/Operator 622 ... valid_status_codes=[${HTTP_OK}] 623 624 # GET ReadOnly RoleInstance 625 Redfish.Get /redfish/v1/AccountService/Roles/ReadOnly 626 ... valid_status_codes=[${HTTP_OK}] 627 628 # Post operation on Account Service Roles Instance 629 Redfish.Post /redfish/v1/AccountService/Roles/Administrator 630 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 631 632 # Put operation on Account Service Roles Instance 633 Redfish.Put /redfish/v1/AccountService/Roles/Administrator 634 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 635 636 # Patch operation on Account Service Roles Instance 637 Redfish.Patch /redfish/v1/AccountService/Roles/Administrator 638 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 639 640 #Delete operation on Account Service Roles Instance 641 Redfish.Delete /redfish/v1/AccountService/Roles/Administrator 642 ... valid_status_codes=[${HTTP_METHOD_NOT_ALLOWED}] 643 644*** Keywords *** 645 646Test Teardown Execution 647 [Documentation] Do the post test teardown. 648 649 Run Keyword And Ignore Error Redfish.Logout 650 FFDC On Test Case Fail 651 652 653Redfish Create User 654 [Documentation] Redfish create user. 655 [Arguments] ${username} ${password} ${role_id} ${enabled} ${login_check}=${True} 656 657 # Description of argument(s): 658 # username The username to be created. 659 # password The password to be assigned. 660 # role_id The role ID of the user to be created 661 # (e.g. "Administrator", "Operator", etc.). 662 # enabled Indicates whether the username being created 663 # should be enabled (${True}, ${False}). 664 # login_check Checks user login for created user. 665 # (e.g. ${True}, ${False}). 666 667 # Make sure the user account in question does not already exist. 668 Redfish.Delete /redfish/v1/AccountService/Accounts/${userName} 669 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NOT_FOUND}] 670 671 # Create specified user. 672 ${payload}= Create Dictionary 673 ... UserName=${username} Password=${password} RoleId=${role_id} Enabled=${enabled} 674 Redfish.Post /redfish/v1/AccountService/Accounts/ body=&{payload} 675 ... valid_status_codes=[${HTTP_CREATED}] 676 677 # Resetting faillock count as a workaround for issue 678 # openbmc/phosphor-user-manager#4 679 ${cmd}= Catenate /usr/sbin/faillock --user ${username} --reset 680 681 Bmc Execute Command ${cmd} 682 683 # Verify login with created user. 684 IF '${login_check}' == '${True}' 685 ${status}= Run Keyword And Return Status 686 ... Verify Redfish User Login ${username} ${password} 687 ELSE 688 ${status}= Set Variable ${False} 689 END 690 691 IF '${login_check}' == '${True}' Should Be Equal ${status} ${enabled} 692 693 # Validate Role ID of created user. 694 ${role_config}= Redfish_Utils.Get Attribute 695 ... /redfish/v1/AccountService/Accounts/${username} RoleId 696 Should Be Equal ${role_id} ${role_config} 697 698 699Redfish Verify User 700 [Documentation] Redfish user verification. 701 [Arguments] ${username} ${password} ${role_id} ${enabled} 702 703 # Description of argument(s): 704 # username The username to be created. 705 # password The password to be assigned. 706 # role_id The role ID of the user to be created 707 # (e.g. "Administrator", "Operator", etc.). 708 # enabled Indicates whether the username being created 709 # should be enabled (${True}, ${False}). 710 711 ${status}= Verify Redfish User Login ${username} ${password} 712 # Doing a check of the returned status. 713 Should Be Equal ${status} ${enabled} 714 715 # Validate Role Id of user. 716 ${role_config}= Redfish_Utils.Get Attribute 717 ... /redfish/v1/AccountService/Accounts/${username} RoleId 718 Should Be Equal ${role_id} ${role_config} 719 720 721Verify Redfish User Login 722 [Documentation] Verify Redfish login with given user id. 723 [Teardown] Run Keywords Run Keyword And Ignore Error Redfish.Logout AND Redfish.Login 724 [Arguments] ${username} ${password} 725 726 # Description of argument(s): 727 # username Login username. 728 # password Login password. 729 730 # Logout from current Redfish session. 731 # We don't really care if the current session is flushed out since we are going to login 732 # with new credential in next. 733 Run Keyword And Ignore Error Redfish.Logout 734 735 ${status}= Run Keyword And Return Status Redfish.Login ${username} ${password} 736 RETURN ${status} 737 738 739Redfish Create And Verify User 740 [Documentation] Redfish create and verify user. 741 [Arguments] ${username} ${password} ${role_id} ${enabled} 742 743 # Description of argument(s): 744 # username The username to be created. 745 # password The password to be assigned. 746 # role_id The role ID of the user to be created 747 # (e.g. "Administrator", "Operator", etc.). 748 # enabled Indicates whether the username being created 749 # should be enabled (${True}, ${False}). 750 751 # Example: 752 #{ 753 #"@odata.context": "/redfish/v1/$metadata#ManagerAccount.ManagerAccount", 754 #"@odata.id": "/redfish/v1/AccountService/Accounts/test1", 755 #"@odata.type": "#ManagerAccount.v1_0_3.ManagerAccount", 756 #"Description": "User Account", 757 #"Enabled": true, 758 #"Id": "test1", 759 #"Links": { 760 # "Role": { 761 # "@odata.id": "/redfish/v1/AccountService/Roles/Administrator" 762 # } 763 #}, 764 765 Redfish Create User ${username} ${password} ${role_id} ${enabled} 766 767 Redfish Verify User ${username} ${password} ${role_id} ${enabled} 768 769 # Delete Specified User 770 Redfish.Delete /redfish/v1/AccountService/Accounts/${username} 771 772Verify Redfish User Login With Wrong Password 773 [Documentation] Verify Redfish User failed to login with wrong password. 774 [Arguments] ${username} ${password} ${role_id} ${enabled} ${wrong_password} 775 776 # Description of argument(s): 777 # username The username to be created. 778 # password The password to be assigned. 779 # role_id The role ID of the user to be created 780 # (e.g. "Administrator", "Operator", etc.). 781 # enabled Indicates whether the username being created 782 # should be enabled (${True}, ${False}). 783 # wrong_password Any invalid password. 784 785 Redfish Create User ${username} ${password} ${role_id} ${enabled} 786 787 Redfish.Logout 788 789 # Attempt to login with created user with invalid password. 790 Run Keyword And Expect Error InvalidCredentialsError* 791 ... Redfish.Login ${username} ${wrong_password} 792 793 Redfish.Login 794 795 # Delete newly created user. 796 Redfish.Delete /redfish/v1/AccountService/Accounts/${username} 797 798 799Verify Login with Deleted Redfish User 800 [Documentation] Verify Login with Deleted Redfish User. 801 [Arguments] ${username} ${password} ${role_id} ${enabled} 802 803 # Description of argument(s): 804 # username The username to be created. 805 # password The password to be assigned. 806 # role_id The role ID of the user to be created 807 # (e.g. "Administrator", "Operator", etc.). 808 # enabled Indicates whether the username being created 809 # should be enabled (${True}, ${False}). 810 811 Redfish Create User ${username} ${password} ${role_id} ${enabled} 812 813 # Delete newly created user. 814 Redfish.Delete /redfish/v1/AccountService/Accounts/${userName} 815 816 Redfish.Logout 817 818 # Attempt to login with deleted user account. 819 Run Keyword And Expect Error InvalidCredentialsError* 820 ... Redfish.Login ${username} ${password} 821 822 Redfish.Login 823 824 825Verify Create User Without Enabling 826 [Documentation] Verify Create User Without Enabling. 827 [Arguments] ${username} ${password} ${role_id} ${enabled} 828 829 # Description of argument(s): 830 # username The username to be created. 831 # password The password to be assigned. 832 # role_id The role ID of the user to be created 833 # (e.g. "Administrator", "Operator", etc.). 834 # enabled Indicates whether the username being created 835 # should be enabled (${True}, ${False}). 836 837 Redfish Create User ${username} ${password} ${role_id} ${enabled} ${False} 838 839 Redfish.Logout 840 841 # Login with created user. 842 Run Keyword And Expect Error InvalidCredentialsError* 843 ... Redfish.Login ${username} ${password} 844 845 Redfish.Login 846 847 # Delete newly created user. 848 Redfish.Delete /redfish/v1/AccountService/Accounts/${username} 849 850Template For Configure Auth Methods 851 [Documentation] Template to configure auth methods. 852 [Arguments] ${auth_method} 853 [Teardown] Configure AuthMethods ${auth_method}=${initial_value} 854 855 # Description of Argument(s): 856 # authmethods The authmethod setting which needs to be 857 # set in account service URI. 858 # valid values BasicAuth, XToken. 859 860 Get AuthMethods Default Values ${auth_method} 861 862 # Patch basicauth to TRUE 863 Configure AuthMethods ${auth_method}=${TRUE} 864 865 IF "${auth_method}" == "XToken" 866 Check XToken Works Fine ${HTTP_OK} 867 ELSE 868 Check BasicAuth Works Fine ${HTTP_OK} 869 END 870 871 # Patch basicauth to FALSE 872 Configure AuthMethods ${auth_method}=${FALSE} 873 874 IF "${auth_method}" == "BasicAuth" 875 Check BasicAuth Works Fine ${HTTP_UNAUTHORIZED} 876 ELSE 877 Check XToken Works Fine ${HTTP_UNAUTHORIZED} 878 END 879 880Configure AuthMethods 881 [Documentation] Enable/disable authmethod types. 882 [Arguments] &{authmethods} 883 884 # Description of argument(s): 885 # authmethods The authmethod setting which needs to be 886 # set in account service URI. 887 # Usage Example Configure AuthMethods XToken=${TRUE} BasicAuth=${TRUE} 888 # This will set the value of "XToken" and "BasicAuth" 889 # property in accountservice uri to TRUE. 890 891 ${openbmc}= Create Dictionary AuthMethods=${authmethods} 892 ${oem}= Create Dictionary OpenBMC=${openbmc} 893 ${payload}= Create Dictionary Oem=${oem} 894 895 # Setting authmethod properties using Redfish session based auth 896 ${status}= Run Keyword And Return Status 897 ... Redfish.Patch ${REDFISH_BASE_URI}AccountService 898 ... body=${payload} valid_status_codes=[${HTTP_OK},${HTTP_NO_CONTENT}] 899 900 # Setting authmethod properties using basic auth in case the former fails 901 IF ${status}==${FALSE} 902 # Payload dictionary pre-process to match json formatting 903 ${payload}= Convert To String ${payload} 904 ${payload}= Replace String ${payload} ' " 905 ${payload}= Replace String ${payload} False false 906 ${payload}= Replace String ${payload} True true 907 908 # Curl Command Framing for PATCH authmethod 909 ${cmd}= Catenate curl -k -i -u ${OPENBMC_USERNAME}:${OPENBMC_PASSWORD} 910 ... -X PATCH '${AUTH_URI}${REDFISH_ACCOUNTS_SERVICE_URI}' 911 ... -H 'content-type:application/json' -H 'If-Match:*' 912 ... -d '${payload}' 913 ${rc} ${out}= Run And Return Rc And Output ${cmd} 914 915 # Check the response of curl command is 200 or 204 916 ${check_no_content}= 917 ... Run Keyword and Return Status Should Contain ${out} 204 918 ${check_ok}= 919 ... Run Keyword and Return Status Should Contain ${out} 200 920 Pass Execution If ${check_no_content}==${TRUE} 921 ... OR ${check_ok}==${TRUE} 922 END 923 924 925Get AuthMethods Default Values 926 [Documentation] Get enabled/disabled status of all authmethods 927 ... from Redfish account service URI 928 [Arguments] ${authmethod} 929 930 # Description of argument(s): 931 # authmethod The authmethod property whose value needs to be 932 # retrieved from account service URI. 933 # Usage Example Get AuthMethods Default Values BasicAuth 934 # returns >> ${TRUE} 935 # Example: 936 # { 937 # "@odata.id": "/redfish/v1/AccountService", 938 # (...) 939 # "Oem": { 940 # "OpenBMC": { 941 # "AuthMethods": { 942 # "BasicAuth": true, 943 # "Cookie": true, 944 # "SessionToken": true, 945 # "TLS": true, 946 # "XToken": true 947 # } 948 # } 949 # } 950 # } 951 952 ${resp}= Redfish.Get Attribute ${REDFISH_ACCOUNTS_SERVICE_URI} Oem 953 ${authmethods}= Set Variable ${resp['OpenBMC']['AuthMethods']} 954 ${initial_value}= Get From Dictionary ${authmethods} ${authmethod} 955 Set Test Variable ${initial_value} 956 957Check XToken Works Fine 958 [Documentation] Verify Xtoken works fine. 959 [Arguments] ${status_code} 960 961 # Description of Argument(s): 962 # status_code : 200, 401. 963 964 # Verify xtoken auth works for xtoken 965 Redfish.Get ${REDFISH_ACCOUNTS_SERVICE_URI} 966 ... valid_status_codes=[${status_code}] 967 968Check BasicAuth Works Fine 969 [Documentation] Verify Basic Auth works fine. 970 [Arguments] ${status_code} 971 972 # Description of Argument(s): 973 # status_code : 200, 401. 974 975 # Verify basic auth works based on basic auth. 976 ${cmd}= Catenate curl -k -i -u ${OPENBMC_USERNAME}:${OPENBMC_PASSWORD} 977 ... ${AUTH_URI}/redfish/v1/AccountService 978 ${rc} ${out}= Run And Return Rc And Output ${cmd} 979 980 # Check the response of curl command is 200/401 981 Should Contain ${out} ${status_code} 982 983 984Create User With Unsupported Password Format And Verify 985 [Documentation] Create admin or readonly user with unsupported password format 986 ... and verify. 987 [Arguments] ${username} ${role_id} ${password} 988 989 # Description of argument(s): 990 # username The username to be created. 991 # role_id The role ID of the user to be created 992 # (e.g. "Administrator", "ReadOnly"). 993 # password The password to be assigned. 994 # Unsupported password format are sequential characters, 995 # sequential digits, palindrome digits, palindrome characters, 996 # only uppercase letters, only lowercase letters, only digits, 997 # only characters, not a dictionary word, username and password 998 # should not be same. 999 1000 # Make sure the user account in question does not already exist. 1001 Redfish.Delete /redfish/v1/AccountService/Accounts/${userName} 1002 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NOT_FOUND}] 1003 1004 # Create specified user with invalid password format. 1005 ${payload}= Create Dictionary 1006 ... UserName=${username} Password=${password} RoleId=${role_id} Enabled=${True} 1007 Redfish.Post /redfish/v1/AccountService/Accounts/ body=&{payload} 1008 ... valid_status_codes=[${HTTP_BAD_REQUEST}] 1009 1010 1011Verify Minimum Password Length For Redfish User 1012 [Documentation] Verify minimum password length for new and existing admin or 1013 ... readonly user. 1014 [Arguments] ${user_name} ${role_id} 1015 1016 # Description of argument(s): 1017 # user_name The username to be created. 1018 # role_id The role ID of the user to be created. 1019 1020 # Make sure the user account in question does not already exist. 1021 Redfish.Delete /redfish/v1/AccountService/Accounts/${user_name} 1022 ... valid_status_codes=[${HTTP_OK}, ${HTTP_NOT_FOUND}] 1023 1024 # Try to create a user with invalid length password. 1025 ${payload}= Create Dictionary 1026 ... UserName=${user_name} Password=UserPwd RoleId=${role_id} Enabled=${True} 1027 Redfish.Post /redfish/v1/AccountService/Accounts/ body=&{payload} 1028 ... valid_status_codes=[${HTTP_BAD_REQUEST}] 1029 1030 # Create specified user with valid length password. 1031 Set To Dictionary ${payload} Password UserPwd1 1032 Redfish.Post /redfish/v1/AccountService/Accounts/ body=&{payload} 1033 ... valid_status_codes=[${HTTP_CREATED}] 1034 1035 # Try to change to an invalid password. 1036 Redfish.Patch /redfish/v1/AccountService/Accounts/${user_name} body={'Password': 'UserPwd'} 1037 ... valid_status_codes=[${HTTP_BAD_REQUEST}] 1038 1039 # Change to a valid password. 1040 Redfish.Patch /redfish/v1/AccountService/Accounts/${user_name} body={'Password': 'UserPwd1'} 1041 1042 # Verify login. 1043 Redfish.Logout 1044 Redfish.Login ${user_name} UserPwd1 1045 Redfish.Logout 1046 Redfish.Login 1047 Redfish.Delete /redfish/v1/AccountService/Accounts/${user_name} 1048 1049Create Admin User And Verify SSH Login 1050 [Documentation] Create admin user and verify SSH login & logout. 1051 1052 # Create an admin User. 1053 Redfish Create User new_admin TestPwd1 Administrator ${True} 1054 1055 # Attempt SSH login with admin user. 1056 SSHLibrary.Open Connection ${OPENBMC_HOST} 1057 ${status}= Run Keyword And Return Status SSHLibrary.Login new_admin TestPwd1 1058 1059 # By default ssh_status is True, user can change the status via CLI 1060 # -v ssh_status:False 1061 Should Be Equal As Strings "${status}" "${ssh_status}" 1062 1063 # Close SSH connection for admin user. 1064 SSHLibrary.Close Connection