"""SQS test module.""" import json import boto3 import pytest from moto import mock_aws import config from src.utils import sqs @pytest.fixture() def patch_sqs_client(sqs_client, monkeypatch): """Patch the global SQS client with a mocked one.""" monkeypatch.setattr(sqs, 'sqs_client', sqs_client) return sqs_client @pytest.fixture() def sqs_client(aws_credentials): """Return an SQS client.""" with mock_aws(): yield boto3.client('sqs', region_name='us-east-1') @pytest.fixture() def create_sqs_queue(sqs_client): """Create a mocked SQS queue.""" queue = sqs_client.create_queue( QueueName=config.SQS_QUEUE_NAME ) return queue @pytest.fixture() def sqs_message_body(): """Create a mocked message body.""" message_body = json.dumps({ 'jira_issue': 'DEVEX-123', 'date': '2022/09/09', 'user': 'test_user', 'account_id': '1234567890', }) return message_body @pytest.fixture() def send_sqs_message(sqs_client, create_sqs_queue, sqs_message_body): """Create a mocked SQS message.""" queue = sqs_client.send_message( QueueUrl=create_sqs_queue['QueueUrl'], MessageBody=sqs_message_body, ) return queue def test_get_queue_message_count( patch_sqs_client, create_sqs_queue, send_sqs_message): """Test get_queue_message_count function.""" result = sqs.get_queue_message_count() assert result == 1 def test_receive_message( patch_sqs_client, create_sqs_queue, send_sqs_message, sqs_message_body): """Test receive_message function.""" receipt_handle, message_body = sqs.receive_message() assert isinstance(receipt_handle, str) assert message_body == json.loads(sqs_message_body) def test_receive_no_messages(patch_sqs_client, create_sqs_queue): """Test receive_message function with no messages.""" receipt_handle, message_body = sqs.receive_message() assert not receipt_handle assert not message_body def test_delete_message(patch_sqs_client, create_sqs_queue, send_sqs_message): """Test delete_message function.""" receipt_handle, _body = sqs.receive_message() response = sqs.delete_message(receipt_handle) assert response == 200