diff options
-rw-r--r-- | keystoneclient/base.py | 36 | ||||
-rw-r--r-- | keystoneclient/tests/unit/test_base.py | 26 | ||||
-rw-r--r-- | keystoneclient/tests/unit/v3/utils.py | 41 |
3 files changed, 8 insertions, 95 deletions
diff --git a/keystoneclient/base.py b/keystoneclient/base.py index d4fdc9e..3273ecb 100644 --- a/keystoneclient/base.py +++ b/keystoneclient/base.py @@ -76,36 +76,6 @@ def filter_kwargs(f): return func -class TruncatedList(list): - """List with attribute `truncated`. - - The main purpose of this class is to handle flag `truncated` returned - by Identity Service. It subclasses standard Python list and overrides - only equality operators. - - :param bool truncated: whether the list is truncated or not. - """ - def __init__(self, collection, truncated=False): - super(TruncatedList, self).__init__(collection) - self.truncated = truncated - - def __eq__(self, other): - """Compare this list with another one. - - Two TruncatedLists are equal if the lists they carry are equal - and their attributes `truncated` are equal. - - If another value has not attribute `truncated`, it is assumed to - be False. - """ - values_eq = super(TruncatedList, self).__eq__(other) - truncated_eq = self.truncated == getattr(other, 'truncated', False) - return values_eq and truncated_eq - - def __ne__(self, other): - return not self.__eq__(other) - - class Manager(object): """Basic manager type providing common operations. @@ -147,8 +117,6 @@ class Manager(object): :param body: data that will be encoded as JSON and passed in POST request (GET will be sent by default) :param kwargs: Additional arguments will be passed to the request. - :returns: list of objects with indication of truncation - :rtype: :py:class:`keystoneclient.base.TruncatedList` """ if body: resp, body = self.client.post(url, body=body, **kwargs) @@ -159,7 +127,6 @@ class Manager(object): obj_class = self.resource_class data = body[response_key] - truncated = body.get('truncated', False) # NOTE(ja): keystone returns values as list as {'values': [ ... ]} # unlike other services which just return the list... try: @@ -167,8 +134,7 @@ class Manager(object): except (KeyError, TypeError): pass - objects = [obj_class(self, res, loaded=True) for res in data if res] - return TruncatedList(objects, truncated=truncated) + return [obj_class(self, res, loaded=True) for res in data if res] def _get(self, url, response_key, **kwargs): """Get an object from collection. diff --git a/keystoneclient/tests/unit/test_base.py b/keystoneclient/tests/unit/test_base.py index 7e1174e..38644c0 100644 --- a/keystoneclient/tests/unit/test_base.py +++ b/keystoneclient/tests/unit/test_base.py @@ -180,29 +180,3 @@ class ManagerTest(utils.TestCase): management=True) put_mock.assert_called_once_with(self.url, management=True, body=None) self.assertEqual(rsrc.hi, 1) - - -class TruncatedListTest(utils.TestCase): - """Test that TruncatedList will not break existing checks - - A lot of code assumes that the value returned from list() is a python - list, not an iterable object. Because of that, they perform various - list-specific checks. This code should not be broken. - """ - - def test_eq(self): - # flag `truncated` doesn't affect the check if it's False - self.assertEqual([], base.TruncatedList([], truncated=False)) - self.assertEqual([1, 2, 3], base.TruncatedList([1, 2, 3], - truncated=False)) - - # flag `truncated` affects the check if it's True - self.assertNotEqual([], base.TruncatedList([], truncated=True)) - self.assertNotEqual([1, 2, 3], base.TruncatedList([1, 2, 3], - truncated=True)) - - # flag `truncated` affects the equality check - self.assertNotEqual(base.TruncatedList([], truncated=True), - base.TruncatedList([], truncated=False)) - self.assertNotEqual(base.TruncatedList([1, 2, 3], truncated=True), - base.TruncatedList([1, 2, 3], truncated=False)) diff --git a/keystoneclient/tests/unit/v3/utils.py b/keystoneclient/tests/unit/v3/utils.py index 95a1dd6..bd1b970 100644 --- a/keystoneclient/tests/unit/v3/utils.py +++ b/keystoneclient/tests/unit/v3/utils.py @@ -192,16 +192,11 @@ class CrudTests(object): kwargs.setdefault(uuid.uuid4().hex, uuid.uuid4().hex) return kwargs - def encode(self, entity, truncated=None): - encoded = {} - if truncated is not None: - encoded['truncated'] = truncated + def encode(self, entity): if isinstance(entity, dict): - encoded[self.key] = entity - return encoded + return {self.key: entity} if isinstance(entity, list): - encoded[self.collection_key] = entity - return encoded + return {self.collection_key: entity} raise NotImplementedError('Are you sure you want to encode that?') def stub_entity(self, method, parts=None, entity=None, id=None, **kwargs): @@ -292,22 +287,14 @@ class CrudTests(object): self.assertRaises(TypeError, self.manager.list, **filter_kwargs) - def _test_list(self, ref_list=None, expected_path=None, - expected_query=None, truncated=None, **filter_kwargs): + def test_list(self, ref_list=None, expected_path=None, + expected_query=None, **filter_kwargs): ref_list = ref_list or [self.new_ref(), self.new_ref()] expected_path = self._get_expected_path(expected_path) - # We want to catch all cases: when `truncated` is not returned by the - # server, when it's False and when it's True. - # Attribute `truncated` of the returned list-like object should exist - # in all these cases. It should be False if the server returned a list - # without the flag. - expected_truncated = False - if truncated: - expected_truncated = truncated - self.requests_mock.get(urlparse.urljoin(self.TEST_URL, expected_path), - json=self.encode(ref_list, truncated=truncated)) + json=self.encode(ref_list)) + returned_list = self.manager.list(**filter_kwargs) self.assertEqual(len(ref_list), len(returned_list)) [self.assertIsInstance(r, self.model) for r in returned_list] @@ -326,20 +313,6 @@ class CrudTests(object): for key in qs_args: self.assertIn(key, qs_args_expected) - self.assertEqual(expected_truncated, returned_list.truncated) - - def test_list(self, ref_list=None, expected_path=None, - expected_query=None, **filter_kwargs): - # test simple list, without any truncation - self._test_list(ref_list, expected_path, expected_query, - **filter_kwargs) - # test when a server returned a list with truncated=False - self._test_list(ref_list, expected_path, expected_query, - truncated=False, **filter_kwargs) - # test when a server returned a list with truncated=True - self._test_list(ref_list, expected_path, expected_query, - truncated=True, **filter_kwargs) - def test_list_params(self): ref_list = [self.new_ref()] filter_kwargs = {uuid.uuid4().hex: uuid.uuid4().hex} |