"""Test Application Flow.""" import pytest from application import main from dbdeploy.util.exceptions import JobListGenerationError class TestMain: def test_main( self, mock_cleanup_runs, mock_update_job_status, mock_get_jobs_statuses, mock_monitor_dlq, mock_create_topics, mock_delete_topics, mock_prepare_job_list, mock_parse_file, mock_push_kafka, mock_acquire_lock, mock_start_connector, mock_release_lock, mock_stop_connector, mock_track_offsets, mock_joblist): """Test main app flow calls.""" mock_prepare_job_list.return_value = mock_joblist for job in mock_joblist: job.topics_created = True job.connector_started = True job.is_done = True job.skip_sink_connector = False mock_update_job_status.return_value = mock_joblist[0] mock_delete_topics.return_value = mock_joblist[0] mock_create_topics.return_value = mock_joblist[0] mock_push_kafka.return_value = mock_joblist[0] main('test_xml') assert mock_acquire_lock.called assert mock_cleanup_runs.called assert mock_parse_file.called assert mock_get_jobs_statuses.called assert mock_prepare_job_list.called assert mock_create_topics.called assert mock_start_connector.called assert mock_monitor_dlq.called assert mock_push_kafka.called assert mock_track_offsets.called assert mock_update_job_status.called assert mock_stop_connector.called assert mock_delete_topics.called assert mock_release_lock.called def test_main_xml_parse_fails( self, mock_cleanup_runs, mock_update_job_status, mock_get_jobs_statuses, mock_monitor_dlq, mock_create_topics, mock_delete_topics, mock_prepare_job_list, mock_parse_file, mock_push_kafka, mock_acquire_lock, mock_start_connector, mock_release_lock, mock_stop_connector, mock_track_offsets, caplog): """Test calls when xml parsing fails.""" mock_parse_file.side_effect = ValueError with pytest.raises(JobListGenerationError): main('test_xml') assert mock_acquire_lock.called assert mock_cleanup_runs.called assert mock_parse_file.called assert not mock_get_jobs_statuses.called assert not mock_prepare_job_list.called assert not mock_create_topics.called assert not mock_start_connector.called assert not mock_monitor_dlq.called assert not mock_push_kafka.called assert not mock_track_offsets.called assert not mock_update_job_status.called assert not mock_stop_connector.called assert not mock_delete_topics.called assert mock_release_lock.called def test_main_get_statuses_fails( self, mock_cleanup_runs, mock_update_job_status, mock_get_jobs_statuses, mock_monitor_dlq, mock_create_topics, mock_delete_topics, mock_prepare_job_list, mock_parse_file, mock_push_kafka, mock_acquire_lock, mock_start_connector, mock_release_lock, mock_stop_connector, mock_track_offsets, caplog): """Test calls when xml parsing fails.""" mock_get_jobs_statuses.side_effect = ValueError with pytest.raises(JobListGenerationError): main('test_xml') assert mock_acquire_lock.called assert mock_cleanup_runs.called assert mock_parse_file.called assert mock_get_jobs_statuses.called assert not mock_prepare_job_list.called assert not mock_create_topics.called assert not mock_start_connector.called assert not mock_monitor_dlq.called assert not mock_push_kafka.called assert not mock_track_offsets.called assert not mock_update_job_status.called assert not mock_stop_connector.called assert not mock_delete_topics.called assert mock_release_lock.called def test_main_create_topics_raises( self, mock_cleanup_runs, mock_update_job_status, mock_get_jobs_statuses, mock_monitor_dlq, mock_create_topics, mock_delete_topics, mock_prepare_job_list, mock_parse_file, mock_push_kafka, mock_acquire_lock, mock_start_connector, mock_release_lock, mock_stop_connector, mock_track_offsets, mock_joblist, caplog): mock_prepare_job_list.return_value = mock_joblist mock_update_job_status.return_value = mock_joblist[0] mock_create_topics.side_effect = Exception """Test calls when create topics raises.""" with pytest.raises(Exception): main('test_xml') assert mock_acquire_lock.called assert mock_cleanup_runs.called assert mock_parse_file.called assert mock_get_jobs_statuses.called assert mock_prepare_job_list.called assert mock_create_topics.called assert not mock_start_connector.called assert not mock_monitor_dlq.called assert not mock_push_kafka.called assert not mock_track_offsets.called assert mock_update_job_status.called assert not mock_stop_connector.called assert not mock_delete_topics.called assert mock_release_lock.called def test_main_start_connector_raises( self, mock_cleanup_runs, mock_update_job_status, mock_get_jobs_statuses, mock_monitor_dlq, mock_create_topics, mock_delete_topics, mock_prepare_job_list, mock_parse_file, mock_push_kafka, mock_acquire_lock, mock_start_connector, mock_release_lock, mock_stop_connector, mock_track_offsets, mock_joblist): """Test calls when start connector raises.""" mock_prepare_job_list.return_value = mock_joblist for job in mock_joblist: job.topics_created = True job.connector_started = False job.is_done = False mock_create_topics.return_value = mock_joblist[0] mock_update_job_status.return_value = mock_joblist[0] mock_start_connector.side_effect = Exception('test') with pytest.raises(Exception): main('test_xml') assert mock_acquire_lock.called assert mock_cleanup_runs.called assert mock_parse_file.called assert mock_get_jobs_statuses.called assert mock_prepare_job_list.called assert mock_create_topics.called assert mock_start_connector.called assert not mock_push_kafka.called assert not mock_track_offsets.called assert not mock_monitor_dlq.called assert mock_update_job_status.called assert not mock_stop_connector.called assert mock_delete_topics.called assert mock_release_lock.called def test_main_push_kafka_raises( self, mock_cleanup_runs, mock_update_job_status, mock_get_jobs_statuses, mock_monitor_dlq, mock_create_topics, mock_delete_topics, mock_prepare_job_list, mock_parse_file, mock_push_kafka, mock_acquire_lock, mock_start_connector, mock_release_lock, mock_stop_connector, mock_track_offsets, mock_joblist): """Test calls when push to kafka raises.""" mock_prepare_job_list.return_value = mock_joblist for job in mock_joblist: job.topics_created = True job.connector_started = True job.is_done = False mock_start_connector.return_value = mock_joblist[0] mock_update_job_status.return_value = mock_joblist[0] mock_create_topics.return_value = mock_joblist[0] mock_push_kafka.side_effect = Exception('test') with pytest.raises(Exception): main('test_xml') assert mock_acquire_lock.called assert mock_cleanup_runs.called assert mock_parse_file.called assert mock_get_jobs_statuses.called assert mock_prepare_job_list.called assert mock_create_topics.called assert mock_start_connector.called assert mock_monitor_dlq.called assert mock_push_kafka.called assert not mock_track_offsets.called assert mock_update_job_status.called assert mock_stop_connector.called assert mock_delete_topics.called assert mock_release_lock.called def test_main_monitor_dlq_raises( self, mock_cleanup_runs, mock_update_job_status, mock_get_jobs_statuses, mock_monitor_dlq, mock_create_topics, mock_delete_topics, mock_prepare_job_list, mock_parse_file, mock_push_kafka, mock_acquire_lock, mock_start_connector, mock_release_lock, mock_stop_connector, mock_track_offsets, mock_joblist): """Test calls when monitor_dlq raises.""" mock_prepare_job_list.return_value = mock_joblist for job in mock_joblist: job.topics_created = True job.connector_started = True job.is_done = False mock_create_topics.return_value = mock_joblist[0] mock_start_connector.return_value = mock_joblist[0] mock_update_job_status.return_value = mock_joblist[0] mock_monitor_dlq.side_effect = Exception('test') with pytest.raises(Exception): main('test_xml') assert mock_acquire_lock.called assert mock_cleanup_runs.called assert mock_parse_file.called assert mock_get_jobs_statuses.called assert mock_prepare_job_list.called assert mock_create_topics.called assert mock_start_connector.called assert mock_monitor_dlq.called assert not mock_push_kafka.called assert not mock_track_offsets.called assert mock_update_job_status.called assert mock_release_lock.called assert mock_stop_connector.called assert mock_delete_topics.called def test_main_skip_sink_connector( self, mock_cleanup_runs, mock_update_job_status, mock_get_jobs_statuses, mock_monitor_dlq, mock_create_topics, mock_delete_topics, mock_prepare_job_list, mock_parse_file, mock_push_kafka, mock_acquire_lock, mock_start_connector, mock_release_lock, mock_stop_connector, mock_track_offsets, mock_joblist, mock_check_topic_exists, mock_update_kafka_config): """Test main app flow calls.""" mock_prepare_job_list.return_value = mock_joblist for job in mock_joblist: job.topics_created = True job.connector_started = True job.is_done = True job.skip_sink_connector = True mock_update_job_status.return_value = mock_joblist[0] mock_delete_topics.return_value = mock_joblist[0] mock_create_topics.return_value = mock_joblist[0] mock_push_kafka.return_value = mock_joblist[0] main('test_xml') assert mock_acquire_lock.called assert mock_cleanup_runs.called assert mock_parse_file.called assert mock_get_jobs_statuses.called assert mock_prepare_job_list.called assert not mock_create_topics.called assert not mock_start_connector.called assert not mock_monitor_dlq.called assert mock_update_kafka_config.called assert mock_check_topic_exists.called assert mock_push_kafka.called assert not mock_track_offsets.called assert mock_update_job_status.called assert not mock_stop_connector.called assert not mock_delete_topics.called assert mock_release_lock.called