summaryrefslogtreecommitdiff
path: root/reddwarfclient/tests/test_base.py
diff options
context:
space:
mode:
authorMichael Basnight <mbasnight@gmail.com>2013-06-17 23:34:27 -0700
committerMichael Basnight <mbasnight@gmail.com>2013-06-21 20:15:23 +0000
commit9916c8f2733b683d859770d05dacd2c9c82912d7 (patch)
tree084a0d53580cbbd34ed8f28de9302d6c78f7050d /reddwarfclient/tests/test_base.py
parentbc90b3e088d3d4b83b5b3de0f9f83d9b6956947d (diff)
downloadpython-troveclient-0.1.3.tar.gz
Rename from reddwarf to trove.0.1.3
Implements Blueprint reddwarf-trove-rename Change-Id: Ib2d694c7466887ca297bea4250eca17cdc06b7bf
Diffstat (limited to 'reddwarfclient/tests/test_base.py')
-rw-r--r--reddwarfclient/tests/test_base.py447
1 files changed, 0 insertions, 447 deletions
diff --git a/reddwarfclient/tests/test_base.py b/reddwarfclient/tests/test_base.py
deleted file mode 100644
index 5cbd590..0000000
--- a/reddwarfclient/tests/test_base.py
+++ /dev/null
@@ -1,447 +0,0 @@
-import contextlib
-import os
-
-from testtools import TestCase
-from mock import Mock
-
-from reddwarfclient import base
-from reddwarfclient import exceptions
-from reddwarfclient import utils
-
-"""
-Unit tests for base.py
-"""
-
-
-def obj_class(self, res, loaded=True):
- return res
-
-
-class BaseTest(TestCase):
-
- def test_getid(self):
- obj = "test"
- r = base.getid(obj)
- self.assertEqual(obj, r)
-
- test_id = "test_id"
- obj = Mock()
- obj.id = test_id
- r = base.getid(obj)
- self.assertEqual(test_id, r)
-
-
-class ManagerTest(TestCase):
-
- def setUp(self):
- super(ManagerTest, self).setUp()
- self.orig__init = base.Manager.__init__
- base.Manager.__init__ = Mock(return_value=None)
- self.orig_os_makedirs = os.makedirs
-
- def tearDown(self):
- super(ManagerTest, self).tearDown()
- base.Manager.__init__ = self.orig__init
- os.makedirs = self.orig_os_makedirs
-
- def test___init__(self):
- api = Mock()
- base.Manager.__init__ = self.orig__init
- manager = base.Manager(api)
- self.assertEqual(api, manager.api)
-
- def test_completion_cache(self):
- manager = base.Manager()
-
- # handling exceptions
- mode = "w"
- cache_type = "unittest"
- obj_class = Mock
- with manager.completion_cache(cache_type, obj_class, mode):
- pass
-
- os.makedirs = Mock(side_effect=OSError)
- with manager.completion_cache(cache_type, obj_class, mode):
- pass
-
- def test_write_to_completion_cache(self):
- manager = base.Manager()
-
- # no cache object, nothing should happen
- manager.write_to_completion_cache("non-exist", "val")
-
- def side_effect_func(val):
- return val
-
- manager._mock_cache = Mock()
- manager._mock_cache.write = Mock(return_value=None)
- manager.write_to_completion_cache("mock", "val")
- self.assertEqual(1, manager._mock_cache.write.call_count)
-
- def _get_mock(self):
- manager = base.Manager()
- manager.api = Mock()
- manager.api.client = Mock()
-
- def side_effect_func(self, body, loaded=True):
- return body
-
- manager.resource_class = Mock(side_effect=side_effect_func)
- return manager
-
- def test__get_with_response_key_none(self):
- manager = self._get_mock()
- url_ = "test-url"
- body_ = "test-body"
- resp_ = "test-resp"
- manager.api.client.get = Mock(return_value=(resp_, body_))
- r = manager._get(url=url_, response_key=None)
- self.assertEqual(body_, r)
-
- def test__get_with_response_key(self):
- manager = self._get_mock()
- response_key = "response_key"
- body_ = {response_key: "test-resp-key-body"}
- url_ = "test_url_get"
- manager.api.client.get = Mock(return_value=(url_, body_))
- r = manager._get(url=url_, response_key=response_key)
- self.assertEqual(body_[response_key], r)
-
- def test__create(self):
- manager = base.Manager()
- manager.api = Mock()
- manager.api.client = Mock()
-
- response_key = "response_key"
- data_ = "test-data"
- body_ = {response_key: data_}
- url_ = "test_url_post"
- manager.api.client.post = Mock(return_value=(url_, body_))
-
- return_raw = True
- r = manager._create(url_, body_, response_key, return_raw)
- self.assertEqual(data_, r)
-
- return_raw = False
-
- @contextlib.contextmanager
- def completion_cache_mock(*arg, **kwargs):
- yield
-
- mock = Mock()
- mock.side_effect = completion_cache_mock
- manager.completion_cache = mock
-
- manager.resource_class = Mock(return_value="test-class")
- r = manager._create(url_, body_, response_key, return_raw)
- self.assertEqual("test-class", r)
-
- def get_mock_mng_api_client(self):
- manager = base.Manager()
- manager.api = Mock()
- manager.api.client = Mock()
- return manager
-
- def test__delete(self):
- resp_ = "test-resp"
- body_ = "test-body"
-
- manager = self.get_mock_mng_api_client()
- manager.api.client.delete = Mock(return_value=(resp_, body_))
- # _delete just calls api.client.delete, and does nothing
- # the correctness should be tested in api class
- manager._delete("test-url")
- pass
-
- def test__update(self):
- resp_ = "test-resp"
- body_ = "test-body"
-
- manager = self.get_mock_mng_api_client()
- manager.api.client.put = Mock(return_value=(resp_, body_))
- body = manager._update("test-url", body_)
- self.assertEqual(body_, body)
-
-
-class ManagerListTest(ManagerTest):
-
- def setUp(self):
- super(ManagerListTest, self).setUp()
-
- @contextlib.contextmanager
- def completion_cache_mock(*arg, **kwargs):
- yield
-
- self.manager = base.Manager()
- self.manager.api = Mock()
- self.manager.api.client = Mock()
-
- self.response_key = "response_key"
- self.data_p = ["p1", "p2"]
- self.body_p = {self.response_key: self.data_p}
- self.url_p = "test_url_post"
- self.manager.api.client.post = Mock(return_value=(self.url_p,
- self.body_p))
-
- self.data_g = ["g1", "g2", "g3"]
- self.body_g = {self.response_key: self.data_g}
- self.url_g = "test_url_get"
- self.manager.api.client.get = Mock(return_value=(self.url_g,
- self.body_g))
-
- mock = Mock()
- mock.side_effect = completion_cache_mock
- self.manager.completion_cache = mock
-
- def tearDown(self):
- super(ManagerListTest, self).tearDown()
-
- def obj_class(self, res, loaded=True):
- return res
-
- def test_list_with_body_none(self):
- body = None
- l = self.manager._list("url", self.response_key, obj_class, body)
- self.assertEqual(len(self.data_g), len(l))
- for i in range(0, len(l)):
- self.assertEqual(self.data_g[i], l[i])
-
- def test_list_body_not_none(self):
- body = "something"
- l = self.manager._list("url", self.response_key, obj_class, body)
- self.assertEqual(len(self.data_p), len(l))
- for i in range(0, len(l)):
- self.assertEqual(self.data_p[i], l[i])
-
- def test_list_key_mapping(self):
- data_ = {"values": ["p1", "p2"]}
- body_ = {self.response_key: data_}
- url_ = "test_url_post"
- self.manager.api.client.post = Mock(return_value=(url_, body_))
- l = self.manager._list("url", self.response_key,
- obj_class, "something")
- data = data_["values"]
- self.assertEqual(len(data), len(l))
- for i in range(0, len(l)):
- self.assertEqual(data[i], l[i])
-
- def test_list_without_key_mapping(self):
- data_ = {"v1": "1", "v2": "2"}
- body_ = {self.response_key: data_}
- url_ = "test_url_post"
- self.manager.api.client.post = Mock(return_value=(url_, body_))
- l = self.manager._list("url", self.response_key,
- obj_class, "something")
- self.assertEqual(len(data_), len(l))
-
-
-class ManagerWithFind(TestCase):
-
- def setUp(self):
- super(ManagerWithFind, self).setUp()
- self.orig__init = base.ManagerWithFind.__init__
- base.ManagerWithFind.__init__ = Mock(return_value=None)
- self.manager = base.ManagerWithFind()
-
- def tearDown(self):
- super(ManagerWithFind, self).tearDown()
- base.ManagerWithFind.__init__ = self.orig__init
-
- def test_find(self):
- obj1 = Mock()
- obj1.attr1 = "v1"
- obj1.attr2 = "v2"
- obj1.attr3 = "v3"
-
- obj2 = Mock()
- obj2.attr1 = "v1"
- obj2.attr2 = "v2"
-
- self.manager.list = Mock(return_value=[obj1, obj2])
- self.manager.resource_class = Mock
-
- # exactly one match case
- found = self.manager.find(attr1="v1", attr2="v2", attr3="v3")
- self.assertEqual(obj1, found)
-
- # no match case
- self.assertRaises(exceptions.NotFound, self.manager.find,
- attr1="v2", attr2="v2", attr3="v3")
-
- # multiple matches case
- obj2.attr3 = "v3"
- self.assertRaises(exceptions.NoUniqueMatch, self.manager.find,
- attr1="v1", attr2="v2", attr3="v3")
-
- def test_findall(self):
- obj1 = Mock()
- obj1.attr1 = "v1"
- obj1.attr2 = "v2"
- obj1.attr3 = "v3"
-
- obj2 = Mock()
- obj2.attr1 = "v1"
- obj2.attr2 = "v2"
-
- self.manager.list = Mock(return_value=[obj1, obj2])
-
- found = self.manager.findall(attr1="v1", attr2="v2", attr3="v3")
- self.assertEqual(1, len(found))
- self.assertEqual(obj1, found[0])
-
- found = self.manager.findall(attr1="v2", attr2="v2", attr3="v3")
- self.assertEqual(0, len(found))
-
- found = self.manager.findall(attr7="v1", attr2="v2")
- self.assertEqual(0, len(found))
-
- def test_list(self):
- # this method is not yet implemented, exception expected
- self.assertRaises(NotImplementedError, self.manager.list)
-
-
-class ResourceTest(TestCase):
-
- def setUp(self):
- super(ResourceTest, self).setUp()
- self.orig___init__ = base.Resource.__init__
-
- def tearDown(self):
- super(ResourceTest, self).tearDown()
- base.Resource.__init__ = self.orig___init__
-
- def test___init__(self):
- manager = Mock()
- manager.write_to_completion_cache = Mock(return_value=None)
-
- info_ = {}
- robj = base.Resource(manager, info_)
- self.assertEqual(0, manager.write_to_completion_cache.call_count)
-
- info_ = {"id": "id-with-less-than-36-char"}
- robj = base.Resource(manager, info_)
- self.assertEqual(info_["id"], robj.id)
- self.assertEqual(0, manager.write_to_completion_cache.call_count)
-
- id_ = "id-with-36-char-"
- for i in range(36 - len(id_)):
- id_ = id_ + "-"
- info_ = {"id": id_}
- robj = base.Resource(manager, info_)
- self.assertEqual(info_["id"], robj.id)
- self.assertEqual(1, manager.write_to_completion_cache.call_count)
-
- info_["name"] = "test-human-id"
- # Resource.HUMAN_ID is False
- robj = base.Resource(manager, info_)
- self.assertEqual(info_["id"], robj.id)
- self.assertEqual(None, robj.human_id)
- self.assertEqual(2, manager.write_to_completion_cache.call_count)
-
- # base.Resource.HUMAN_ID = True
- info_["HUMAN_ID"] = True
- robj = base.Resource(manager, info_)
- self.assertEqual(info_["id"], robj.id)
- self.assertEqual(info_["name"], robj.human_id)
- self.assertEqual(4, manager.write_to_completion_cache.call_count)
-
- def test_human_id(self):
- manager = Mock()
- manager.write_to_completion_cache = Mock(return_value=None)
-
- info_ = {"name": "test-human-id"}
- robj = base.Resource(manager, info_)
- self.assertEqual(None, robj.human_id)
-
- info_["HUMAN_ID"] = True
- robj = base.Resource(manager, info_)
- self.assertEqual(info_["name"], robj.human_id)
- robj.name = "new-human-id"
- self.assertEqual("new-human-id", robj.human_id)
-
- def get_mock_resource_obj(self):
- base.Resource.__init__ = Mock(return_value=None)
- robj = base.Resource()
- return robj
-
- def test__add_details(self):
- robj = self.get_mock_resource_obj()
- info_ = {"name": "test-human-id", "test_attr": 5}
- robj._add_details(info_)
- self.assertEqual(info_["name"], robj.name)
- self.assertEqual(info_["test_attr"], robj.test_attr)
-
- def test___getattr__(self):
- robj = self.get_mock_resource_obj()
- info_ = {"name": "test-human-id", "test_attr": 5}
- robj._add_details(info_)
- self.assertEqual(info_["test_attr"], robj.__getattr__("test_attr"))
-
- # TODO: looks like causing infinite recursive calls
- #robj.__getattr__("test_non_exist_attr")
-
- def test___repr__(self):
- robj = self.get_mock_resource_obj()
- info_ = {"name": "test-human-id", "test_attr": 5}
- robj._add_details(info_)
-
- expected = "<Resource name=test-human-id, test_attr=5>"
- self.assertEqual(expected, robj.__repr__())
-
- def test_get(self):
- robj = self.get_mock_resource_obj()
- manager = Mock()
- manager.get = None
-
- robj.manager = object()
- robj.get()
-
- manager = Mock()
- robj.manager = Mock()
-
- robj.id = "id"
- new = Mock()
- new._info = {"name": "test-human-id", "test_attr": 5}
- robj.manager.get = Mock(return_value=new)
- robj.get()
- self.assertEqual("test-human-id", robj.name)
- self.assertEqual(5, robj.test_attr)
-
- def tes___eq__(self):
- robj = self.get_mock_resource_obj()
- other = base.Resource()
-
- info_ = {"name": "test-human-id", "test_attr": 5}
- robj._info = info_
- other._info = {}
- self.assertNotTrue(robj.__eq__(other))
-
- robj._info = info_
- self.assertTrue(robj.__eq__(other))
-
- robj.id = "rid"
- other.id = "oid"
- self.assertNotTrue(robj.__eq__(other))
-
- other.id = "rid"
- self.assertTrue(robj.__eq__(other))
-
- # not instance of the same class
- other = Mock()
- self.assertNotTrue(robj.__eq__(other))
-
- def test_is_loaded(self):
- robj = self.get_mock_resource_obj()
- robj._loaded = True
- self.assertTrue(robj.is_loaded())
-
- robj._loaded = False
- self.assertFalse(robj.is_loaded())
-
- def test_set_loaded(self):
- robj = self.get_mock_resource_obj()
- robj.set_loaded(True)
- self.assertTrue(robj._loaded)
-
- robj.set_loaded(False)
- self.assertFalse(robj._loaded)