from unittest import mock from unittest.mock import ANY from aws_testing_utils import sqs_handler @mock.patch('boto3.client') def test_get_url(mock_client: mock.MagicMock) -> None: url = 'test_url' mock_client.return_value.get_queue_url.return_value = {'QueueUrl': url} handler = sqs_handler.SQSHandler() return_url = handler.get_url('test_sqs') assert url == return_url @mock.patch('aws_testing_utils.sqs_handler.SQSHandler.get_url') @mock.patch('boto3.client') def test_read_message( mock_client: mock.MagicMock, mock_get_url: mock.MagicMock ) -> None: url = 'test_url' receipt_handle = 'test_receipt_handle' mock_get_url.return_value = url message = {'ReceiptHandle': receipt_handle} mock_client.return_value.receive_message.return_value = {'Messages': [message]} mock_client.return_value.delete_message.return_value = None handler = sqs_handler.SQSHandler() response = handler.read_message('test_sqs') mock_client.return_value.receive_message.assert_called_with( QueueUrl=url, AttributeNames=ANY, MaxNumberOfMessages=ANY, MessageAttributeNames=ANY, VisibilityTimeout=ANY, WaitTimeSeconds=ANY, ) mock_client.return_value.delete_message.assert_called_with( QueueUrl=url, ReceiptHandle=receipt_handle ) assert response == message @mock.patch('aws_testing_utils.sqs_handler.SQSHandler.get_url') @mock.patch('boto3.client') def test_purge(mock_client: mock.MagicMock, mock_get_url: mock.MagicMock) -> None: mock_client.return_value.purge_queue.return_value = None url = 'test_url' mock_get_url.return_value = url handler = sqs_handler.SQSHandler() handler.purge('test_sqs') mock_client.return_value.purge_queue.assert_called_with(QueueUrl=url)