forked from ManageIQ/integration_tests
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrest.py
48 lines (39 loc) · 1.6 KB
/
rest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# -*- coding: utf-8 -*-
"""Helper functions for tests using REST API."""
def assert_response(appliance, success=None, http_status=None, results_num=None):
"""Asserts that the response HTTP status code and content is as expected."""
last_response = appliance.rest_api.response
if http_status:
assert last_response.status_code == http_status
else:
assert last_response
try:
content = last_response.json()
except Exception:
if last_response.status_code == 204:
# 204 == No Content: check that message-body is empty and return
assert not last_response.text.strip()
return
else:
raise AssertionError("No content returned")
def _check_result(result):
if success is not None:
assert 'success' in result
assert result['success'] is success
elif 'success' in result and last_response:
# expect True if 'success' is present and HTTP status is success
assert result['success']
if 'results' in content:
results = content['results']
if results_num is not None:
assert len(results) == results_num
for result in results:
_check_result(result)
else:
_check_result(content)
def get_vms_in_service(rest_api, service):
"""Gets list of vm entities associated with the service."""
service.vms.reload()
# return entities under /api/vms, not under /api/services/:id/vms subcollection
# where "actions" are not available
return [rest_api.get_entity('vms', vm['id']) for vm in service.vms.all]