コード例 #1
0
 def test_deployment_access_arn_discovered_with_deleted(self):
     mock_deployment_access_stack_arn = 'deployment-access-stack-arn'
     mock_describe_stacks_result = {
         'Stacks': [{
             'StackId': 'wrong-stack-id',
             'StackStatus': 'DELETE_COMPLETE'
         }, {
             'StackId': mock_deployment_access_stack_arn,
             'StackStatus': 'UPDATE_COMPLETE'
         }]
     }
     mock_deployment_access_stack_name = MOCK_STACK_NAME + '-Access'
     mock_deployment_access = 'test-deployment-access'
     with mock.patch(
             'resource_manager_common.stack_info.DeploymentAccessInfo',
             return_value=mock_deployment_access
     ) as mock_DeploymentAccessInfo:
         with mock_aws.patch_client('cloudformation',
                                    'describe_stacks',
                                    return_value=mock_describe_stacks_result
                                    ) as mock_describe_stacks:
             target = stack_info.DeploymentInfo(MOCK_STACK_ARN)
             actual_deployment_access = target.deployment_access
             self.assertIs(actual_deployment_access, mock_deployment_access)
             mock_DeploymentAccessInfo.assert_called_once_with(
                 mock_deployment_access_stack_arn,
                 deployment_info=target,
                 client=target.client)
             mock_describe_stacks.assert_called_once_with(
                 StackName=mock_deployment_access_stack_name)
コード例 #2
0
 def test_deployment_access_provided(self):
     mock_deployment_access = 'test-deployment-access'
     target = stack_info.DeploymentInfo(
         MOCK_STACK_ARN,
         deployment_access_info=mock_deployment_access,
         client=MOCK_CLIENT)
     actual_deployment_access = target.deployment_access
     self.assertIs(actual_deployment_access, mock_deployment_access)
コード例 #3
0
 def test_deployment_name(self):
     mock_deployment_name = 'test-deployment'
     mock_parameters = {'DeploymentName': mock_deployment_name}
     with mock.patch(
             'resource_manager_common.stack_info.DeploymentInfo.parameters',
             new=mock.PropertyMock(return_value=mock_parameters)):
         target = stack_info.DeploymentInfo(MOCK_STACK_ARN)
         self.assertEquals(target.deployment_name, mock_deployment_name)
コード例 #4
0
 def test_constructor(self):
     target = stack_info.DeploymentInfo(
         MOCK_STACK_ARN,
         client=MOCK_CLIENT,
         stack_description=MOCK_STACK_DESCRIPTION)
     self.assertEquals(target.stack_type,
                       stack_info.StackInfo.STACK_TYPE_DEPLOYMENT)
     self.assertIs(target.client, MOCK_CLIENT)
     self.assertIs(target.stack_description, MOCK_STACK_DESCRIPTION)
コード例 #5
0
 def test_resource_groups(self):
     mock_physical_resource_id_1 = 'mock_physical_resource_id_1'
     mock_physical_resource_id_2 = 'mock_physical_resource_id_2'
     mock_logical_resource_id_1 = 'mock_logical_id_1'
     mock_logical_resource_id_2 = 'mock_logical_id_2'
     mock_resource_1 = mock.MagicMock()
     mock_resource_1.physical_id = mock_physical_resource_id_1
     mock_resource_1.logical_id = mock_logical_resource_id_1
     mock_resource_1.type = 'AWS::CloudFormation::Stack'
     mock_resource_2 = mock.MagicMock()
     mock_resource_2.physical_id = mock_physical_resource_id_2
     mock_resource_2.logical_id = mock_logical_resource_id_2
     mock_resource_2.type = 'AWS::CloudFormation::Stack'
     mock_resource_3 = mock.MagicMock()
     mock_resource_3.physical_id = 'not-used'
     mock_resource_3.logical_id = 'not-used'
     mock_resource_3.type = 'not-a-stack'
     mock_resource_4 = mock.MagicMock()
     mock_resource_4.physical_id = 'not-used'
     mock_resource_4.logical_id = 'not-used'
     mock_resource_4.type = 'not-a-stack'
     mock_resources = [
         mock_resource_3, mock_resource_1, mock_resource_4, mock_resource_2
     ]
     mock_resource_group_1 = 'test-resource-group-1'
     mock_resource_group_2 = 'test-resource-group-2'
     mock_resource_groups = [mock_resource_group_1, mock_resource_group_2]
     with mock.patch(
             'resource_manager_common.stack_info.ResourceGroupInfo',
             side_effect=mock_resource_groups) as mock_ResourceGroupInfo:
         with mock.patch(
                 'resource_manager_common.stack_info.DeploymentInfo.resources',
                 new_callable=mock.PropertyMock,
                 return_value=mock_resources):
             target = stack_info.DeploymentInfo(MOCK_STACK_ARN,
                                                client=MOCK_CLIENT)
             actual_resource_groups = target.resource_groups
             self.assertItemsEqual(actual_resource_groups,
                                   mock_resource_groups)
             mock_ResourceGroupInfo.assert_any_call(
                 mock_physical_resource_id_1,
                 resource_group_name=mock_logical_resource_id_1,
                 client=target.client,
                 deployment_info=target)
             mock_ResourceGroupInfo.assert_any_call(
                 mock_physical_resource_id_2,
                 resource_group_name=mock_logical_resource_id_2,
                 client=target.client,
                 deployment_info=target)
