import argparse import logging from unittest.mock import MagicMock from unittest.mock import patch import boto.swf.layer2 as swf from garcon import activity import pytest from processing_accounting import cli def test_execute_flow(monkeypatch): mock_flow = MagicMock() mock_flow.workflow_id = lambda params: None mock_flow.name = 'test_name' mock_flow.domain = 'test_domain' mock_flow.version = 'test_version' mock_workflow_type = MagicMock() mock_workflow_type.start = lambda **params: params monkeypatch.setattr( swf, 'WorkflowType', MagicMock(return_value=mock_workflow_type)) context_str = ( '{"period_ids":"203","user_type":"label",' '"payment_interval":"quarter"}') resp = cli.execute_flow(mock_flow, context_str) swf.WorkflowType.assert_any_call( name='test_name', domain='test_domain', version='test_version', task_list='test_name') assert 'workflow_id' in resp assert 'input' in resp def test_garcon(monkeypatch): mock_parser = MagicMock() mock_args = MagicMock() mock_args.flow = 'accounting_statement_export' mock_args.log_level = 'debug' mock_args.context = '{"period_ids":"204","user_type":"label"}' mock_args.cmd = 'exec' monkeypatch.setattr( mock_parser, 'add_argument', MagicMock(return_value=None)) monkeypatch.setattr( mock_parser, 'parse_args', MagicMock(return_value=mock_args)) monkeypatch.setattr( argparse, 'ArgumentParser', MagicMock(return_value=mock_parser)) monkeypatch.setattr(cli, 'execute_flow', MagicMock(return_value=None)) monkeypatch.setattr( cli, 'run_activity_worker', MagicMock(return_value=None)) monkeypatch.setattr(cli, 'run_decider', MagicMock(return_value=None)) monkeypatch.setattr( logging, 'basicConfig', MagicMock(return_value=mock_args)) cli.garcon('204') assert cli.execute_flow.called mock_args.cmd = 'junk' with pytest.raises(Exception): cli.garcon('204') @patch('processing_accounting.flows.accounting_statement_export.flow.Flow') def run_activity_worker(mock_worker, monkeypatch): mock_worker_obj = MagicMock() monkeypatch.setattr( mock_worker_obj, 'run', MagicMock(return_value=None)) mock_worker.return_value = mock_worker_obj mock_flow = MagicMock() mock_flow.workflow_id = lambda params: None mock_flow.name = 'test_name' mock_flow.domain = 'test_domain' mock_flow.version = 'test_version' monkeypatch.setattr( activity, 'ActivityWorker', MagicMock(return_value=None)) cli.run_activity_worker(mock_worker, test='test')