1192d10a2SSteven Sombar*** Settings ***
2192d10a2SSteven SombarDocumentation      Test BMC using https://github.com/DMTF/Redfish-Service-Validator.
3192d10a2SSteven Sombar...                DMTF tool.
4192d10a2SSteven Sombar
5192d10a2SSteven SombarLibrary            OperatingSystem
6*4a95aeffSGeorge KeishingLibrary            ../../lib/gen_robot_print.py
7192d10a2SSteven SombarResource           ../../lib/dmtf_tools_utils.robot
8*4a95aeffSGeorge KeishingResource           ../../lib/bmc_redfish_resource.robot
9*4a95aeffSGeorge 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
16192d10a2SSteven Sombar${command_string}  ${DEFAULT_PYTHON} ${rsv_dir_path}${/}RedfishServiceValidator.py
17192d10a2SSteven Sombar...                --ip ${OPENBMC_HOST} --nochkcert --forceauth -u ${OPENBMC_USERNAME}
18192d10a2SSteven Sombar...                -p ${OPENBMC_PASSWORD} --logdir ${EXECDIR}${/}logs${/} --debug_logging
19192d10a2SSteven Sombar
20192d10a2SSteven Sombar*** Test Case ***
21192d10a2SSteven Sombar
22192d10a2SSteven SombarTest BMC Redfish Using Redfish Service Validator
23192d10a2SSteven Sombar    [Documentation]  Check conformance with a Redfish service interface.
24192d10a2SSteven Sombar    [Tags]  Test_BMC_Redfish_Using_Redfish_Service_Validator
25192d10a2SSteven Sombar
26192d10a2SSteven Sombar    Download DMTF Tool  ${rsv_dir_path}  ${rsv_github_url}
27192d10a2SSteven Sombar
28192d10a2SSteven Sombar    ${output}=  Run DMTF Tool  ${rsv_dir_path}  ${command_string}
29192d10a2SSteven Sombar
30192d10a2SSteven Sombar    Redfish Service Validator Result  ${output}
31*4a95aeffSGeorge Keishing
32*4a95aeffSGeorge Keishing
33*4a95aeffSGeorge KeishingRun Redfish Service Validator With Additional Roles
34*4a95aeffSGeorge Keishing    [Documentation]  Check Redfish conformance using the Redfish Service Validator.
35*4a95aeffSGeorge Keishing    ...  Run the validator as additional non-admin user roles.
36*4a95aeffSGeorge Keishing    [Tags]  Run_Redfish_Service_Validator_With_Additional_Roles
37*4a95aeffSGeorge Keishing    [Template]  Create User And Run Service Validator
38*4a95aeffSGeorge Keishing
39*4a95aeffSGeorge Keishing    #username      password             role        enabled
40*4a95aeffSGeorge Keishing    operator_user  ${OPENBMC_PASSWORD}  Operator    ${True}
41*4a95aeffSGeorge Keishing    readonly_user  ${OPENBMC_PASSWORD}  ReadOnly    ${True}
42*4a95aeffSGeorge Keishing
43*4a95aeffSGeorge Keishing
44*4a95aeffSGeorge Keishing*** Keywords ***
45*4a95aeffSGeorge Keishing
46*4a95aeffSGeorge KeishingCreate User And Run Service Validator
47*4a95aeffSGeorge Keishing    [Documentation]  Create user and run validator.
48*4a95aeffSGeorge Keishing    [Arguments]   ${username}  ${password}  ${role}  ${enabled}
49*4a95aeffSGeorge Keishing    [Teardown]  Delete User Created  ${username}
50*4a95aeffSGeorge Keishing
51*4a95aeffSGeorge Keishing    # Description of argument(s):
52*4a95aeffSGeorge Keishing    # username            The username to be created.
53*4a95aeffSGeorge Keishing    # password            The password to be assigned.
54*4a95aeffSGeorge Keishing    # role                The role of the user to be created
55*4a95aeffSGeorge Keishing    #                     (e.g. "Administrator", "Operator", etc.).
56*4a95aeffSGeorge Keishing    # enabled             Indicates whether the username being created
57*4a95aeffSGeorge Keishing    #                     should be enabled (${True}, ${False}).
58*4a95aeffSGeorge Keishing
59*4a95aeffSGeorge Keishing    Redfish.Login
60*4a95aeffSGeorge Keishing    Redfish Create User  ${username}  ${password}  ${role}  ${enabled}
61*4a95aeffSGeorge Keishing    Redfish.Logout
62*4a95aeffSGeorge Keishing
63*4a95aeffSGeorge Keishing    Download DMTF Tool  ${rsv_dir_path}  ${rsv_github_url}
64*4a95aeffSGeorge Keishing
65*4a95aeffSGeorge Keishing    ${cmd}=  Catenate  ${DEFAULT_PYTHON} ${rsv_dir_path}${/}RedfishServiceValidator.py
66*4a95aeffSGeorge Keishing    ...  --ip ${OPENBMC_HOST} --nochkcert --authtype=Session -u ${username}
67*4a95aeffSGeorge Keishing    ...  -p ${password} --logdir ${EXECDIR}${/}logs_${username}${/} --debug_logging
68*4a95aeffSGeorge Keishing
69*4a95aeffSGeorge Keishing    Rprint Vars  cmd
70*4a95aeffSGeorge Keishing
71*4a95aeffSGeorge Keishing    ${output}=  Run DMTF Tool  ${rsv_dir_path}  ${cmd}
72*4a95aeffSGeorge Keishing
73*4a95aeffSGeorge Keishing    Redfish Service Validator Result  ${output}
74*4a95aeffSGeorge Keishing
75*4a95aeffSGeorge Keishing
76*4a95aeffSGeorge KeishingDelete User Created
77*4a95aeffSGeorge Keishing    [Documentation]  Delete user.
78*4a95aeffSGeorge Keishing    [Arguments]   ${username}
79*4a95aeffSGeorge Keishing
80*4a95aeffSGeorge Keishing    # Description of argument(s):
81*4a95aeffSGeorge Keishing    # username            The username to be deleted.
82*4a95aeffSGeorge Keishing
83*4a95aeffSGeorge Keishing    Redfish.Login
84*4a95aeffSGeorge Keishing    Redfish.Delete  /redfish/v1/AccountService/Accounts/${username}
85*4a95aeffSGeorge Keishing    Redfish.Logout
86