]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
heat tests : Improve resource.py test coverage
authorSteven Hardy <shardy@redhat.com>
Tue, 5 Mar 2013 18:36:15 +0000 (18:36 +0000)
committerSteven Hardy <shardy@redhat.com>
Thu, 7 Mar 2013 09:03:03 +0000 (09:03 +0000)
Add tests for good/error paths of create/update functions

ref bug 1146529

Change-Id: I2b50b94e61a85a681575fbe6cad5576f2df311b9

heat/tests/test_resource.py

index 19f39139c4967764d777b0233c874479e70c4669..ced23c920a3f932028c327ff8292c3d989b0a1ce 100644 (file)
@@ -222,6 +222,93 @@ class ResourceTest(unittest.TestCase):
                           res.update_template_diff_properties,
                           update_snippet)
 
+    def test_resource(self):
+        # patch in a dummy property schema for GenericResource
+        dummy_schema = {'Foo': {'Type': 'String'}}
+        generic_rsrc.GenericResource.properties_schema = dummy_schema
+
+        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
+        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
+        self.assertEqual(None, res.create())
+        self.assertEqual(res.CREATE_COMPLETE, res.state)
+
+    def test_create_fail_missing_req_prop(self):
+        # patch in a dummy property schema for GenericResource
+        dummy_schema = {'Foo': {'Type': 'String', 'Required': True}}
+        generic_rsrc.GenericResource.properties_schema = dummy_schema
+
+        tmpl = {'Type': 'GenericResourceType', 'Properties': {}}
+        rname = 'test_resource'
+        res = generic_rsrc.GenericResource(rname, tmpl, self.stack)
+
+        estr = 'Property error : test_resource: Property Foo not assigned'
+        self.assertEqual(estr, res.create())
+        self.assertEqual(res.CREATE_FAILED, res.state)
+
+    def test_create_fail_prop_typo(self):
+        # patch in a dummy property schema for GenericResource
+        dummy_schema = {'Foo': {'Type': 'String', 'Required': True}}
+        generic_rsrc.GenericResource.properties_schema = dummy_schema
+
+        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Food': 'abc'}}
+        rname = 'test_resource'
+        res = generic_rsrc.GenericResource(rname, tmpl, self.stack)
+
+        estr = 'Property error : test_resource: Property Foo not assigned'
+        self.assertEqual(estr, res.create())
+        self.assertEqual(res.CREATE_FAILED, res.state)
+
+    def test_update_ok(self):
+        # patch in a dummy property schema for GenericResource
+        dummy_schema = {'Foo': {'Type': 'String'}}
+        generic_rsrc.GenericResource.properties_schema = dummy_schema
+
+        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
+        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
+        self.assertEqual(None, res.create())
+        self.assertEqual(res.CREATE_COMPLETE, res.state)
+
+        utmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'xyz'}}
+        self.m.StubOutWithMock(generic_rsrc.GenericResource, 'handle_update')
+        generic_rsrc.GenericResource.handle_update(utmpl).AndReturn(
+            resource.Resource.UPDATE_COMPLETE)
+        self.m.ReplayAll()
+
+        self.assertEqual(res.UPDATE_COMPLETE, res.update(utmpl))
+        self.assertEqual(res.UPDATE_COMPLETE, res.state)
+        self.m.VerifyAll()
+
+    def test_update_fail_missing_req_prop(self):
+        # patch in a dummy property schema for GenericResource
+        dummy_schema = {'Foo': {'Type': 'String', 'Required': True}}
+        generic_rsrc.GenericResource.properties_schema = dummy_schema
+
+        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
+        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
+        self.assertEqual(None, res.create())
+        self.assertEqual(res.CREATE_COMPLETE, res.state)
+
+        utmpl = {'Type': 'GenericResourceType', 'Properties': {}}
+
+        estr = 'Property error : test_resource: Property Foo not assigned'
+        self.assertEqual(estr, res.update(utmpl))
+        self.assertEqual(res.UPDATE_FAILED, res.state)
+
+    def test_update_fail_prop_typo(self):
+        # patch in a dummy property schema for GenericResource
+        dummy_schema = {'Foo': {'Type': 'String'}}
+        generic_rsrc.GenericResource.properties_schema = dummy_schema
+
+        tmpl = {'Type': 'GenericResourceType', 'Properties': {'Foo': 'abc'}}
+        res = generic_rsrc.GenericResource('test_resource', tmpl, self.stack)
+        self.assertEqual(None, res.create())
+        self.assertEqual(res.CREATE_COMPLETE, res.state)
+
+        utmpl = {'Type': 'GenericResourceType', 'Properties': {'Food': 'xyz'}}
+
+        self.assertEqual('Unknown Property Food', res.update(utmpl))
+        self.assertEqual(res.UPDATE_FAILED, res.state)
+
 
 @attr(tag=['unit', 'resource'])
 @attr(speed='fast')