moto/tests/test_sesv2/test_sesv2.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

324 lines
8.7 KiB
Python
Raw Normal View History

import boto3
from botocore.exceptions import ClientError
import pytest
from moto import mock_sesv2, mock_ses
from ..test_ses.test_ses_boto3 import get_raw_email
@pytest.fixture(scope="function")
def ses_v1():
"""Use this for API calls which exist in v1 but not in v2"""
with mock_ses():
yield boto3.client("ses", region_name="us-east-1")
@mock_sesv2
def test_send_email(ses_v1): # pylint: disable=redefined-outer-name
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
kwargs = dict(
FromEmailAddress="test@example.com",
Destination={
"ToAddresses": ["test_to@example.com"],
"CcAddresses": ["test_cc@example.com"],
"BccAddresses": ["test_bcc@example.com"],
},
Content={
"Simple": {
"Subject": {"Data": "test subject"},
"Body": {"Text": {"Data": "test body"}},
},
},
)
# Execute
with pytest.raises(ClientError) as e:
conn.send_email(**kwargs)
assert e.value.response["Error"]["Code"] == "MessageRejected"
ses_v1.verify_domain_identity(Domain="example.com")
conn.send_email(**kwargs)
send_quota = ses_v1.get_send_quota()
# Verify
sent_count = int(send_quota["SentLast24Hours"])
assert sent_count == 3
@mock_sesv2
def test_send_raw_email(ses_v1): # pylint: disable=redefined-outer-name
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
message = get_raw_email()
destination = {
"ToAddresses": [x.strip() for x in message["To"].split(",")],
}
kwargs = dict(
FromEmailAddress=message["From"],
Destination=destination,
Content={"Raw": {"Data": message.as_bytes()}},
)
# Execute
ses_v1.verify_email_identity(EmailAddress="test@example.com")
conn.send_email(**kwargs)
# Verify
send_quota = ses_v1.get_send_quota()
sent_count = int(send_quota["SentLast24Hours"])
assert sent_count == 2
@mock_sesv2
def test_create_contact_list():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
# Execute
conn.create_contact_list(
ContactListName=contact_list_name,
)
result = conn.list_contact_lists()
# Verify
assert len(result["ContactLists"]) == 1
assert result["ContactLists"][0]["ContactListName"] == contact_list_name
@mock_sesv2
def test_list_contact_lists():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
# Execute
result = conn.list_contact_lists()
# Verify
assert result["ContactLists"] == []
@mock_sesv2
def test_get_contact_list():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
# Execute
with pytest.raises(ClientError) as e:
conn.get_contact_list(ContactListName=contact_list_name)
assert e.value.response["Error"]["Code"] == "NotFoundException"
assert (
e.value.response["Error"]["Message"]
== f"List with name: {contact_list_name} doesn't exist."
)
conn.create_contact_list(
ContactListName=contact_list_name,
)
result = conn.get_contact_list(ContactListName=contact_list_name)
# Verify
assert result["ContactListName"] == contact_list_name
@mock_sesv2
def test_delete_contact_list():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
# Execute
with pytest.raises(ClientError) as e:
conn.delete_contact_list(ContactListName=contact_list_name)
assert e.value.response["Error"]["Code"] == "NotFoundException"
conn.create_contact_list(
ContactListName=contact_list_name,
)
result = conn.list_contact_lists()
assert len(result["ContactLists"]) == 1
conn.delete_contact_list(
ContactListName=contact_list_name,
)
result = conn.list_contact_lists()
# Verify
assert len(result["ContactLists"]) == 0
@mock_sesv2
def test_list_contacts():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
conn.create_contact_list(
ContactListName=contact_list_name,
)
# Execute
result = conn.list_contacts(ContactListName=contact_list_name)
# Verify
assert result["Contacts"] == []
@mock_sesv2
def test_create_contact_no_contact_list():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
email = "test@example.com"
# Execute
with pytest.raises(ClientError) as e:
conn.create_contact(
ContactListName=contact_list_name,
EmailAddress=email,
)
# Verify
assert e.value.response["Error"]["Code"] == "NotFoundException"
assert (
e.value.response["Error"]["Message"]
== f"List with name: {contact_list_name} doesn't exist."
)
@mock_sesv2
def test_create_contact():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
email = "test@example.com"
conn.create_contact_list(
ContactListName=contact_list_name,
)
# Execute
conn.create_contact(
ContactListName=contact_list_name,
EmailAddress=email,
)
result = conn.list_contacts(ContactListName=contact_list_name)
# Verify
assert len(result["Contacts"]) == 1
assert result["Contacts"][0]["EmailAddress"] == email
@mock_sesv2
def test_get_contact_no_contact_list():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
email = "test@example.com"
# Execute
with pytest.raises(ClientError) as e:
conn.get_contact(ContactListName=contact_list_name, EmailAddress=email)
# Verify
assert e.value.response["Error"]["Code"] == "NotFoundException"
assert (
e.value.response["Error"]["Message"]
== f"List with name: {contact_list_name} doesn't exist."
)
@mock_sesv2
def test_get_contact():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
email = "test@example.com"
conn.create_contact_list(
ContactListName=contact_list_name,
)
# Execute
conn.create_contact(
ContactListName=contact_list_name,
EmailAddress=email,
)
result = conn.get_contact(ContactListName=contact_list_name, EmailAddress=email)
# Verify
assert result["ContactListName"] == contact_list_name
assert result["EmailAddress"] == email
@mock_sesv2
def test_get_contact_no_contact():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
email = "test@example.com"
conn.create_contact_list(
ContactListName=contact_list_name,
)
# Execute
with pytest.raises(ClientError) as e:
conn.get_contact(ContactListName=contact_list_name, EmailAddress=email)
# Verify
assert e.value.response["Error"]["Code"] == "NotFoundException"
assert e.value.response["Error"]["Message"] == f"{email} doesn't exist in List."
@mock_sesv2
def test_delete_contact_no_contact_list():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
email = "test@example.com"
# Execute
with pytest.raises(ClientError) as e:
conn.delete_contact(ContactListName=contact_list_name, EmailAddress=email)
# Verify
assert e.value.response["Error"]["Code"] == "NotFoundException"
assert (
e.value.response["Error"]["Message"]
== f"List with name: {contact_list_name} doesn't exist."
)
@mock_sesv2
def test_delete_contact_no_contact():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
email = "test@example.com"
# Execute
conn.create_contact_list(ContactListName=contact_list_name)
with pytest.raises(ClientError) as e:
conn.delete_contact(ContactListName=contact_list_name, EmailAddress=email)
# Verify
assert e.value.response["Error"]["Code"] == "NotFoundException"
assert e.value.response["Error"]["Message"] == f"{email} doesn't exist in List."
@mock_sesv2
def test_delete_contact():
# Setup
conn = boto3.client("sesv2", region_name="us-east-1")
contact_list_name = "test2"
email = "test@example.com"
# Execute
conn.create_contact_list(ContactListName=contact_list_name)
conn.create_contact(ContactListName=contact_list_name, EmailAddress=email)
result = conn.list_contacts(ContactListName=contact_list_name)
assert len(result["Contacts"]) == 1
conn.delete_contact(ContactListName=contact_list_name, EmailAddress=email)
result = conn.list_contacts(ContactListName=contact_list_name)
# Verify
assert len(result["Contacts"]) == 0