Files
LambdaMail/services/protocols/internal/domain/valueobject/dsn_bounce_test.go
T

37 lines
1.1 KiB
Go

package valueobject
import (
"strings"
"testing"
)
func TestBuildDsnReport_PreventsBounceLoopForEmptySender(t *testing.T) {
_, isLoop := BuildDsnReport(DsnActionFailed, "", "user@external.test", "msg123", "550 User unknown")
if !isLoop {
t.Errorf("expected loop prevention for empty sender")
}
_, isLoop = BuildDsnReport(DsnActionFailed, "<>", "user@external.test", "msg123", "550 User unknown")
if !isLoop {
t.Errorf("expected loop prevention for <> sender")
}
}
func TestBuildDsnReport_GeneratesValidMIME(t *testing.T) {
payload, isLoop := BuildDsnReport(DsnActionFailed, "sender@local.test", "recipient@remote.test", "msg123", "550 User unknown")
if isLoop || payload == nil {
t.Fatalf("unexpected loop signal for valid sender")
}
raw := string(payload)
if !strings.Contains(raw, "Content-Type: multipart/report; report-type=delivery-status") {
t.Errorf("missing multipart/report header: %s", raw)
}
if !strings.Contains(raw, "Action: failed") {
t.Errorf("missing Action: failed: %s", raw)
}
if !strings.Contains(raw, "Diagnostic-Code: smtp; 550 User unknown") {
t.Errorf("missing Diagnostic-Code: %s", raw)
}
}