blob: 66fc92e4f3c1d66d6dbb10f676e9c6f7673440f1 [file] [log] [blame]
Sushil Singh45d841e2020-07-30 11:52:11 -05001*** Settings ***
2
3Documentation Test client identifier feature on BMC.
4
5Resource ../../lib/rest_client.robot
6Resource ../../lib/openbmc_ffdc.robot
7Resource ../../lib/resource.robot
8Resource ../../lib/bmc_redfish_utils.robot
9Library ../../lib/bmc_network_utils.py
10Library ../../lib/gen_robot_valid.py
11
12Suite Setup Redfish.Login
Sushil Singh889a75e2020-08-19 08:50:15 -050013Suite Teardown Run Keyword And Ignore Error Delete All Redfish Sessions
Sushil Singh45d841e2020-07-30 11:52:11 -050014Test Setup Printn
15Test Teardown FFDC On Test Case Fail
16
17
18*** Test Cases ***
19
20Create A Session With ClientID And Verify
Sushil Singh889a75e2020-08-19 08:50:15 -050021 [Documentation] Create a session with client id and verify client id is same.
22 [Tags] Create_A_Session_With_ClientID_And_Verify
23 [Template] Create And Verify Session ClientID
Sushil Singh45d841e2020-07-30 11:52:11 -050024
Sushil Singh889a75e2020-08-19 08:50:15 -050025 # client_id reboot_flag
26 12345 False
27 123456 False
28 EXTERNAL-CLIENT-01 False
29 EXTERNAL-CLIENT-02 False
Sushil Singh13843212020-08-18 04:00:51 -050030
31
32Check ClientID Persistency On BMC Reboot
Sushil Singh889a75e2020-08-19 08:50:15 -050033 [Documentation] Create a session with client id and verify client id is same after the reboot.
34 [Tags] Check_ClientID_Persistency_On_BMC_Reboot
35 [Template] Create And Verify Session ClientID
Sushil Singh13843212020-08-18 04:00:51 -050036
Sushil Singh889a75e2020-08-19 08:50:15 -050037 # client_id reboot_flag
38 12345 True
39 EXTERNAL-CLIENT-01 True
40
41
42Create A Multiple Session With ClientID And Verify
43 [Documentation] Create a multiple session with client id and verify client id is same.
44 [Tags] Create_A_Multiple_Session_With_ClientID_And_Verify
45 [Template] Create And Verify Session ClientID
46
47 # client_id reboot_flag
48 12345,123456 False
49 EXTERNAL-CLIENT-01,EXTERNAL-CLIENT-02 False
50
51
52Check Multiple ClientID Persistency On BMC Reboot
53 [Documentation] Create a multiple session with client id and verify client id is same after the reboot.
54 [Tags] Check_Multiple_ClientID_Persistency_On_BMC_Reboot
55 [Template] Create And Verify Session ClientID
56
57 # client_id reboot_flag
58 12345,123456 True
59 EXTERNAL-CLIENT-01,EXTERNAL-CLIENT-02 True
60
Sushil Singh45d841e2020-07-30 11:52:11 -050061
Sushil Singhc957f572020-08-20 05:47:02 -050062Fail To Set Client Origin IP
63 [Documentation] Fail to set the client origin IP.
64 [Tags] Fail_To_Set_Client_Origin_IP
65 [Template] Create Session And Fail To Set Client Origin IP
66
67 # client_id
68 12345
69 EXTERNAL-CLIENT-01
70
Sushil Singh4ec68ba2020-09-11 09:16:43 -050071
72Create Session For Non Admin User
73 [Documentation] Create Session for non-admin user.
74 [Tags] Create_Session_For_Non_Admin_User
75 [Template] Non Admin User To Create Session
76
77 # client_id username password role_id
78 12345 operator_user TestPwd123 Operator
79
80
Sushil Singh45d841e2020-07-30 11:52:11 -050081*** Keywords ***
82
83Create A Session With ClientID
84 [Documentation] Create redifish session with client id.
85 [Arguments] ${client_id}
86
87 # Description of argument(s):
88 # client_id This client id can contain string value
89 # (e.g. 12345, "EXTERNAL-CLIENT").
90
Sushil Singh889a75e2020-08-19 08:50:15 -050091 @{session_list}= Create List
92 &{tmp_dict}= Create Dictionary
Sushil Singh45d841e2020-07-30 11:52:11 -050093
Sushil Singh889a75e2020-08-19 08:50:15 -050094 FOR ${client} IN @{client_id}
95 ${resp}= Redfish Login kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client}"}}
96 Append To List ${session_list} ${resp}
97 END
98
99 [Return] ${session_list}
100
101
102Get Session Information By ClientID
103 [Documentation] Get session information by client id.
104 [Arguments] ${client_id} ${session_ids}
105
106 FOR ${session} IN @{session_ids}
107 Return From Keyword If '${client_id}' == '${session["Oem"]["OpenBMC"]["ClientID"]}' ${session["Id"]}
108 END
109
110 [Return] ${EMPTY}
111
Sushil Singh45d841e2020-07-30 11:52:11 -0500112
113Verify A Session Created With ClientID
114 [Documentation] Verify session created with client id.
Sushil Singh889a75e2020-08-19 08:50:15 -0500115 [Arguments] ${client_ids} ${session_ids}
Sushil Singh45d841e2020-07-30 11:52:11 -0500116
117 # Description of argument(s):
118 # client_id External client name.
119 # session_id This value is a session id.
120
Sushil Singh45d841e2020-07-30 11:52:11 -0500121 # {
122 # "@odata.id": "/redfish/v1/SessionService/Sessions/H8q2ZKucSJ",
123 # "@odata.type": "#Session.v1_0_2.Session",
124 # "Description": "Manager User Session",
125 # "Id": "H8q2ZKucSJ",
126 # "Name": "User Session",
127 # "Oem": {
128 # "OpenBMC": {
129 # "@odata.type": "#OemSession.v1_0_0.Session",
130 # "ClientID": "",
131 # "ClientOriginIP": "::ffff:x.x.x.x"
132 # }
133 # },
134 # "UserName": "root"
135 # }
136
Sushil Singh889a75e2020-08-19 08:50:15 -0500137 FOR ${client} IN @{client_ids}
138 ${session_id}= Get Session Information By ClientID ${client} ${session_ids}
139 ${sessions}= Redfish.Get Properties /redfish/v1/SessionService/Sessions/${session_id}
140 Rprint Vars sessions
141 @{words} = Split String ${sessions["Oem"]["OpenBMC"]["ClientOriginIP"]} :
Sushil Singh07297f82020-09-08 09:12:04 -0500142 ${ip_address}= Get Running System IP
Sushil Singh889a75e2020-08-19 08:50:15 -0500143 Set Test Variable ${temp_ipaddr} ${words}[-1]
144 Valid Value client ['${sessions["Oem"]["OpenBMC"]["ClientID"]}']
145 Valid Value sessions["Id"] ['${session_id}']
Sushil Singh07297f82020-09-08 09:12:04 -0500146 Valid Value temp_ipaddr ${ip_address}
Sushil Singh889a75e2020-08-19 08:50:15 -0500147 END
Sushil Singh13843212020-08-18 04:00:51 -0500148
149
150Create And Verify Session ClientID
151 [Documentation] Create redifish session with client id and verify it remain same.
152 [Arguments] ${client_id} ${reboot_flag}=False
153
154 # Description of argument(s):
155 # client_id This client id contain string value
156 # (e.g. 12345, "EXTERNAL-CLIENT").
157 # reboot_flag Flag is used to run reboot the BMC code.
158 # (e.g. True or False).
159
Sushil Singh889a75e2020-08-19 08:50:15 -0500160 ${client_ids}= Split String ${client_id} ,
161 ${session_info}= Create A Session With ClientID ${client_ids}
162 Verify A Session Created With ClientID ${client_ids} ${session_info}
Sushil Singh13843212020-08-18 04:00:51 -0500163 Run Keyword If '${reboot_flag}' == 'True'
Sushil Singh889a75e2020-08-19 08:50:15 -0500164 ... Run Keywords Redfish OBMC Reboot (off) AND
165 ... Verify A Session Created With ClientID ${client_ids} ${session_info}
Sushil Singhc957f572020-08-20 05:47:02 -0500166
167
168Set Client Origin IP
169 [Documentation] Set client origin IP.
170 [Arguments] ${client_id} ${client_ip} ${status}
171
172 # Description of argument(s):
173 # client_id This client id contain string value
174 # (e.g. 12345, "EXTERNAL-CLIENT").
175 # client_ip Valid IP address
176 # status HTTP status code
177
178 ${session}= Run Keyword And Return Status
179 ... Redfish Login
180 ... kwargs= "Oem":{"OpenBMC": {"ClientID":"${client_id}", "ClientOriginIP":"${client_ip}"}}
181 Valid Value session [${status}]
182
183
184Create Session And Fail To Set Client Origin IP
185 [Documentation] Create redifish session with client id and fail to set client origin IP.
186 [Arguments] ${client_id}
187
188 # Description of argument(s):
189 # client_id This client id contain string value
190 # (e.g. 12345, "EXTERNAL-CLIENT").
191
192 Set Test Variable ${client_ip} 10.6.7.8
193 ${resp}= Set Client Origin IP ${client_id} ${client_ip} status=False
Sushil Singh4ec68ba2020-09-11 09:16:43 -0500194
195
196Create A Non Admin Session With ClientID
197 [Documentation] Create redifish session with client id.
198 [Arguments] ${client_id} ${username} ${password}
199
200 # Description of argument(s):
201 # client_id This client id can contain string value
202 # (e.g. 12345, "EXTERNAL-CLIENT").
203
204 @{session_list}= Create List
205 &{tmp_dict}= Create Dictionary
206
207 FOR ${client} IN @{client_id}
208 ${resp}= Redfish Login rest_username=${username} rest_password=${password} kwargs= "Oem":{"OpenBMC" : {"ClientID":"${client}"}}
209 Append To List ${session_list} ${resp}
210 END
211
212 [Return] ${session_list}
213
214
215Verify A Non Admin Session Created With ClientID
216 [Documentation] Verify session created with client id.
217 [Arguments] ${client_ids} ${session_ids}
218
219 # Description of argument(s):
220 # client_id External client name.
221 # session_id This value is a session id.
222
223 # {
224 # "@odata.id": "/redfish/v1/SessionService/Sessions/H8q2ZKucSJ",
225 # "@odata.type": "#Session.v1_0_2.Session",
226 # "Description": "Manager User Session",
227 # "Id": "H8q2ZKucSJ",
228 # "Name": "User Session",
229 # "Oem": {
230 # "OpenBMC": {
231 # "@odata.type": "#OemSession.v1_0_0.Session",
232 # "ClientID": "",
233 # "ClientOriginIP": "::ffff:x.x.x.x"
234 # }
235 # },
236 # "UserName": "root"
237 # }
238
239 FOR ${client} IN @{client_ids}
240 ${session_id}= Get Session Information By ClientID ${client} ${session_ids}
241 ${resp}= Redfish Get Request /redfish/v1/SessionService/Sessions/${session_id}
242 ${sessions}= To Json ${resp.content}
243 #Set Test Variable ${sessions} ${content["data"]}
244 Rprint Vars sessions
245 Log ${sessions}
246 @{words} = Split String ${sessions["Oem"]["OpenBMC"]["ClientOriginIP"]} :
247 ${ip_address}= Get Running System IP
248 Set Test Variable ${temp_ipaddr} ${words}[-1]
249 Valid Value client ['${sessions["Oem"]["OpenBMC"]["ClientID"]}']
250 Valid Value sessions["Id"] ['${session_id}']
251 Valid Value temp_ipaddr ${ip_address}
252 END
253
254
255Non Admin User To Create Session
256 [Documentation] Non Admin user create a session and verify the session is created.
257 [Arguments] ${client_id} ${username} ${password} ${role} ${enabled}=${True}
258
259 # Description of argument(s):
260 # client_id This client id contain string value
261 # (e.g. 12345, "EXTERNAL-CLIENT").
262 # username Username.
263 # password Password.
264 # role Role of user.
265 # enabled Value can be True or False.
266
267 Redfish.Login
268 Redfish Create User ${username} ${password} ${role} ${enabled}
269 Delete All Sessions
270 Redfish.Logout
271 Initialize OpenBMC rest_username=${username} rest_password=${password}
272 ${client_ids}= Split String ${client_id} ,
273 ${session_info}= Create A Non Admin Session With ClientID ${client_ids} ${username} ${password}
274 Verify A Non Admin Session Created With ClientID ${client_ids} ${session_info}