3 Authors: Baohua Yang@IBM, Denghui Huang@IBM
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
26 def extract_properties(self, content, key, property):
30 if not isinstance(content, dict) or not content.has_key(key):
33 return [e.get(property) for e in content[key]]
35 def get_entries(self, suffix=None, key=None):
37 Get the existed entries in the service.
39 if isinstance(suffix, list) and key:
43 result[key].extend(self.get_entries(s).get(key))
45 elif isinstance(suffix, str):
46 return self.read(suffix)
52 def add_entry(self, suffix, name, body):
54 Add entry to the service.
56 self.update(suffix + '/' + name, body)
58 def remove_entry(self, suffix, name):
60 Remove entry from the service.
62 self.delete(suffix + '/' + name)
64 def test_add_remove_operations(self, suffix_entries, suffix_entry, name, body, key):
67 self.add_entry(suffix_entry, name, body)
68 r = self.get_entries(suffix_entries, key)
71 result.append(body in v if v else False)
72 #Remove the added entry
74 self.remove_entry(suffix_entry, name)
75 r = self.get_entries(suffix_entries, key)
77 result.append(body not in v if v else True)
78 return result == [True, True]
80 def create(self, suffix, body=None):
82 POST to given suffix url.
85 url = self.prefix + self.restSubContext
87 url += '/' + self.container
90 return do_post_request(url, self.contentType, body, self.user, self.password)
92 def read(self, suffix=None):
94 GET from given suffix url.
96 url = self.prefix + self.restSubContext
98 url += '/' + self.container
101 return do_get_request_with_response_content(url, self.contentType, self.user, self.password)
103 def update(self, suffix, body=None):
105 PUT to given suffix url.
107 url = self.prefix + self.restSubContext
109 url += '/' + self.container
112 return do_put_request(url, self.contentType, body, self.user, self.password)
114 def delete(self, suffix):
116 DELETE to given suffix url.
119 url = self.prefix + self.restSubContext
121 url += '/' + self.container
124 return do_delete_request(url, self.user, self.password)