From 3b9a56c1dd669d7f34b38d796dd2b982baa06d0a Mon Sep 17 00:00:00 2001 From: LuisFigueroaG Date: Mon, 5 Oct 2026 23:27:47 -0300 Subject: [PATCH] fix(parser): read replyTo from SES common headers --- .../utilities/parser/models/ses.py | 2 +- tests/unit/parser/_pydantic/test_ses.py | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/aws_lambda_powertools/utilities/parser/models/ses.py b/aws_lambda_powertools/utilities/parser/models/ses.py index 833cc557df0..93967fbbecd 100644 --- a/aws_lambda_powertools/utilities/parser/models/ses.py +++ b/aws_lambda_powertools/utilities/parser/models/ses.py @@ -37,7 +37,7 @@ class SesMailCommonHeaders(BaseModel): cc: List[str] | None = None bcc: List[str] | None = None sender: List[str] | None = None - reply_to: List[str] | None = Field(None, alias="reply-to") + reply_to: List[str] | None = Field(None, alias="replyTo") returnPath: str messageId: str date: str diff --git a/tests/unit/parser/_pydantic/test_ses.py b/tests/unit/parser/_pydantic/test_ses.py index 34eb43bf5eb..4b44dc0c90b 100644 --- a/tests/unit/parser/_pydantic/test_ses.py +++ b/tests/unit/parser/_pydantic/test_ses.py @@ -50,3 +50,25 @@ def test_ses_trigger_event(): assert action.type == raw_receipt["action"]["type"] assert action.functionArn == raw_receipt["action"]["functionArn"] assert action.invocationType == raw_receipt["action"]["invocationType"] + + +def test_ses_trigger_event_with_optional_common_headers(): + # GIVEN an SES event with cc, bcc, sender and reply-to common headers + raw_event = load_event("sesEvent.json") + raw_event["Records"][0]["ses"]["mail"]["commonHeaders"].update( + { + "cc": ["cc@example.com"], + "bcc": ["bcc@example.com"], + "sender": ["sender@example.com"], + "replyTo": ["reply@example.com"], + }, + ) + + # WHEN parsing the event + common_headers = SesModel(**raw_event).Records[0].ses.mail.commonHeaders + + # THEN the optional common headers are populated + assert common_headers.cc == ["cc@example.com"] + assert common_headers.bcc == ["bcc@example.com"] + assert common_headers.sender == ["sender@example.com"] + assert common_headers.reply_to == ["reply@example.com"]