blob: 92d63f9af4bb5e726bb595711db0ae8e83b331aa [file] [log] [blame]
Chris Austenb29d2e82016-06-07 12:25:35 -05001*** Settings ***
2Documentation This suite will verifiy all OpenBMC rest interfaces
3... Details of valid interfaces can be found here...
4... https://github.com/openbmc/docs/blob/master/rest-api.md
5
6Resource ../lib/rest_client.robot
7
8
9*** Variables ***
10
11
12*** Test Cases ***
13Good connection for testing
Chris Austen859be602016-07-07 16:46:31 -050014 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -050015 ${content}= Read Properties /
16 ${c}= get from List ${content} 0
17 Should Be Equal ${c} /org
18
19Get an object with no properties
20 ${content}= Read Properties /org/openbmc/inventory
21 Should Be Empty ${content}
22
23Get a Property
24 ${resp}= Read Attribute /org/openbmc/inventory/system/chassis/motherboard/cpu0 is_fru
25 Should Be Equal ${resp} ${1}
26
27Get a null Property
28 ${resp} = OpenBMC Get Request /org/openbmc/inventory/attr/is_fru
29 Should Be Equal As Strings ${resp.status_code} ${HTTP_NOT_FOUND}
30 ${jsondata}= To Json ${resp.content}
31 Should Be Equal ${jsondata['data']['description']} The specified property cannot be found: ''is_fru''
32
33get directory listing /
Chris Austen859be602016-07-07 16:46:31 -050034 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -050035 ${resp} = openbmc get request /
36 should be equal as strings ${resp.status_code} ${HTTP_OK}
37 ${json} = to json ${resp.content}
38 list should contain value ${json['data']} /org
39 should be equal as strings ${json['status']} ok
40
41get directory listing /org/
Chris Austen859be602016-07-07 16:46:31 -050042 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -050043 ${resp} = openbmc get request /org/
44 should be equal as strings ${resp.status_code} ${HTTP_OK}
45 ${json} = to json ${resp.content}
46 list should contain value ${json['data']} /org/openbmc
47 should be equal as strings ${json['status']} ok
48
49get invalid directory listing /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -050050 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -050051 ${resp} = openbmc get request /i/dont/exist/
52 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
53 ${json} = to json ${resp.content}
54 should be equal as strings ${json['status']} error
55
56put directory listing /
Chris Austen859be602016-07-07 16:46:31 -050057 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -050058 ${resp} = openbmc put request /
59 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
60 ${json} = to json ${resp.content}
61 should be equal as strings ${json['status']} error
62
63put directory listing /org/
Chris Austen859be602016-07-07 16:46:31 -050064 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -050065 ${resp} = openbmc put request /org/
66 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
67 ${json} = to json ${resp.content}
68 should be equal as strings ${json['status']} error
69
70put invalid directory listing /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -050071 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -050072 ${resp} = openbmc put request /i/dont/exist/
73 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
74 ${json} = to json ${resp.content}
75 should be equal as strings ${json['status']} error
76
77post directory listing /
Chris Austen859be602016-07-07 16:46:31 -050078 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -050079 ${resp} = openbmc post request /
80 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
81 ${json} = to json ${resp.content}
82 should be equal as strings ${json['status']} error
83
84post directory listing /org/
Chris Austen859be602016-07-07 16:46:31 -050085 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -050086 ${resp} = openbmc post request /org/
87 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
88 ${json} = to json ${resp.content}
89 should be equal as strings ${json['status']} error
90
91post invalid directory listing /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -050092 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -050093 ${resp} = openbmc post request /i/dont/exist/
94 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
95 ${json} = to json ${resp.content}
96 should be equal as strings ${json['status']} error
97
98delete directory listing /
Chris Austen859be602016-07-07 16:46:31 -050099 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500100 ${resp} = openbmc delete request /
101 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
102 ${json} = to json ${resp.content}
103 should be equal as strings ${json['status']} error
104
105delete directory listing /org/
Chris Austen859be602016-07-07 16:46:31 -0500106 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500107 ${resp} = openbmc delete request /
108 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
109 ${json} = to json ${resp.content}
110 should be equal as strings ${json['status']} error
111
112delete invalid directory listing /org/nothere/
Chris Austen859be602016-07-07 16:46:31 -0500113 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500114 ${resp} = openbmc delete request /org/nothere/
115 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
116 ${json} = to json ${resp.content}
117 should be equal as strings ${json['status']} error
118
119get list names /
120 ${resp} = openbmc get request /list
121 should be equal as strings ${resp.status_code} ${HTTP_OK}
122 ${json} = to json ${resp.content}
123 list should contain value ${json['data']} /org/openbmc/inventory
124 should be equal as strings ${json['status']} ok
125
126get list names /org/
127 ${resp} = openbmc get request /org/list
128 should be equal as strings ${resp.status_code} ${HTTP_OK}
129 ${json} = to json ${resp.content}
130 list should contain value ${json['data']} /org/openbmc/inventory
131 should be equal as strings ${json['status']} ok
132
133get invalid list names /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -0500134 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500135 ${resp} = openbmc get request /i/dont/exist/list
136 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
137 ${json} = to json ${resp.content}
138 should be equal as strings ${json['status']} error
139
140put list names /
Chris Austen859be602016-07-07 16:46:31 -0500141 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500142 ${resp} = openbmc put request /list
143 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
144 ${json} = to json ${resp.content}
145 should be equal as strings ${json['status']} error
146
147put list names /org/
Chris Austen859be602016-07-07 16:46:31 -0500148 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500149 ${resp} = openbmc put request /org/list
150 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
151 ${json} = to json ${resp.content}
152 should be equal as strings ${json['status']} error
153
154put invalid list names /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -0500155 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500156 ${resp} = openbmc put request /i/dont/exist/list
157 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
158 ${json} = to json ${resp.content}
159 should be equal as strings ${json['status']} error
160
161post list names /
Chris Austen859be602016-07-07 16:46:31 -0500162 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500163 ${resp} = openbmc post request /list
164 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
165 ${json} = to json ${resp.content}
166 should be equal as strings ${json['status']} error
167
168post list names /org/
Chris Austen859be602016-07-07 16:46:31 -0500169 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500170 ${resp} = openbmc post request /org/list
171 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
172 ${json} = to json ${resp.content}
173 should be equal as strings ${json['status']} error
174
175post invalid list names /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -0500176 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500177 ${resp} = openbmc post request /i/dont/exist/list
178 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
179 ${json} = to json ${resp.content}
180 should be equal as strings ${json['status']} error
181
182delete list names /
Chris Austen859be602016-07-07 16:46:31 -0500183 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500184 ${resp} = openbmc delete request /list
185 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
186 ${json} = to json ${resp.content}
187 should be equal as strings ${json['status']} error
188
189delete list names /org/
Chris Austen859be602016-07-07 16:46:31 -0500190 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500191 ${resp} = openbmc delete request /list
192 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
193 ${json} = to json ${resp.content}
194 should be equal as strings ${json['status']} error
195
196delete invalid list names /org/nothere/
Chris Austen859be602016-07-07 16:46:31 -0500197 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500198 ${resp} = openbmc delete request /org/nothere/list
199 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
200 ${json} = to json ${resp.content}
201 should be equal as strings ${json['status']} error
202
203get names /
204 ${resp} = openbmc get request /enumerate
205 should be equal as strings ${resp.status_code} ${HTTP_OK}
206 ${json} = to json ${resp.content}
207 list should contain value ${json['data']} /org/openbmc/inventory
208 should be equal as strings ${json['status']} ok
209
210get names /org/
211 ${resp} = openbmc get request /org/enumerate
212 should be equal as strings ${resp.status_code} ${HTTP_OK}
213 ${json} = to json ${resp.content}
214 list should contain value ${json['data']} /org/openbmc/inventory
215 should be equal as strings ${json['status']} ok
216
217get invalid names /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -0500218 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500219 ${resp} = openbmc get request /i/dont/exist/enumerate
220 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
221 ${json} = to json ${resp.content}
222 should be equal as strings ${json['status']} error
223
224put names /
Chris Austen859be602016-07-07 16:46:31 -0500225 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500226 ${resp} = openbmc put request /enumerate
227 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
228 ${json} = to json ${resp.content}
229 should be equal as strings ${json['status']} error
230
231put names /org/
Chris Austen859be602016-07-07 16:46:31 -0500232 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500233 ${resp} = openbmc put request /org/enumerate
234 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
235 ${json} = to json ${resp.content}
236 should be equal as strings ${json['status']} error
237
238put invalid names /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -0500239 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500240 ${resp} = openbmc put request /i/dont/exist/enumerate
241 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
242 ${json} = to json ${resp.content}
243 should be equal as strings ${json['status']} error
244
245post names /
Chris Austen859be602016-07-07 16:46:31 -0500246 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500247 ${resp} = openbmc post request /enumerate
248 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
249 ${json} = to json ${resp.content}
250 should be equal as strings ${json['status']} error
251
252post names /org/
Chris Austen859be602016-07-07 16:46:31 -0500253 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500254 ${resp} = openbmc post request /org/enumerate
255 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
256 ${json} = to json ${resp.content}
257 should be equal as strings ${json['status']} error
258
259post invalid names /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -0500260 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500261 ${resp} = openbmc post request /i/dont/exist/enumerate
262 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
263 ${json} = to json ${resp.content}
264 should be equal as strings ${json['status']} error
265
266delete names /
Chris Austen859be602016-07-07 16:46:31 -0500267 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500268 ${resp} = openbmc delete request /enumerate
269 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
270 ${json} = to json ${resp.content}
271 should be equal as strings ${json['status']} error
272
273delete names /org/
Chris Austen859be602016-07-07 16:46:31 -0500274 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500275 ${resp} = openbmc delete request /enumerate
276 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
277 ${json} = to json ${resp.content}
278 should be equal as strings ${json['status']} error
279
280delete invalid names /org/nothere/
Chris Austen859be602016-07-07 16:46:31 -0500281 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500282 ${resp} = openbmc delete request /org/nothere/enumerate
283 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
284 ${json} = to json ${resp.content}
285 should be equal as strings ${json['status']} error
286
287get method org/openbmc/records/events/action/acceptTestMessage
Chris Austen859be602016-07-07 16:46:31 -0500288 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500289 ${resp} = openbmc get request org/openbmc/records/events/action/acceptTestMessage
290 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
291 ${json} = to json ${resp.content}
292 should be equal as strings ${json['status']} error
293
294get invalid method /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -0500295 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500296 ${resp} = openbmc get request /i/dont/exist/action/foo
297 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
298 ${json} = to json ${resp.content}
299 should be equal as strings ${json['status']} error
300
301put method org/openbmc/records/events/action/acceptTestMessage
Chris Austen859be602016-07-07 16:46:31 -0500302 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500303 ${resp} = openbmc put request org/openbmc/records/events/action/acceptTestMessage
304 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
305 ${json} = to json ${resp.content}
306 should be equal as strings ${json['status']} error
307
308put invalid method /i/dont/exist/
Chris Austen859be602016-07-07 16:46:31 -0500309 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500310 ${resp} = openbmc put request /i/dont/exist/action/foo
311 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
312 ${json} = to json ${resp.content}
313 should be equal as strings ${json['status']} error
314
315post method power/getPowerState no args
316 ${fan_uri}= Get Power Control Interface
317 ${data} = create dictionary data=@{EMPTY}
318 ${resp} = openbmc post request ${fan_uri}/action/getPowerState data=${data}
319 should be equal as strings ${resp.status_code} ${HTTP_OK}
320 ${json} = to json ${resp.content}
321 should be equal as strings ${json['status']} ok
322
323post method org/openbmc/records/events/action/acceptTestMessage invalid args
Chris Austen859be602016-07-07 16:46:31 -0500324 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500325 ${data} = create dictionary foo=bar
326 ${resp} = openbmc post request org/openbmc/records/events/action/acceptTestMessage data=${data}
327 should be equal as strings ${resp.status_code} ${HTTP_BAD_REQUEST}
328 ${json} = to json ${resp.content}
329 should be equal as strings ${json['status']} error
330
331post method org/openbmc/sensors/host/BootCount with args
332 ${uri} = Set Variable /org/openbmc/sensors/host/BootCount
333 ${COUNT}= Set Variable ${3}
334 @{count_list} = Create List ${COUNT}
335 ${data} = create dictionary data=@{count_list}
336 ${resp} = openbmc post request ${uri}/action/setValue data=${data}
337 should be equal as strings ${resp.status_code} ${HTTP_OK}
338 ${json} = to json ${resp.content}
339 should be equal as strings ${json['status']} ok
340 ${content}= Read Attribute ${uri} value
341 Should Be Equal ${content} ${COUNT}
342
343delete method org/openbmc/records/events/action/acceptTestMessage
Chris Austen859be602016-07-07 16:46:31 -0500344 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500345 ${resp} = openbmc delete request org/openbmc/records/events/action/acceptTestMessage
346 should be equal as strings ${resp.status_code} ${HTTP_METHOD_NOT_ALLOWED}
347 ${json} = to json ${resp.content}
348 should be equal as strings ${json['status']} error
349
350delete invalid method /org/nothere/
Chris Austen859be602016-07-07 16:46:31 -0500351 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500352 ${resp} = openbmc delete request /org/nothere/action/foomethod
353 should be equal as strings ${resp.status_code} ${HTTP_NOT_FOUND}
354 ${json} = to json ${resp.content}
355 should be equal as strings ${json['status']} error
356
357post method org/openbmc/records/events/action/acceptTestMessage no args
Chris Austen859be602016-07-07 16:46:31 -0500358 [Tags] CI
Chris Austenb29d2e82016-06-07 12:25:35 -0500359 ${data} = create dictionary data=@{EMPTY}
360 ${resp} = openbmc post request org/openbmc/records/events/action/acceptTestMessage data=${data}
361 should be equal as strings ${resp.status_code} ${HTTP_OK}
362 ${json} = to json ${resp.content}
363 should be equal as strings ${json['status']} ok
364
365***keywords***
366Get Power Control Interface
367 ${resp}= OpenBMC Get Request /org/openbmc/control/
368 should be equal as strings ${resp.status_code} ${HTTP_OK} msg=Unable to get any controls - /org/openbmc/control/
369 ${jsondata}= To Json ${resp.content}
370 log ${jsondata}
371 : FOR ${ELEMENT} IN @{jsondata["data"]}
372 \ log ${ELEMENT}
373 \ ${found}= Get Lines Matching Pattern ${ELEMENT} *control/power*
374 \ Return From Keyword If '${found}' != '' ${found}