init push
This commit is contained in:
44
internal/service/ses_event_test.go
Normal file
44
internal/service/ses_event_test.go
Normal file
@@ -0,0 +1,44 @@
|
||||
package service
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestParseSESEventNotification(t *testing.T) {
|
||||
t.Run("parses direct SES event payload", func(t *testing.T) {
|
||||
event, err := ParseSESEventNotification([]byte(`{
|
||||
"eventType":"Delivery",
|
||||
"mail":{"messageId":"ses-msg-1","source":"no-reply@example.com","destination":["user@example.com"]},
|
||||
"delivery":{"processingTimeMillis":123}
|
||||
}`))
|
||||
if err != nil {
|
||||
t.Fatalf("parse: %v", err)
|
||||
}
|
||||
if event.EventType != "Delivery" || event.Mail.MessageID != "ses-msg-1" {
|
||||
t.Fatalf("unexpected event: %+v", event)
|
||||
}
|
||||
if event.Delivery == nil || event.Delivery.ProcessingTimeMillis != 123 {
|
||||
t.Fatalf("expected delivery details, got %+v", event.Delivery)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("parses SNS-wrapped SES event payload", func(t *testing.T) {
|
||||
event, err := ParseSESEventNotification([]byte(`{
|
||||
"Type":"Notification",
|
||||
"Message":"{\"eventType\":\"Bounce\",\"mail\":{\"messageId\":\"ses-msg-2\",\"source\":\"no-reply@example.com\",\"destination\":[\"user@example.com\"]},\"bounce\":{\"bounceType\":\"Permanent\"}}"
|
||||
}`))
|
||||
if err != nil {
|
||||
t.Fatalf("parse: %v", err)
|
||||
}
|
||||
if event.EventType != "Bounce" || event.Mail.MessageID != "ses-msg-2" {
|
||||
t.Fatalf("unexpected event: %+v", event)
|
||||
}
|
||||
if event.Bounce == nil || event.Bounce.BounceType != "Permanent" {
|
||||
t.Fatalf("expected bounce details, got %+v", event.Bounce)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("rejects missing event type", func(t *testing.T) {
|
||||
if _, err := ParseSESEventNotification([]byte(`{"mail":{"messageId":"ses-msg-3"}}`)); err == nil {
|
||||
t.Fatalf("expected error for missing event type")
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user