def test_can_invoke_api_call_with_no_output(self):
        params = {'name': 'foo', 'trust_policy': {'trust': 'policy'},
                  'policy': {'iam': 'policy'}}
        call = APICall('create_role', params)

        self.execute([call])

        self.mock_client.create_role.assert_called_with(**params)
 def test_can_print_ui_messages(self):
     params = {'name': 'foo', 'trust_policy': {'trust': 'policy'},
               'policy': {'iam': 'policy'}}
     call = APICall('create_role', params)
     messages = {id(call): 'Creating role'}
     self.execute([call], messages)
     self.mock_client.create_role.assert_called_with(**params)
     self.ui.write.assert_called_with('Creating role')
Пример #3
0
 def test_validates_no_unresolved_deploy_vars(self):
     params = {'zip_contents': models.Placeholder.BUILD_STAGE}
     call = APICall('create_function', params)
     self.mock_client.create_function.return_value = 'function:arn'
     # We should raise an exception because a param has
     # a models.Placeholder.BUILD_STAGE value which should have
     # been handled in an earlier stage.
     with pytest.raises(UnresolvedValueError):
         self.execute([call])
    def test_empty_values_omitted(self):
        params = {'name': 'foo', 'empty_list': [],
                  'empty_dict': {}, 'empty_str': ''}
        call = APICall('create_role', params)

        plan_output = self.get_plan_output([call])
        assert 'empty_list' not in plan_output
        assert 'empty_dict' not in plan_output
        assert 'empty_str' not in plan_output
    def test_can_store_api_result(self):
        params = {'name': 'foo', 'trust_policy': {'trust': 'policy'},
                  'policy': {'iam': 'policy'}}
        apicall = APICall('create_role', params, output_var='my_variable_name')
        self.mock_client.create_role.return_value = 'myrole:arn'

        self.execute([apicall])

        assert self.executor.variables['my_variable_name'] == 'myrole:arn'
Пример #6
0
    def test_variable_pool_printed_if_needed(self):
        params = {'name': 'foo', 'policy': {'iam': 'policy'}}
        call = APICall('create_role', params)

        plan_output = self.get_plan_output([call])
        # Dictionaries for param values are printed at the end so they
        # don't clutter the plan output.  We should see a placeholder here.
        assert 'policy: ${POLICY_0}' in plan_output
        assert 'Variable Pool' in plan_output
        assert "${POLICY_0}:\n{'iam': 'policy'}" in plan_output
 def test_can_reference_varname(self):
     self.mock_client.create_function.return_value = 'function:arn'
     self.execute([
         APICall('create_function', {}, output_var='myvarname'),
         RecordResourceVariable(
             resource_type='lambda_function',
             resource_name='myfunction',
             name='myfunction_arn',
             variable_name='myvarname',
         ),
     ])
     assert self.executor.resource_values == [{
         'name': 'myfunction',
         'resource_type': 'lambda_function',
         'myfunction_arn': 'function:arn',
     }]
 def test_can_return_created_resources(self):
     params = {}
     call = APICall('create_function', params,
                    output_var='myfunction_arn')
     self.mock_client.create_function.return_value = 'function:arn'
     record_instruction = RecordResourceVariable(
         resource_type='lambda_function',
         resource_name='myfunction',
         name='myfunction_arn',
         variable_name='myfunction_arn',
     )
     self.execute([call, record_instruction])
     assert self.executor.resource_values == [{
         'name': 'myfunction',
         'myfunction_arn': 'function:arn',
         'resource_type': 'lambda_function',
     }]
    def test_can_reference_stored_results_in_api_calls(self):
        params = {
            'name': Variable('role_name'),
            'trust_policy': {'trust': 'policy'},
            'policy': {'iam': 'policy'}
        }
        call = APICall('create_role', params)
        self.mock_client.create_role.return_value = 'myrole:arn'

        self.executor.variables['role_name'] = 'myrole-name'
        self.execute([call])

        self.mock_client.create_role.assert_called_with(
            name='myrole-name',
            trust_policy={'trust': 'policy'},
            policy={'iam': 'policy'},
        )
    def test_can_display_plan(self):
        params = {'name': 'foo', 'trust_policy': {'trust': 'policy'},
                  'policy': {'iam': 'policy'}}
        call = APICall('create_role', params)

        plan_output = self.get_plan_output([call])
        # Should have a plan title.
        assert plan_output.startswith('Plan\n====')
        # Should print the api call in upper camel case.
        assert 'API_CALL' in plan_output
        # Should print the name of the method in the plan.
        assert 'method_name: create_role' in plan_output
        # Should print out the api call arguments in output.
        assert 'name: foo' in plan_output
        # The values for these are in the tests for the variable pool.
        assert 'trust_policy: ' in plan_output
        assert 'policy: ' in plan_output
Пример #11
0
    def test_byte_value_replaced_if_over_length(self):
        params = {'name': 'foo', 'zip_contents': b'\x01' * 50}
        call = APICall('create_role', params)

        plan_output = self.get_plan_output([call])
        assert 'zip_contents: <bytes>' in plan_output
Пример #12
0
    def test_variable_pool_omitted_if_empty(self):
        params = {'name': 'foo'}
        call = APICall('create_role', params)

        plan_output = self.get_plan_output([call])
        assert 'Variable Pool' not in plan_output