I'm using mock_ses from moto to mock aws ses functions. I want to test some functions that uses list_identities() but the mocked list_identities() does not behave the same way as the actual function, and I cannot figure out why.
The actual list_identities() function can take IdentityType argument to only return list of email addresses or list of domains as defined here. But it looks like the mocked list_identities() function always returns a list that includes both email addresses and domains event if the IdentityType is set.
I have created a simplified unit test to demonstrate my issue. I would expect this unit test to pass, but it fails because the value of mock_response is ['testdomain.com', '[email protected]', '[email protected]']. it's including the testdomain.com in the list when I only want to get the list of email addresses.
I'm using moto 4.2.6
from moto import mock_ses
@mock_ses
class Test_TestEmailSenderTestCase(unittest.TestCase):
# Setup actions for each test
def setUp(self):
ses_client = boto3.client("ses", "us-west-2")
self.ses_client = ses_client
ses_client.verify_email_identity(EmailAddress="[email protected]")
ses_client.verify_email_identity(EmailAddress="[email protected]")
ses_client.verify_domain_dkim(Domain='testdomain.com')
# Teardown actions for each test
def tearDown(self):
ses_client = boto3.client("ses", "us-west-2")
try:
ses_client.delete_identity(Identity="[email protected]")
ses_client.delete_identity(Identity="[email protected]")
ses_client.delete_identity(Identity="testdomain.com")
except:
pass
def test_get_email_address(self):
expected_response = ["[email protected]","[email protected]"]
mock_response = self.ses_client.list_identities(IdentityType='EmailAddress')["Identities"]
self.assertEqual(mock_response, expected_response)
The
IdentityType-argument is supported as of Moto 4.2.7, just released.See the ChangeLog: https://github.com/getmoto/moto/blob/master/CHANGELOG.md