package dispatch import ( "testing" "github.com/stretchr/testify/require" ) func TestValidateFromAddr(t *testing.T) { t.Parallel() tests := []struct { name string input string expectedEnvelope string expectedHeader string expectedErrContain string }{ { name: "bare email address", input: "system@coder.com", expectedEnvelope: "system@coder.com", expectedHeader: "system@coder.com", }, { name: "email with display name", input: "Coder System ", expectedEnvelope: "system@coder.com", expectedHeader: "Coder System ", }, { name: "email with quoted display name", input: `"Coder Notifications" `, expectedEnvelope: "notifications@coder.com", expectedHeader: `"Coder Notifications" `, }, { name: "email with special characters in display name", input: `"O'Brien, John" `, expectedEnvelope: "john@example.com", expectedHeader: `"O'Brien, John" `, }, { name: "invalid email address", input: "not-an-email", expectedErrContain: "parse 'from' address", }, { name: "empty string", input: "", expectedErrContain: "parse 'from' address", }, { name: "multiple addresses", input: "a@example.com, b@example.com", expectedErrContain: "'from' address not defined", }, } handler := &SMTPHandler{} for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { t.Parallel() envelope, header, err := handler.validateFromAddr(tc.input) if tc.expectedErrContain != "" { require.Error(t, err) require.ErrorContains(t, err, tc.expectedErrContain) return } require.NoError(t, err) require.Equal(t, tc.expectedEnvelope, envelope, "envelope address should be the bare email") require.Equal(t, tc.expectedHeader, header, "header address should preserve the original input") }) } }