from unittest import mock import pytest from app.connectors.aws.ses.email_client import EmailClient @pytest.fixture def ses_client_mock() -> mock.MagicMock: return mock.MagicMock() @pytest.fixture def email_client(ses_client_mock: mock.MagicMock) -> EmailClient: with mock.patch("boto3.client", return_value=ses_client_mock): return EmailClient( email_sender="sender@example.com", email_sender_name="Sender Name", email_source_arn="arn:aws:ses:us-east-1:123456789:identity/example.com", ) def test_send_email(email_client: EmailClient, ses_client_mock: mock.MagicMock) -> None: email_client.send_email( email_address="recipient@example.com", email_title="Test Subject", email_content="Test", message_id="msg-123", ) ses_client_mock.send_email.assert_called_once_with( SourceArn="arn:aws:ses:us-east-1:123456789:identity/example.com", Source="Sender Name ", ReturnPathArn="arn:aws:ses:us-east-1:123456789:identity/example.com", ReturnPath="sender@example.com", Destination={"ToAddresses": ["recipient@example.com"]}, Message={ "Body": { "Html": { "Charset": "UTF-8", "Data": "Test", } }, "Subject": { "Charset": "UTF-8", "Data": "Test Subject", }, }, )