]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Add volumeattachment validation
authorSteven Dake <sdake@redhat.com>
Fri, 11 May 2012 00:10:53 +0000 (17:10 -0700)
committerSteven Dake <sdake@redhat.com>
Fri, 11 May 2012 00:11:08 +0000 (17:11 -0700)
Signed-off-by: Steven Dake <sdake@redhat.com>
heat/tests/test_validate.py [new file with mode: 0644]

diff --git a/heat/tests/test_validate.py b/heat/tests/test_validate.py
new file mode 100644 (file)
index 0000000..6543831
--- /dev/null
@@ -0,0 +1,80 @@
+import sys
+import os
+
+import nose
+import unittest
+import mox
+import json
+import sqlalchemy
+
+from nose.plugins.attrib import attr
+from nose import with_setup
+
+from heat.tests.v1_1 import fakes
+from heat.engine import volume as volumes
+import heat.db as db_api
+from heat.engine import parser
+
+
+@attr(tag=['unit', 'validate'])
+@attr(speed='fast')
+class validateTest(unittest.TestCase):
+    def setUp(self):
+        self.m = mox.Mox()
+        self.fc = fakes.FakeClient()
+
+    def tearDown(self):
+        self.m.UnsetStubs()
+        print "volumeTest teardown complete"
+
+    def test_validate_volumeattach_valid(self):
+        f = open('../../templates/WordPress_Single_Instance_With_EBS.template')
+        t = json.loads(f.read())
+        f.close()
+
+        params = {}
+        parameters = {}
+        params['KeyStoneCreds'] = None
+        t['Parameters']['KeyName']['Value'] = 'test'
+        stack = parser.Stack('test_stack', t, 0, params)
+
+        self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack')
+        db_api.resource_get_by_name_and_stack(None, 'test_resource_name',\
+                                              stack).AndReturn(None)
+
+        self.m.ReplayAll()
+        volumeattach = volumes.VolumeAttachment('test_resource_name',\
+                       t['Resources']['MountPoint'], stack)
+        volumeattach.stack.resolve_attributes(volumeattach.t)
+        volumeattach.stack.resolve_joins(volumeattach.t)
+        volumeattach.stack.resolve_base64(volumeattach.t)
+        assert(volumeattach.validate() == None)
+
+    def test_validate_volumeattach_invalid(self):
+        f = open('../../templates/WordPress_Single_Instance_With_EBS.template')
+        t = json.loads(f.read())
+        f.close()
+
+        params = {}
+        parameters = {}
+        params['KeyStoneCreds'] = None
+        t['Parameters']['KeyName']['Value'] = 'test'
+        t['Resources']['MountPoint']['Properties']['Device'] = '/dev/sdb'
+        stack = parser.Stack('test_stack', t, 0, params)
+
+        self.m.StubOutWithMock(db_api, 'resource_get_by_name_and_stack')
+        db_api.resource_get_by_name_and_stack(None, 'test_resource_name',\
+                                              stack).AndReturn(None)
+
+        self.m.ReplayAll()
+        volumeattach = volumes.VolumeAttachment('test_resource_name',\
+                       t['Resources']['MountPoint'], stack)
+        volumeattach.stack.resolve_attributes(volumeattach.t)
+        volumeattach.stack.resolve_joins(volumeattach.t)
+        volumeattach.stack.resolve_base64(volumeattach.t)
+        assert(volumeattach.validate)
+
+    # allows testing of the test directly, shown below
+    if __name__ == '__main__':
+        sys.argv.append(__file__)
+        nose.main()