From: Steven Hardy Date: Tue, 5 Mar 2013 18:36:15 +0000 (+0000) Subject: heat tests : Improve resource.py test coverage X-Git-Tag: 2014.1~798 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=180430fa32951303e76e8d9a54c657d8c36e0e6d;p=openstack-build%2Fheat-build.git heat tests : Improve resource.py test coverage Add tests for good/error paths of create/update functions ref bug 1146529 Change-Id: I2b50b94e61a85a681575fbe6cad5576f2df311b9 --- diff --git a/heat/tests/test_resource.py b/heat/tests/test_resource.py index 19f39139..ced23c92 100644 --- a/heat/tests/test_resource.py +++ b/heat/tests/test_resource.py @@ -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')