from unittest.mock import MagicMock, patch import pytest from botocore.exceptions import ClientError from garcon_contrib.aws import emr @patch('garcon.activity.ActivityWorker') def test_is_emr_ready(mock_activity): with pytest.raises(ClientError) as error: emr.is_emr_ready(mock_activity, 'test_cluster_id') assert error.value.response['Error']['Code'] == 'InvalidRequestException' assert error.value.response['Error']['Message'] == "Cluster id 'test_cluster_id' is not valid." @patch('garcon.activity.ActivityWorker') def test_shutdown_waiting_emr_cluster(mock_activity): with pytest.raises(ClientError) as error: emr.shutdown_waiting_emr_cluster(mock_activity, 'test_cluster_id') assert error.value.response['Error']['Code'] == 'InvalidRequestException' assert error.value.response['Error']['Message'] == "Cluster id 'test_cluster_id' is not valid." @patch('garcon.activity.ActivityWorker') def test_wait_emr_step_completed(mock_activity): with pytest.raises(ClientError) as error: emr.wait_emr_step_completed(mock_activity, 'test_cluster_id', 'test_step_id') assert error.value.response['Error']['Code'] == 'InvalidRequestException' assert error.value.response['Error']['Message'] == "Cluster id 'test_cluster_id' is not valid." @patch('garcon.activity.ActivityWorker') @patch.object(emr,'sleep') def test_completed_emr_job(mock_activity, mock_sleep): with pytest.raises(ClientError) as error: emr.completed_emr_job(mock_activity, 'test_cluster_id') assert error.value.response['Error']['Code'] == 'InvalidRequestException' assert error.value.response['Error']['Message'] == "Cluster id 'test_cluster_id' is not valid." @patch('garcon.activity.ActivityWorker') def test_get_emr_cluster_by_tag(mock_activity): result = emr.get_emr_cluster_by_tag(mock_activity, 'test_tag_name') assert result is None