1*** Settings ***
2Documentation      Test BMC using https://github.com/DMTF/Redfish-Service-Validator.
3...                DMTF tool.
4
5Library            OperatingSystem
6Library            ../../lib/gen_robot_print.py
7Resource           ../../lib/dmtf_tools_utils.robot
8Resource           ../../lib/bmc_redfish_resource.robot
9Resource           ../../lib/bmc_redfish_utils.robot
10
11*** Variables ***
12
13${DEFAULT_PYTHON}  python3
14${rsv_dir_path}    Redfish-Service-Validator
15${rsv_github_url}  https://github.com/DMTF/Redfish-Service-Validator.git
16${cmd_str_master}  ${DEFAULT_PYTHON} ${rsv_dir_path}${/}RedfishServiceValidator.py
17...                --ip https://${OPENBMC_HOST}:${HTTPS_PORT} --authtype=Session -u ${OPENBMC_USERNAME}
18...                -p ${OPENBMC_PASSWORD} --logdir ${EXECDIR}${/}logs${/} --debugging
19${branch_name}    master
20
21*** Test Case ***
22
23Test BMC Redfish Using Redfish Service Validator
24    [Documentation]  Check conformance with a Redfish service interface.
25    [Tags]  Test_BMC_Redfish_Using_Redfish_Service_Validator
26
27    Download DMTF Tool  ${rsv_dir_path}  ${rsv_github_url}  ${branch_name}
28
29    ${rc}  ${output}=  Run DMTF Tool  ${rsv_dir_path}  ${cmd_str_master}  check_error=1
30
31    Redfish Service Validator Result  ${output}
32    Run Keyword If  ${rc} != 0  Fail  Redfish-Service-Validator Failed.
33
34
35Run Redfish Service Validator With Additional Roles
36    [Documentation]  Check Redfish conformance using the Redfish Service Validator.
37    ...  Run the validator as additional non-admin user roles.
38    [Tags]  Run_Redfish_Service_Validator_With_Additional_Roles
39    [Template]  Create User And Run Service Validator
40
41    #username      password             role        enabled
42    operator_user  ${OPENBMC_PASSWORD}  Operator    ${True}
43    readonly_user  ${OPENBMC_PASSWORD}  ReadOnly    ${True}
44
45
46*** Keywords ***
47
48Create User And Run Service Validator
49    [Documentation]  Create user and run validator.
50    [Arguments]   ${username}  ${password}  ${role}  ${enabled}
51    [Teardown]  Delete User Created  ${username}
52
53    # Description of argument(s):
54    # username            The username to be created.
55    # password            The password to be assigned.
56    # role                The role of the user to be created
57    #                     (e.g. "Administrator", "Operator", etc.).
58    # enabled             Indicates whether the username being created
59    #                     should be enabled (${True}, ${False}).
60
61    Redfish.Login
62    Redfish Create User  ${username}  ${password}  ${role}  ${enabled}
63    Redfish.Logout
64
65    Download DMTF Tool  ${rsv_dir_path}  ${rsv_github_url}  ${branch_name}
66
67    ${cmd}=  Catenate  ${DEFAULT_PYTHON} ${rsv_dir_path}${/}RedfishServiceValidator.py
68    ...  --ip https://${OPENBMC_HOST}:${HTTPS_PORT} --authtype=Session -u ${username}
69    ...  -p ${password} --logdir ${EXECDIR}${/}logs_${username}${/} --debugging
70
71    Rprint Vars  cmd
72
73    ${rc}  ${output}=  Run DMTF Tool  ${rsv_dir_path}  ${cmd}  check_error=1
74
75    Redfish Service Validator Result  ${output}
76    Run Keyword If  ${rc} != 0  Fail
77
78
79Delete User Created
80    [Documentation]  Delete user.
81    [Arguments]   ${username}
82
83    # Description of argument(s):
84    # username            The username to be deleted.
85
86    Redfish.Login
87    Redfish.Delete  /redfish/v1/AccountService/Accounts/${username}
88    Redfish.Logout
89