Skip to content

Commit 4af8d0e

Browse files
surajitsurajit
authored andcommitted
add test for duplicate message id
1 parent 0927497 commit 4af8d0e

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

tests/conftest.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
import schemas.schema
1010
from crud.company import create_company
1111
from crud.contact import create_contact
12+
from crud.message import save_message
13+
from models.message import MessageType
14+
from models.message import Carrier
15+
from models.message import Message
1216
from models.payment import Organization
1317
from tests.test_database import SQLALCHEMY_DATABASE_URL
1418

@@ -51,6 +55,19 @@ def organization(db):
5155
create_company(db, schemas.schema.CreateCompany(name="Test org", org_id=12345))
5256

5357

58+
@pytest.fixture
59+
def sendgrid_message(db):
60+
message_data = dict(
61+
message_id="123657ab",
62+
status_code=202,
63+
message_type=MessageType.EMAIL.value,
64+
carrier=Carrier.SENDGRID.value,
65+
)
66+
db_item = Message(**message_data)
67+
db.add(db_item)
68+
db.commit()
69+
70+
5471
@pytest.fixture
5572
def contact(db):
5673
organization = db.query(Organization).filter_by(name="Test org").all()[0]

tests/routes/test_email.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,20 @@ def test_email_send_with_sendgrid_bad_request_exception(mock_send_email, client)
4747
response = client.post("/api/v1/email/send/", json=read_json("email_data.json"))
4848
assert response.status_code == 200
4949
assert response.json() == {"detail": "Bad request"}
50+
51+
52+
@mock.patch("routes.v1.email.email.send_email")
53+
def test_email_send_with_db_duplicate_message_id(
54+
mock_send_email, client, sendgrid_message
55+
):
56+
sendgrid_response_mock = SendGridResponseMock(
57+
headers={"x-message-id": "123657ab"}, status_code=202
58+
)
59+
mock_send_email.return_value = sendgrid_response_mock
60+
response = client.post("/api/v1/email/send/", json=read_json("email_data.json"))
61+
assert response.status_code == 200
62+
assert response.json() == {
63+
"detail": "duplicate key value violates unique constraint "
64+
'"ix_message_message_id"\nDETAIL: Key (message_id)=('
65+
"123657ab) already exists.\n"
66+
}

0 commit comments

Comments
 (0)