コード例 #6
0
 def test_deployment_access_arn_discovered_with_access_denied(self):
     mock_describe_stacks_result = ClientError(
         {'Error': {
             'Code': 'ValidationError'
         }}, 'describe-stacks')
     mock_deployment_access_stack_name = MOCK_STACK_NAME + '-Access'
     with mock_aws.patch_client('cloudformation',
                                'describe_stacks',
                                side_effect=mock_describe_stacks_result
                                ) as mock_describe_stacks:
         target = stack_info.DeploymentInfo(MOCK_STACK_ARN)
         actual_deployment_access = target.deployment_access
         self.assertIsNone(actual_deployment_access)
         mock_describe_stacks.assert_called_once_with(
             StackName=mock_deployment_access_stack_name)
コード例 #7
0
 def test_deployment_access_arn_discovered_with_not_access_denied(self):
     mock_error_code = 'SomeErrorCode'
     mock_describe_stacks_result = ClientError(
         {'Error': {
             'Code': mock_error_code
         }}, 'describe-stacks')
     mock_deployment_access_stack_name = MOCK_STACK_NAME + '-Access'
     with mock_aws.patch_client('cloudformation',
                                'describe_stacks',
                                side_effect=mock_describe_stacks_result
                                ) as mock_describe_stacks:
         target = stack_info.DeploymentInfo(MOCK_STACK_ARN)
         with self.assertRaisesRegexp(ClientError, mock_error_code):
             actual_deployment_access = target.deployment_access
         mock_describe_stacks.assert_called_once_with(
             StackName=mock_deployment_access_stack_name)
コード例 #8
0
 def test_project_discovered(self):
     mock_project_stack_id = 'test-project-stack-id'
     mock_project = 'test-project-info'
     mock_parameters = {'ProjectStackId': mock_project_stack_id}
     with mock.patch('resource_manager_common.stack_info.ProjectInfo',
                     return_value=mock_project) as mock_ProjectInfo:
         with mock.patch(
                 'resource_manager_common.stack_info.DeploymentInfo.parameters',
                 new=mock.PropertyMock(return_value=mock_parameters)):
             target = stack_info.DeploymentInfo(MOCK_STACK_ARN,
                                                client=MOCK_CLIENT)
             actual_project = target.project
             actual_project_2 = target.project
             self.assertIs(actual_project, mock_project)
             self.assertIs(actual_project_2, mock_project)
             mock_ProjectInfo.assert_called_once_with(mock_project_stack_id,
                                                      client=MOCK_CLIENT)
コード例 #9
0
 def test_deployment_access_arn_provided(self):
     mock_deployment_access = 'test-deployment-access'
     with mock.patch(
             'resource_manager_common.stack_info.DeploymentAccessInfo',
             return_value=mock_deployment_access
     ) as mock_DeploymentAccessInfo:
         mock_deployment_access_stack_arn = 'deployment-access-stack-arn'
         target = stack_info.DeploymentInfo(
             MOCK_STACK_ARN,
             deployment_access_stack_arn=mock_deployment_access_stack_arn,
             client=MOCK_CLIENT)
         actual_deployment_access = target.deployment_access
         self.assertIs(actual_deployment_access, mock_deployment_access)
         mock_DeploymentAccessInfo.assert_called_once_with(
             mock_deployment_access_stack_arn,
             deployment_info=target,
             client=MOCK_CLIENT)
コード例 #10
0
 def test_deployment_access_arn_discovered_with_deleted_only(self):
     mock_deployment_access_stack_arn = 'deployment-access-stack-arn'
     mock_describe_stacks_result = {
         'Stacks': [{
             'StackId': 'wrong-stack-id',
             'StackStatus': 'DELETE_COMPLETE'
         }, {
             'StackId': mock_deployment_access_stack_arn,
             'StackStatus': 'DELETE_COMPLETE'
         }]
     }
     mock_deployment_access_stack_name = MOCK_STACK_NAME + '-Access'
     with mock_aws.patch_client('cloudformation',
                                'describe_stacks',
                                return_value=mock_describe_stacks_result
                                ) as mock_describe_stacks:
         target = stack_info.DeploymentInfo(MOCK_STACK_ARN)
         actual_deployment_access = target.deployment_access
         self.assertIsNone(actual_deployment_access)
         mock_describe_stacks.assert_called_once_with(
             StackName=mock_deployment_access_stack_name)
コード例 #11
0
 def test_project_provided(self):
     mock_project_info = 'test-project-info'
     target = stack_info.DeploymentInfo(MOCK_STACK_ARN,
                                        project_info=mock_project_info)
     self.assertIs(target.project, mock_project_info)