コード例 #1
0
 def test_can_run_apicall_step_with_query(self):
     loaded = load_wizard("""
     plan:
       start:
         values:
           foo:
             type: apicall
             operation: iam.ListPolicies
             params:
               Scope: AWS
             query: Policies[].Name
     """)
     mock_session = mock.Mock(spec=Session)
     mock_client = mock.Mock()
     mock_session.create_client.return_value = mock_client
     mock_client.list_policies.return_value = {
         'Policies': [{'Name': 'one'}, {'Name': 'two'}],
     }
     api_step = core.APICallStep(
         api_invoker=core.APIInvoker(session=mock_session)
     )
     planner = core.Planner(
         step_handlers={
             'apicall': api_step,
         },
     )
     parameters = planner.plan(loaded['plan'])
     # Note this value is the result is applying the
     # Polices[].Name jmespath query to the response.
     self.assertEqual(parameters['foo'], ['one', 'two'])
コード例 #2
0
 def test_can_run_apicall_step(self):
     loaded = load_wizard("""
     plan:
       start:
         values:
           foo:
             type: apicall
             operation: iam.ListPolicies
             params:
               Scope: AWS
     """)
     mock_session = mock.Mock(spec=Session)
     mock_client = mock.Mock()
     mock_session.create_client.return_value = mock_client
     mock_client.list_policies.return_value = {
         'Policies': ['foo'],
     }
     api_step = core.APICallStep(
         api_invoker=core.APIInvoker(session=mock_session)
     )
     planner = core.Planner(
         step_handlers={
             'apicall': api_step,
         },
     )
     parameters = planner.plan(loaded['plan'])
     self.assertEqual(parameters['foo'], {'Policies': ['foo']})
コード例 #3
0
def create_default_wizard_runner(session):
    api_invoker = core.APIInvoker(session=session)
    shared_config = core.SharedConfigAPI(session=session,
                                         config_writer=ConfigFileWriter())
    planner = core.Planner(
        step_handlers={
            core.StaticStep.NAME:
            core.StaticStep(),
            core.PromptStep.NAME:
            core.PromptStep(ui.UIPrompter()),
            core.YesNoPrompt.NAME:
            core.YesNoPrompt(ui.UIPrompter()),
            core.FilePromptStep.NAME:
            core.FilePromptStep(ui.UIFilePrompter(ui.FileCompleter())),
            core.TemplateStep.NAME:
            core.TemplateStep(),
            core.APICallStep.NAME:
            core.APICallStep(api_invoker=api_invoker),
            core.SharedConfigStep.NAME:
            core.SharedConfigStep(config_api=shared_config),
        })
    executor = core.Executor(
        step_handlers={
            core.APICallExecutorStep.NAME:
            core.APICallExecutorStep(api_invoker),
            core.SharedConfigExecutorStep.NAME:
            core.SharedConfigExecutorStep(shared_config),
            core.DefineVariableStep.NAME:
            core.DefineVariableStep(),
            core.MergeDictStep.NAME:
            core.MergeDictStep(),
        })
    runner = core.Runner(planner, executor)
    return runner
コード例 #4
0
 def test_can_invoke_with_plan_variables(self):
     invoker = core.APIInvoker(self.mock_session)
     invoker.invoke(
         'iam',
         'CreateUser',
         api_params={'UserName': '******'},
         plan_variables={'username': '******'}
     )
     call_method_args = self.get_call_args(self.mock_session)
     self.assertEqual(call_method_args, mock.call(UserName='******'))
コード例 #5
0
 def setUp(self):
     self.session = mock.Mock(spec=Session)
     self.client = mock.Mock()
     self.session.create_client.return_value = self.client
     self.mock_config_writer = mock.Mock(spec=ConfigFileWriter)
     self.shared_config_file = 'shared-config-file'
     self.config_api = mock.Mock(spec=core.SharedConfigAPI)
     self.executor = core.Executor(
         step_handlers={
             'apicall': core.APICallExecutorStep(
                 core.APIInvoker(session=self.session),
             ),
             'sharedconfig': core.SharedConfigExecutorStep(
                 config_api=self.config_api,
             ),
             'define-variable': core.DefineVariableStep(),
             'merge-dict': core.MergeDictStep(),
         }
     )
コード例 #6
0
 def test_can_open_file_with_builtin_function(self):
     invoker = core.APIInvoker(self.mock_session)
     with temporary_file('r+') as f:
         f.write('admin')
         f.flush()
         invoker.invoke(
             'iam',
             'CreateUser',
             # There's two parts to this test.  First, we have the
             # filename stored as a variable.
             plan_variables={'myfile': f.name},
             api_params={
                 # Then we reference the file with the builtin File
                 # type.  We should replace this entire value with
                 # the contents of the temp file ('admin').
                 'UserName': {'__wizard__:File': {'path': '{myfile}'}},
             },
         )
     call_method_args = self.get_call_args(self.mock_session)
     self.assertEqual(call_method_args, mock.call(UserName=b'admin'))