"""Test cases for SES module.""" from unittest import mock import pytest from lambdacommon.aws import ses @pytest.mark.parametrize( 'recipients, recipients_call_arg, bcc_recipients_call_arg', [ (['test@email.com', 'bcc_test@email.com', 'bcc_test_one@mail.com'], ['test@email.com'], ['bcc_test@email.com', 'bcc_test_one@mail.com']), (['test@email.com'], ['test@email.com'], []) ]) @mock.patch('lambdacommon.aws.ses.boto3') def test_send_email( boto3, recipients, recipients_call_arg, bcc_recipients_call_arg): """Test send_email utility function.""" mock_client = mock.MagicMock() boto3.client.return_value = mock_client sender = 'test@theorhcard.com' subject = 'test email subject' message = 'test message' charset = 'utf-8' ses.send_email(sender, subject, message, recipients) mock_client.send_email.assert_called_once_with( Source=sender, Destination={ 'ToAddresses': recipients_call_arg, 'BccAddresses': bcc_recipients_call_arg }, Message={ 'Subject': { 'Data': subject, 'Charset': charset }, 'Body': { 'Text': { 'Data': message, 'Charset': charset } } }, ReplyToAddresses=[sender] ) @mock.patch('lambdacommon.aws.ses.boto3') def test_send_email_raises(boto3): """Test send_email utility function raises on exceptions.""" mock_client = mock.MagicMock() boto3.client.return_value = mock_client mock_client.send_email.side_effect = Exception() with pytest.raises(Exception): ses.send_email('sender', 'subject', 'message', ['rcpt'])