1192d10a2SSteven Sombar*** Settings ***
2192d10a2SSteven SombarDocumentation      Test BMC using https://github.com/DMTF/Redfish-Service-Validator.
3192d10a2SSteven Sombar...                DMTF tool.
4192d10a2SSteven Sombar
5192d10a2SSteven SombarLibrary            OperatingSystem
64a95aeffSGeorge KeishingLibrary            ../../lib/gen_robot_print.py
7192d10a2SSteven SombarResource           ../../lib/dmtf_tools_utils.robot
84a95aeffSGeorge KeishingResource           ../../lib/bmc_redfish_resource.robot
94a95aeffSGeorge KeishingResource           ../../lib/bmc_redfish_utils.robot
10192d10a2SSteven Sombar
11192d10a2SSteven Sombar*** Variables ***
12192d10a2SSteven Sombar
13192d10a2SSteven Sombar${DEFAULT_PYTHON}  python3
14192d10a2SSteven Sombar${rsv_dir_path}    Redfish-Service-Validator
15192d10a2SSteven Sombar${rsv_github_url}  https://github.com/DMTF/Redfish-Service-Validator.git
16f189ff89SGeorge Keishing${cmd_str_master}  ${DEFAULT_PYTHON} ${rsv_dir_path}${/}RedfishServiceValidator.py
17f189ff89SGeorge Keishing...                --ip https://${OPENBMC_HOST}:${HTTPS_PORT} --authtype=Session -u ${OPENBMC_USERNAME}
18f189ff89SGeorge Keishing...                -p ${OPENBMC_PASSWORD} --logdir ${EXECDIR}${/}logs${/} --debugging
19839ec72aSGeorge Keishing${branch_name}    main
20192d10a2SSteven Sombar
21*409df05dSGeorge Keishing*** Test Cases ***
22192d10a2SSteven Sombar
23192d10a2SSteven SombarTest BMC Redfish Using Redfish Service Validator
24192d10a2SSteven Sombar    [Documentation]  Check conformance with a Redfish service interface.
25192d10a2SSteven Sombar    [Tags]  Test_BMC_Redfish_Using_Redfish_Service_Validator
26192d10a2SSteven Sombar
27bca06d02Sganesanb    Download DMTF Tool  ${rsv_dir_path}  ${rsv_github_url}  ${branch_name}
28192d10a2SSteven Sombar
29899ae01fSGeorge Keishing    ${rc}  ${output}=  Run DMTF Tool  ${rsv_dir_path}  ${cmd_str_master}  check_error=1
30192d10a2SSteven Sombar
31192d10a2SSteven Sombar    Redfish Service Validator Result  ${output}
32899ae01fSGeorge Keishing    Run Keyword If  ${rc} != 0  Fail  Redfish-Service-Validator Failed.
334a95aeffSGeorge Keishing
344a95aeffSGeorge Keishing
354a95aeffSGeorge KeishingRun Redfish Service Validator With Additional Roles
364a95aeffSGeorge Keishing    [Documentation]  Check Redfish conformance using the Redfish Service Validator.
374a95aeffSGeorge Keishing    ...  Run the validator as additional non-admin user roles.
384a95aeffSGeorge Keishing    [Tags]  Run_Redfish_Service_Validator_With_Additional_Roles
394a95aeffSGeorge Keishing    [Template]  Create User And Run Service Validator
404a95aeffSGeorge Keishing
414a95aeffSGeorge Keishing    #username      password       role        enabled
422c132011SGeorge Keishing    operator_user  0penBmc123     Operator    ${True}
432c132011SGeorge Keishing    readonly_user  0penBmc123     ReadOnly    ${True}
444a95aeffSGeorge Keishing
454a95aeffSGeorge Keishing*** Keywords ***
464a95aeffSGeorge Keishing
474a95aeffSGeorge KeishingCreate User And Run Service Validator
484a95aeffSGeorge Keishing    [Documentation]  Create user and run validator.
494a95aeffSGeorge Keishing    [Arguments]   ${username}  ${password}  ${role}  ${enabled}
504a95aeffSGeorge Keishing    [Teardown]  Delete User Created  ${username}
514a95aeffSGeorge Keishing
524a95aeffSGeorge Keishing    # Description of argument(s):
534a95aeffSGeorge Keishing    # username            The username to be created.
544a95aeffSGeorge Keishing    # password            The password to be assigned.
554a95aeffSGeorge Keishing    # role                The role of the user to be created
564a95aeffSGeorge Keishing    #                     (e.g. "Administrator", "Operator", etc.).
574a95aeffSGeorge Keishing    # enabled             Indicates whether the username being created
584a95aeffSGeorge Keishing    #                     should be enabled (${True}, ${False}).
594a95aeffSGeorge Keishing
604a95aeffSGeorge Keishing    Redfish.Login
614a95aeffSGeorge Keishing    Redfish Create User  ${username}  ${password}  ${role}  ${enabled}
624a95aeffSGeorge Keishing    Redfish.Logout
634a95aeffSGeorge Keishing
64bca06d02Sganesanb    Download DMTF Tool  ${rsv_dir_path}  ${rsv_github_url}  ${branch_name}
654a95aeffSGeorge Keishing
664a95aeffSGeorge Keishing    ${cmd}=  Catenate  ${DEFAULT_PYTHON} ${rsv_dir_path}${/}RedfishServiceValidator.py
67899ae01fSGeorge Keishing    ...  --ip https://${OPENBMC_HOST}:${HTTPS_PORT} --authtype=Session -u ${username}
68899ae01fSGeorge Keishing    ...  -p ${password} --logdir ${EXECDIR}${/}logs_${username}${/} --debugging
694a95aeffSGeorge Keishing
704a95aeffSGeorge Keishing    Rprint Vars  cmd
714a95aeffSGeorge Keishing
72899ae01fSGeorge Keishing    ${rc}  ${output}=  Run DMTF Tool  ${rsv_dir_path}  ${cmd}  check_error=1
734a95aeffSGeorge Keishing
744a95aeffSGeorge Keishing    Redfish Service Validator Result  ${output}
75899ae01fSGeorge Keishing    Run Keyword If  ${rc} != 0  Fail
764a95aeffSGeorge Keishing
774a95aeffSGeorge Keishing
784a95aeffSGeorge KeishingDelete User Created
794a95aeffSGeorge Keishing    [Documentation]  Delete user.
804a95aeffSGeorge Keishing    [Arguments]   ${username}
814a95aeffSGeorge Keishing
824a95aeffSGeorge Keishing    # Description of argument(s):
834a95aeffSGeorge Keishing    # username            The username to be deleted.
844a95aeffSGeorge Keishing
854a95aeffSGeorge Keishing    Redfish.Login
864a95aeffSGeorge Keishing    Redfish.Delete  /redfish/v1/AccountService/Accounts/${username}
874a95aeffSGeorge Keishing    Redfish.Logout
88