3 Authors: Baohua Yang@IBM, Denghui Huang@IBM
7 from restlib import * # noqa
10 class TestModule(object):
12 Basic module class for test restful APIS.
13 Support the standard Create, Read, Update, Delete (CRUD) actions.
16 def __init__(self, restSubContext, user=DEFAULT_USER, password=DEFAULT_PWD, container=DEFAULT_CONTAINER,
17 contentType='json', prefix=DEFAULT_PREFIX):
18 self.restSubContext = restSubContext
19 self.container = container
21 self.password = password
22 self.contentType = contentType
25 def extract_properties(self, content, key, property):
29 if not isinstance(content, dict) or key not in content:
32 return [e.get(property) for e in content[key]]
34 def get_entries(self, suffix=None, key=None):
36 Get the existed entries in the service.
38 if isinstance(suffix, list) and key:
42 result[key].extend(self.get_entries(s).get(key))
44 elif isinstance(suffix, str):
45 return self.read(suffix)
51 def add_entry(self, suffix, name, body):
53 Add entry to the service.
55 self.update(suffix + '/' + name, body)
57 def remove_entry(self, suffix, name):
59 Remove entry from the service.
61 self.delete(suffix + '/' + name)
63 def test_add_remove_operations(self, suffix_entries, suffix_entry, name, body, key):
66 self.add_entry(suffix_entry, name, body)
67 r = self.get_entries(suffix_entries, key)
70 result.append(body in v if v else False)
71 # Remove the added entry
73 self.remove_entry(suffix_entry, name)
74 r = self.get_entries(suffix_entries, key)
76 result.append(body not in v if v else True)
77 return result == [True, True]
79 def create(self, suffix, body=None):
81 POST to given suffix url.
84 url = self.prefix + self.restSubContext
86 url += '/' + self.container
89 return do_post_request(url, self.contentType, body, self.user, self.password)
91 def read(self, suffix=None):
93 GET from given suffix url.
95 url = self.prefix + self.restSubContext
97 url += '/' + self.container
100 return do_get_request_with_response_content(url, self.contentType, self.user, self.password)
102 def update(self, suffix, body=None):
104 PUT to given suffix url.
106 url = self.prefix + self.restSubContext
108 url += '/' + self.container
111 return do_put_request(url, self.contentType, body, self.user, self.password)
113 def delete(self, suffix):
115 DELETE to given suffix url.
118 url = self.prefix + self.restSubContext
120 url += '/' + self.container
123 return do_delete_request(url, self.user, self.password)