summaryrefslogtreecommitdiff
path: root/novaclient/tests/unit/test_base.py
diff options
context:
space:
mode:
authorJoe Gordon <joe.gordon0@gmail.com>2015-01-27 12:59:15 -0800
committerJoe Gordon <joe.gordon0@gmail.com>2015-01-27 13:06:06 -0800
commit3561772f8b0cfee746af53fa228375b2ec7dfd9d (patch)
treedb17dcd13f893639354b48b9288cbbd407d56b0b /novaclient/tests/unit/test_base.py
parent7544dcb4ea92247c1e8fa97b8f0aba566e33ca48 (diff)
downloadpython-novaclient-3561772f8b0cfee746af53fa228375b2ec7dfd9d.tar.gz
Move unit tests into unit test directory
In order to pave the way for functional testing, move existing unit tests into a directory labeled unit. A subsequent patch will add a directory for functional tests. Change-Id: I0adb8b9f14451acb382c725d31f5387b4b6d82bb
Diffstat (limited to 'novaclient/tests/unit/test_base.py')
-rw-r--r--novaclient/tests/unit/test_base.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/novaclient/tests/unit/test_base.py b/novaclient/tests/unit/test_base.py
new file mode 100644
index 00000000..d3fc6c75
--- /dev/null
+++ b/novaclient/tests/unit/test_base.py
@@ -0,0 +1,69 @@
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from novaclient import base
+from novaclient import exceptions
+from novaclient.tests.unit import utils
+from novaclient.tests.unit.v1_1 import fakes
+from novaclient.v1_1 import flavors
+
+
+cs = fakes.FakeClient()
+
+
+class BaseTest(utils.TestCase):
+
+ def test_resource_repr(self):
+ r = base.Resource(None, dict(foo="bar", baz="spam"))
+ self.assertEqual("<Resource baz=spam, foo=bar>", repr(r))
+
+ def test_getid(self):
+ self.assertEqual(4, base.getid(4))
+
+ class TmpObject(object):
+ id = 4
+ self.assertEqual(4, base.getid(TmpObject))
+
+ def test_resource_lazy_getattr(self):
+ f = flavors.Flavor(cs.flavors, {'id': 1})
+ self.assertEqual('256 MB Server', f.name)
+ cs.assert_called('GET', '/flavors/1')
+
+ # Missing stuff still fails after a second get
+ self.assertRaises(AttributeError, getattr, f, 'blahblah')
+
+ def test_eq(self):
+ # Two resources of the same type with the same id: equal
+ r1 = base.Resource(None, {'id': 1, 'name': 'hi'})
+ r2 = base.Resource(None, {'id': 1, 'name': 'hello'})
+ self.assertEqual(r1, r2)
+
+ # Two resoruces of different types: never equal
+ r1 = base.Resource(None, {'id': 1})
+ r2 = flavors.Flavor(None, {'id': 1})
+ self.assertNotEqual(r1, r2)
+
+ # Two resources with no ID: equal if their info is equal
+ r1 = base.Resource(None, {'name': 'joe', 'age': 12})
+ r2 = base.Resource(None, {'name': 'joe', 'age': 12})
+ self.assertEqual(r1, r2)
+
+ def test_findall_invalid_attribute(self):
+ # Make sure findall with an invalid attribute doesn't cause errors.
+ # The following should not raise an exception.
+ cs.flavors.findall(vegetable='carrot')
+
+ # However, find() should raise an error
+ self.assertRaises(exceptions.NotFound,
+ cs.flavors.find,
+ vegetable='carrot')