mirror of
https://github.com/wneessen/go-mail.git
synced 2024-11-15 02:12:55 +01:00
Fix address references in tests and add AddTo functionality
Corrected incorrect address references in the `msg_test.go` file. Added new tests to validate the AddTo functionality, ensuring multiple addresses can be added and validated properly.
This commit is contained in:
parent
cb85a136c3
commit
a7f81baa4b
1 changed files with 66 additions and 197 deletions
263
msg_test.go
263
msg_test.go
|
@ -1319,15 +1319,15 @@ func TestMsg_To(t *testing.T) {
|
||||||
t.Errorf("failed to set To, addrHeader name is %s, want: empty", addresses[0].Name)
|
t.Errorf("failed to set To, addrHeader name is %s, want: empty", addresses[0].Name)
|
||||||
}
|
}
|
||||||
if addresses[1].Address != "tina.tester@example.com" {
|
if addresses[1].Address != "tina.tester@example.com" {
|
||||||
t.Errorf("failed to set To, addrHeader value is %s, want: %s", addresses[0].Address,
|
t.Errorf("failed to set To, addrHeader value is %s, want: %s", addresses[1].Address,
|
||||||
"tina.tester@example.com")
|
"tina.tester@example.com")
|
||||||
}
|
}
|
||||||
if addresses[1].String() != "<tina.tester@example.com>" {
|
if addresses[1].String() != "<tina.tester@example.com>" {
|
||||||
t.Errorf("failed to set To, addrHeader value is %s, want: %s", addresses[0].String(),
|
t.Errorf("failed to set To, addrHeader value is %s, want: %s", addresses[1].String(),
|
||||||
"<tina.tester@example.com>")
|
"<tina.tester@example.com>")
|
||||||
}
|
}
|
||||||
if addresses[1].Name != "" {
|
if addresses[1].Name != "" {
|
||||||
t.Errorf("failed to set To, addrHeader name is %s, want: empty", addresses[0].Name)
|
t.Errorf("failed to set To, addrHeader name is %s, want: empty", addresses[1].Name)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
t.Run("To with invalid address", func(t *testing.T) {
|
t.Run("To with invalid address", func(t *testing.T) {
|
||||||
|
@ -1367,6 +1367,69 @@ func TestMsg_To(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestMsg_AddTo(t *testing.T) {
|
||||||
|
t.Run("AddTo with valid addresses", func(t *testing.T) {
|
||||||
|
message := NewMsg()
|
||||||
|
if message == nil {
|
||||||
|
t.Fatal("message is nil")
|
||||||
|
}
|
||||||
|
if err := message.To("toni.tester@example.com"); err != nil {
|
||||||
|
t.Fatalf("failed to set To: %s", err)
|
||||||
|
}
|
||||||
|
if err := message.AddTo("tina.tester@example.com"); err != nil {
|
||||||
|
t.Fatalf("failed to set additional To: %s", err)
|
||||||
|
}
|
||||||
|
addresses, ok := message.addrHeader[HeaderTo]
|
||||||
|
if !ok {
|
||||||
|
t.Fatalf("failed to set To, addrHeader field is not set")
|
||||||
|
}
|
||||||
|
if len(addresses) != 2 {
|
||||||
|
t.Fatalf("failed to set additional To, addrHeader value count is: %d, want: 1", len(addresses))
|
||||||
|
}
|
||||||
|
if addresses[0].Address != "toni.tester@example.com" {
|
||||||
|
t.Errorf("failed to set To, addrHeader value is %s, want: %s", addresses[0].Address,
|
||||||
|
"toni.tester@example.com")
|
||||||
|
}
|
||||||
|
if addresses[0].String() != "<toni.tester@example.com>" {
|
||||||
|
t.Errorf("failed to set To, addrHeader value is %s, want: %s", addresses[0].String(),
|
||||||
|
"<toni.tester@example.com>")
|
||||||
|
}
|
||||||
|
if addresses[0].Name != "" {
|
||||||
|
t.Errorf("failed to set To, addrHeader name is %s, want: empty", addresses[0].Name)
|
||||||
|
}
|
||||||
|
if addresses[1].Address != "tina.tester@example.com" {
|
||||||
|
t.Errorf("failed to set additional To, addrHeader value is %s, want: %s", addresses[1].Address,
|
||||||
|
"tina.tester@example.com")
|
||||||
|
}
|
||||||
|
if addresses[1].String() != "<tina.tester@example.com>" {
|
||||||
|
t.Errorf("failed to set additional To, addrHeader value is %s, want: %s", addresses[1].String(),
|
||||||
|
"<tina.tester@example.com>")
|
||||||
|
}
|
||||||
|
if addresses[1].Name != "" {
|
||||||
|
t.Errorf("failed to set additional To, addrHeader name is %s, want: empty", addresses[1].Name)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
t.Run("AddTo with invalid address", func(t *testing.T) {
|
||||||
|
message := NewMsg()
|
||||||
|
if message == nil {
|
||||||
|
t.Fatal("message is nil")
|
||||||
|
}
|
||||||
|
if err := message.To("toni.tester@example.com"); err != nil {
|
||||||
|
t.Fatalf("failed to set To: %s", err)
|
||||||
|
}
|
||||||
|
if err := message.AddTo("invalid"); err == nil {
|
||||||
|
t.Errorf("AddTo should fail with invalid address")
|
||||||
|
}
|
||||||
|
addresses, ok := message.addrHeader[HeaderTo]
|
||||||
|
if !ok {
|
||||||
|
t.Fatalf("failed to set To, addrHeader field is not set")
|
||||||
|
}
|
||||||
|
if len(addresses) != 1 {
|
||||||
|
t.Fatalf("failed to set To, addrHeader value count is: %d, want: 1", len(addresses))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// TestNewMsgWithMiddleware tests WithMiddleware
|
// TestNewMsgWithMiddleware tests WithMiddleware
|
||||||
|
|
||||||
|
@ -1417,82 +1480,6 @@ func TestMsg_To(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestMsg_SetGenHeader tests Msg.SetGenHeader
|
|
||||||
|
|
||||||
func TestMsg_SetGenHeader(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
header Header
|
|
||||||
values []string
|
|
||||||
}{
|
|
||||||
{"set subject", HeaderSubject, []string{"This is Subject"}},
|
|
||||||
{"set content-language", HeaderContentLang, []string{"en", "de", "fr", "es"}},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, tt := range tests {
|
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
|
||||||
m := NewMsg()
|
|
||||||
m.SetGenHeader(tt.header, tt.values...)
|
|
||||||
if m.genHeader[tt.header] == nil {
|
|
||||||
t.Errorf("SetGenHeader() failed. Tried to set header %s, but it is empty", tt.header)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
for _, v := range tt.values {
|
|
||||||
found := false
|
|
||||||
for _, hv := range m.genHeader[tt.header] {
|
|
||||||
if hv == v {
|
|
||||||
found = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !found {
|
|
||||||
t.Errorf("SetGenHeader() failed. Value %s not found in header field", v)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestMsg_SetGenHeaderPreformatted tests Msg.SetGenHeaderPreformatted
|
|
||||||
|
|
||||||
func TestMsg_SetGenHeaderPreformatted(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
header Header
|
|
||||||
value string
|
|
||||||
}{
|
|
||||||
{"set subject", HeaderSubject, "This is Subject"},
|
|
||||||
{"set content-language", HeaderContentLang, fmt.Sprintf("%s, %s, %s, %s",
|
|
||||||
"en", "de", "fr", "es")},
|
|
||||||
{"set subject with newline", HeaderSubject, "This is Subject\r\n with 2nd line"},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, tt := range tests {
|
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
|
||||||
m := &Msg{}
|
|
||||||
m.SetGenHeaderPreformatted(tt.header, tt.value)
|
|
||||||
m = NewMsg()
|
|
||||||
m.SetGenHeaderPreformatted(tt.header, tt.value)
|
|
||||||
if m.preformHeader[tt.header] == "" {
|
|
||||||
t.Errorf("SetGenHeaderPreformatted() failed. Tried to set header %s, but it is empty", tt.header)
|
|
||||||
}
|
|
||||||
if m.preformHeader[tt.header] != tt.value {
|
|
||||||
t.Errorf("SetGenHeaderPreformatted() failed. Expected: %q, got: %q", tt.value,
|
|
||||||
m.preformHeader[tt.header])
|
|
||||||
}
|
|
||||||
buf := bytes.Buffer{}
|
|
||||||
_, err := m.WriteTo(&buf)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("failed to write message to memory: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if !strings.Contains(buf.String(), fmt.Sprintf("%s: %s%s", tt.header, tt.value, SingleNewLine)) {
|
|
||||||
t.Errorf("SetGenHeaderPreformatted() failed. Unable to find correctly formated header in " +
|
|
||||||
"mail message output")
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestMsg_AddTo tests the Msg.AddTo method
|
// TestMsg_AddTo tests the Msg.AddTo method
|
||||||
|
|
||||||
func TestMsg_AddTo(t *testing.T) {
|
func TestMsg_AddTo(t *testing.T) {
|
||||||
|
@ -1519,124 +1506,6 @@ func TestMsg_To(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestMsg_From tests the Msg.From and Msg.GetSender methods
|
|
||||||
|
|
||||||
func TestMsg_From(t *testing.T) {
|
|
||||||
a := "toni@example.com"
|
|
||||||
n := "Toni Tester"
|
|
||||||
na := fmt.Sprintf(`"%s" <%s>`, n, a)
|
|
||||||
m := NewMsg()
|
|
||||||
|
|
||||||
_, err := m.GetSender(false)
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("GetSender(false) without a set From address succeeded but was expected to fail")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := m.From(na); err != nil {
|
|
||||||
t.Errorf("failed to set FROM addresses: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
gs, err := m.GetSender(false)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("GetSender(false) failed: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if gs != a {
|
|
||||||
t.Errorf("From() failed. Expected: %s, got: %s", a, gs)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
gs, err = m.GetSender(true)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("GetSender(true) failed: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if gs != na {
|
|
||||||
t.Errorf("From() failed. Expected: %s, got: %s", na, gs)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestMsg_EnvelopeFrom tests the Msg.EnvelopeFrom and Msg.GetSender methods
|
|
||||||
|
|
||||||
func TestMsg_EnvelopeFrom(t *testing.T) {
|
|
||||||
e := "envelope@example.com"
|
|
||||||
a := "toni@example.com"
|
|
||||||
n := "Toni Tester"
|
|
||||||
na := fmt.Sprintf(`"%s" <%s>`, n, a)
|
|
||||||
ne := fmt.Sprintf(`<%s>`, e)
|
|
||||||
m := NewMsg()
|
|
||||||
|
|
||||||
_, err := m.GetSender(false)
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("GetSender(false) without a set envelope From address succeeded but was expected to fail")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := m.EnvelopeFrom(e); err != nil {
|
|
||||||
t.Errorf("failed to set envelope FROM addresses: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
gs, err := m.GetSender(false)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("GetSender(false) failed: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if gs != e {
|
|
||||||
t.Errorf("From() failed. Expected: %s, got: %s", e, gs)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := m.From(na); err != nil {
|
|
||||||
t.Errorf("failed to set FROM addresses: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
gs, err = m.GetSender(false)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("GetSender(false) failed: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if gs != e {
|
|
||||||
t.Errorf("From() failed. Expected: %s, got: %s", e, gs)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
gs, err = m.GetSender(true)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("GetSender(true) failed: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if gs != ne {
|
|
||||||
t.Errorf("From() failed. Expected: %s, got: %s", ne, gs)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
m.Reset()
|
|
||||||
|
|
||||||
if err := m.From(na); err != nil {
|
|
||||||
t.Errorf("failed to set FROM addresses: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
gs, err = m.GetSender(false)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("GetSender(true) failed: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if gs != a {
|
|
||||||
t.Errorf("From() failed. Expected: %s, got: %s", a, gs)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
gs, err = m.GetSender(true)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("GetSender(true) failed: %s", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if gs != na {
|
|
||||||
t.Errorf("From() failed. Expected: %s, got: %s", na, gs)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestMsg_AddToFormat tests the Msg.AddToFormat method
|
// TestMsg_AddToFormat tests the Msg.AddToFormat method
|
||||||
|
|
||||||
func TestMsg_AddToFormat(t *testing.T) {
|
func TestMsg_AddToFormat(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue