From 84accc898c4415bec32567c5b72186cf44a0506f Mon Sep 17 00:00:00 2001 From: Zane Bitter Date: Fri, 14 Jun 2013 12:31:22 +0200 Subject: [PATCH] Unit tests: Create User for testing AccessKey An AccessKey resource is not independent of its associated User resource, which must be present in the same stack. Consequently, we need to create a real User resource that is a member of the same stack in order to test the AccessKey in a realistic environment. Change-Id: I4b732c93fe9823552baf65c3f9c87c8ebab061a4 --- heat/tests/test_user.py | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/heat/tests/test_user.py b/heat/tests/test_user.py index c444df66..21b630d6 100644 --- a/heat/tests/test_user.py +++ b/heat/tests/test_user.py @@ -267,22 +267,26 @@ class AccessKeyTest(UserPolicyTestCase): rsrc.state) return rsrc + def create_user(self, t, stack, resource_name): + rsrc = stack[resource_name] + self.assertEqual(None, rsrc.validate()) + scheduler.TaskRunner(rsrc.create)() + self.assertEqual(rsrc.CREATE_COMPLETE, rsrc.state) + return rsrc + def test_access_key(self): self.m.StubOutWithMock(user.AccessKey, 'keystone') + self.m.StubOutWithMock(user.User, 'keystone') user.AccessKey.keystone().MultipleTimes().AndReturn(self.fc) + user.User.keystone().MultipleTimes().AndReturn(self.fc) self.m.ReplayAll() t = template_format.parse(user_accesskey_template) - # Override the Ref for UserName with a hard-coded name, - # so we don't need to create the User resource - username = str(utils.PhysName('test_stack', 'CfnUser')) - t['Resources']['HostKeys']['Properties']['UserName'] = username stack = parse_stack(t) - stack.resources['CfnUser'].resource_id = self.fc.user_id - stack.resources['CfnUser'].state = 'CREATE_COMPLETE' + self.create_user(t, stack, 'CfnUser') rsrc = self.create_access_key(t, stack, 'HostKeys') self.assertRaises(resource.UpdateReplace, @@ -304,17 +308,29 @@ class AccessKeyTest(UserPolicyTestCase): self.assertEqual(None, rsrc.delete()) self.m.VerifyAll() - # Check for double delete - test_key = object() + def test_access_key_deleted(self): + self.m.StubOutWithMock(user.AccessKey, 'keystone') + self.m.StubOutWithMock(user.User, 'keystone') + user.AccessKey.keystone().MultipleTimes().AndReturn(self.fc) + user.User.keystone().MultipleTimes().AndReturn(self.fc) + + self.m.ReplayAll() + + t = template_format.parse(user_accesskey_template) + stack = parse_stack(t) + + self.create_user(t, stack, 'CfnUser') + rsrc = self.create_access_key(t, stack, 'HostKeys') + self.assertEqual(rsrc.CREATE_COMPLETE, rsrc.state) + self.m.StubOutWithMock(self.fc, 'delete_ec2_keypair') NotFound = keystoneclient.exceptions.NotFound self.fc.delete_ec2_keypair(self.fc.user_id, - test_key).AndRaise(NotFound('Gone')) - + rsrc.resource_id).AndRaise(NotFound('Gone')) self.m.ReplayAll() - rsrc.state = rsrc.CREATE_COMPLETE - rsrc.resource_id = test_key + self.assertEqual(None, rsrc.delete()) + self.m.VerifyAll() def test_access_key_no_user(self): -- 2.45.2