"""Unit tests for CLI functions to run decider, worker and exec processes.""" import datetime import json import os.path from unittest.mock import patch from swf_monitoring import cli @patch('swf_monitoring.cli.swf.WorkflowType') def test_exec_datadog_caching_monitor(mock_wf_type): """Test exec.""" cli.garcon('exec', 'datadog_caching_monitor') mock_wf_type.assert_called_with( task_list='swf_datadog_caching_monitor', name='swf_datadog_caching_monitor', version='1.0', domain='dev') @patch('swf_monitoring.cli.swf.WorkflowExecution') @patch('swf_monitoring.cli.swf.WorkflowType') def test_exec_datadog_caching_monitor_with_output( mock_wf_type, mock_wf_exec): """Test exec with output to file.""" mock_wf_exec.runId = '123456789' mock_wf_type.return_value.start.return_value = mock_wf_exec # test deezer exec cli.garcon('exec', 'datadog_caching_monitor', '-o', 'out.file') mock_wf_type.assert_called_with( task_list='swf_datadog_caching_monitor', name='swf_datadog_caching_monitor', version='1.0', domain='dev') # test output file contents assert os.path.isfile('out.file') with open('out.file', 'r') as f: h_args = json.load(f) date = datetime.datetime.today().strftime('%Y-%m-%d') assert h_args.get( 'workflow_id') == 'swf_datadog_caching_monitor-{}'.format(date)