diff options
Diffstat (limited to 'troveclient/tests/fakes.py')
| -rw-r--r-- | troveclient/tests/fakes.py | 85 |
1 files changed, 81 insertions, 4 deletions
diff --git a/troveclient/tests/fakes.py b/troveclient/tests/fakes.py index 820a433..6ef23ff 100644 --- a/troveclient/tests/fakes.py +++ b/troveclient/tests/fakes.py @@ -35,16 +35,32 @@ def assert_has_keys(dict, required=[], optional=[]): class FakeClient(client.Client): + URL_QUERY_SEPARATOR = '&' + URL_SEPARATOR = '?' + def __init__(self, *args, **kwargs): client.Client.__init__(self, 'username', 'password', 'project_id', 'auth_url', extensions=kwargs.get('extensions')) self.client = FakeHTTPClient(**kwargs) + def _order_url_query_str(self, url): + """Returns the url with the query strings ordered, if they exist and + there's more than one. Otherwise the url is returned unaltered. + """ + if self.URL_QUERY_SEPARATOR in url: + parts = url.split(self.URL_SEPARATOR) + if len(parts) == 2: + queries = sorted(parts[1].split(self.URL_QUERY_SEPARATOR)) + url = self.URL_SEPARATOR.join( + [parts[0], self.URL_QUERY_SEPARATOR.join(queries)]) + return url + def assert_called(self, method, url, body=None, pos=-1): """Assert than an API method was just called.""" - expected = (method, url) - called = self.client.callstack[pos][0:2] + expected = (method, utils.order_url(url)) + called = (self.client.callstack[pos][0], + utils.order_url(self.client.callstack[pos][1])) assert self.client.callstack, \ "Expected %s %s but no calls were made." % expected @@ -59,14 +75,14 @@ class FakeClient(client.Client): def assert_called_anytime(self, method, url, body=None): """Assert than an API method was called anytime in the test.""" - expected = (method, url) + expected = (method, utils.order_url(url)) assert self.client.callstack, \ "Expected %s %s but no calls were made." % expected found = False for entry in self.client.callstack: - if expected == entry[0:2]: + if expected == (entry[0], utils.order_url(entry[1])): found = True break @@ -389,6 +405,67 @@ class FakeHTTPClient(base_client.HTTPClient): def get_instances_1234_metadata_key123(self, **kw): return (200, {}, {"metadata": {}}) + def get_modules(self, **kw): + return (200, {}, {"modules": [ + { + "id": "4321", + "name": "mod1", + "type": "ping", + "datastore": 'all', + "datastore_version": 'all', + "tenant": 'all', + "auto_apply": 0, + "visible": 1}, + { + "id": "8765", + "name": "mod2", + "type": "ping", + "datastore": 'all', + "datastore_version": 'all', + "tenant": 'all', + "auto_apply": 0, + "visible": 1}]}) + + def get_modules_4321(self, **kw): + r = {'module': self.get_modules()[2]['modules'][0]} + return (200, {}, r) + + def get_modules_8765(self, **kw): + r = {'module': self.get_modules()[2]['modules'][1]} + return (200, {}, r) + + def post_modules(self, **kw): + r = {'module': self.get_modules()[2]['modules'][0]} + return (200, {}, r) + + def put_modules_4321(self, **kw): + return (200, {}, {"module": {'name': 'mod3'}}) + + def delete_modules_4321(self, **kw): + return (200, {}, None) + + def get_instances_1234_modules(self, **kw): + return (200, {}, {"modules": [{"module": {}}]}) + + def get_modules_4321_instances(self, **kw): + return self.get_instances() + + def get_instances_modules(self, **kw): + return (200, {}, None) + + def get_instances_member_1_modules(self, **kw): + return self.get_modules() + + def get_instances_member_2_modules(self, **kw): + return self.get_modules() + + def post_instances_1234_modules(self, **kw): + r = {'modules': [self.get_modules()[2]['modules'][0]]} + return (200, {}, r) + + def delete_instances_1234_modules_4321(self, **kw): + return (200, {}, None) + def get_limits(self, **kw): return (200, {}, {"limits": [ { |
