summaryrefslogtreecommitdiff
path: root/troveclient/tests/fakes.py
diff options
context:
space:
mode:
Diffstat (limited to 'troveclient/tests/fakes.py')
-rw-r--r--troveclient/tests/fakes.py85
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": [
{