xref: /openbmc/openbmc-test-automation/redfish/service_root/test_service_root.robot (revision 2104d5f9bca1ab3b460f5255f6093d7b25a13c1a)
1 *** Settings ***
2 Documentation    Test Redfish to verify responses for SessionService and Hypermedia.
3 
4 Resource         ../../lib/resource.robot
5 Resource         ../../lib/bmc_redfish_resource.robot
6 Resource         ../../lib/openbmc_ffdc.robot
7 
8 
9 Test Teardown    FFDC On Test Case Fail
10 Test Setup       Printn
11 
12 *** Test Cases ***
13 
14 Redfish Login And Logout
15     [Documentation]  Login to BMCweb and then logout.
16     [Tags]  Redfish_Login_And_Logout
17 
18     Redfish.Login
19     Redfish.Logout
20 
21 
22 GET Redfish Hypermedia Without Login
23     [Documentation]  GET hypermedia URL without login.
24     [Tags]  GET_Redfish_Hypermedia_Without_Login
25     [Setup]  Redfish.Logout
26     [Template]  GET And Verify Redfish Response
27 
28     # Expect status      Resource URL Path
29     ${HTTP_OK}           /redfish
30     ${HTTP_OK}           /redfish/v1
31 
32 
33 GET Redfish SessionService Without Login
34     [Documentation]  Get /redfish/v1/SessionService without login
35     [Tags]  GET_Redfish_SessionService_Without_Login
36     [Setup]  Redfish.Logout
37 
38     ${resp}=  Redfish.Get  /redfish/v1/SessionService
39     ...  valid_status_codes=[${HTTP_UNAUTHORIZED}]
40 
41 
42 GET Redfish Resources With Login
43     [Documentation]  Login to BMCweb and GET valid resource.
44     [Tags]  GET_Redfish_Resources_With_Login
45     [Setup]  Redfish.Login
46     [Template]  GET And Verify Redfish Response
47 
48     # Expect status      Resource URL Path
49     ${HTTP_OK}           /redfish/v1/SessionService
50     ${HTTP_OK}           /redfish/v1/AccountService
51     ${HTTP_OK}           /redfish/v1/Systems/system
52     ${HTTP_OK}           /redfish/v1/Chassis/${CHASSIS_ID}
53     ${HTTP_OK}           /redfish/v1/Managers/bmc
54     ${HTTP_OK}           /redfish/v1/UpdateService
55 
56 
57 Redfish Login Using Invalid Token
58     [Documentation]  Login to BMCweb with invalid token.
59     [Tags]  Redfish_Login_Using_Invalid_Token
60 
61     Create Session  openbmc  ${AUTH_URI}
62 
63     # Example: "X-Auth-Token: 3la1JUf1vY4yN2dNOwun"
64     ${headers}=  Create Dictionary  Content-Type=application/json
65     ...  X-Auth-Token=deadbeef
66 
67     ${resp}=  Get Request
68     ...  openbmc  /redfish/v1/SessionService/Sessions  headers=${headers}
69 
70     Should Be Equal As Strings  ${resp.status_code}  ${HTTP_UNAUTHORIZED}
71 
72 
73 Verify Redfish Invalid URL Response Code
74     [Documentation]  Login to BMCweb and verify error response code.
75     [Tags]  Verify_Redfish_Invalid_URL_Response_Code
76 
77     Redfish.Login
78     Redfish.Get  /redfish/v1/idontexist  valid_status_codes=[${HTTP_NOT_FOUND}]
79     Redfish.Logout
80 
81 
82 Delete Redfish Session Using Valid Login
83     [Documentation]  Delete a session using valid login.
84     [Tags]  Delete_Redfish_Session_Using_Valid_Login
85 
86     Redfish.Login
87     ${session_info}=  Get Redfish Session Info
88 
89     Redfish.Login
90 
91     # Example o/p:
92     # [{'@odata.id': '/redfish/v1/SessionService/Sessions/bOol3WlCI8'},
93     #  {'@odata.id': '/redfish/v1/SessionService/Sessions/Yu3xFqjZr1'}]
94     ${resp_list}=  Redfish_Utils.List Request
95     ...  /redfish/v1/SessionService/Sessions
96 
97     Redfish.Delete  ${session_info["location"]}
98 
99     ${resp}=  Redfish_Utils.List Request  /redfish/v1/SessionService/Sessions
100     List Should Not Contain Value  ${resp}  ${session_info["location"]}
101 
102 
103 Redfish Login Via SessionService
104     [Documentation]  Login to BMC via redfish session service.
105     [Tags]   Redfish_Login_Via_SessionService
106 
107     Create Session  openbmc  https://${OPENBMC_HOST}
108     ${headers}=  Create Dictionary  Content-Type=application/json
109     ${data}=  Create Dictionary  UserName=${OPENBMC_USERNAME}  Password=${OPENBMC_PASSWORD}
110 
111     ${resp}=  Post Request  openbmc  /redfish/v1/SessionService/Sessions  data=${data}  headers=${headers}
112     Should Be Equal As Strings  ${resp.status_code}  ${HTTP_CREATED}
113 
114     ${content}=  To JSON  ${resp.content}
115     ${headers}=  Create Dictionary   Content-Type=application/json
116     ...  X-Auth-Token=${resp.headers["X-Auth-Token"]}
117     ${resp}=  Delete Request  openbmc  ${REDFISH_SESSION}${/}${content["Id"]}  headers=${headers}
118     Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
119 
120 
121 Verify Redfish Unresponsive URL paths
122     [Documentation]  Verify that all URLs in /redfish/v1 respond.
123     [Tags]   Verify_Redfish_Unresponsive_URL_paths
124 
125     Redfish.Login
126     ${resource_list}  ${dead_resources}=  Enumerate Request  /redfish/v1  include_dead_resources=True
127     Redfish.Logout
128     Valid Length  dead_resources  max_length=0
129 
130 
131 *** Keywords ***
132 
133 GET And Verify Redfish Response
134     [Documentation]  GET given resource and verfiy response.
135     [Arguments]  ${valid_status_codes}  ${resource_path}
136 
137     # Description of argument(s):
138     # valid_status_codes            A comma-separated list of acceptable
139     #                               status codes (e.g. 200).
140     # resource_path                 Redfish resource URL path.
141 
142     ${resp}=  Redfish.Get  ${resource_path}
143     ...  valid_status_codes=[${valid_status_codes}]
144