mirror of
https://github.com/wneessen/go-mail.git
synced 2024-11-22 13:50:49 +01:00
More tests for msg.go
This commit is contained in:
parent
3f101817ae
commit
f8a9512462
2 changed files with 170 additions and 1 deletions
7
msg.go
7
msg.go
|
@ -108,6 +108,13 @@ func WithMIMEVersion(mv MIMEVersion) MsgOption {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithBoundary overrides the default MIME boundary
|
||||||
|
func WithBoundary(b string) MsgOption {
|
||||||
|
return func(m *Msg) {
|
||||||
|
m.boundary = b
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// SetCharset sets the encoding charset of the Msg
|
// SetCharset sets the encoding charset of the Msg
|
||||||
func (m *Msg) SetCharset(c Charset) {
|
func (m *Msg) SetCharset(c Charset) {
|
||||||
m.charset = c
|
m.charset = c
|
||||||
|
|
164
msg_test.go
164
msg_test.go
|
@ -113,6 +113,55 @@ func TestNewMsgWithEncoding(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestNewMsgWithMIMEVersion tests WithMIMEVersion and Msg.SetMIMEVersion
|
||||||
|
func TestNewMsgWithMIMEVersion(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
value MIMEVersion
|
||||||
|
want MIMEVersion
|
||||||
|
}{
|
||||||
|
{"MIME version is 1.0", Mime10, "1.0"},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
m := NewMsg(WithMIMEVersion(tt.value))
|
||||||
|
if m.mimever != tt.want {
|
||||||
|
t.Errorf("WithMIMEVersion() failed. Expected: %s, got: %s", tt.want, m.mimever)
|
||||||
|
}
|
||||||
|
m.mimever = ""
|
||||||
|
m.SetMIMEVersion(tt.value)
|
||||||
|
if m.mimever != tt.want {
|
||||||
|
t.Errorf("SetMIMEVersion() failed. Expected: %s, got: %s", tt.want, m.mimever)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestNewMsgWithBoundary tests WithBoundary and Msg.SetBoundary
|
||||||
|
func TestNewMsgWithBoundary(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
value string
|
||||||
|
}{
|
||||||
|
{"boundary is test123", "test123"},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
m := NewMsg(WithBoundary(tt.value))
|
||||||
|
if m.boundary != tt.value {
|
||||||
|
t.Errorf("WithBoundary() failed. Expected: %s, got: %s", tt.value, m.boundary)
|
||||||
|
}
|
||||||
|
m.boundary = ""
|
||||||
|
m.SetBoundary(tt.value)
|
||||||
|
if m.boundary != tt.value {
|
||||||
|
t.Errorf("SetBoundary() failed. Expected: %s, got: %s", tt.value, m.boundary)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TestMsg_SetHEader tests Msg.SetHeader
|
// TestMsg_SetHEader tests Msg.SetHeader
|
||||||
func TestMsg_SetHeader(t *testing.T) {
|
func TestMsg_SetHeader(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
|
@ -408,7 +457,7 @@ func TestMsg_SetBulk(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestMsg_SetDate tests the Msg.SetDate method
|
// TestMsg_SetDate tests the Msg.SetDate and Msg.SetDateWithValue method
|
||||||
func TestMsg_SetDate(t *testing.T) {
|
func TestMsg_SetDate(t *testing.T) {
|
||||||
m := NewMsg()
|
m := NewMsg()
|
||||||
m.SetDate()
|
m.SetDate()
|
||||||
|
@ -425,6 +474,28 @@ func TestMsg_SetDate(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("failed to parse time in date header: %s", err)
|
t.Errorf("failed to parse time in date header: %s", err)
|
||||||
}
|
}
|
||||||
|
m.genHeader = nil
|
||||||
|
m.genHeader = make(map[Header][]string)
|
||||||
|
|
||||||
|
now := time.Now()
|
||||||
|
m.SetDateWithValue(now)
|
||||||
|
if m.genHeader[HeaderDate] == nil {
|
||||||
|
t.Errorf("SetDateWithValue() failed. Date header is nil")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
d, ok = m.genHeader[HeaderDate]
|
||||||
|
if !ok {
|
||||||
|
t.Errorf("failed to get date header")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
pt, err := time.Parse(time.RFC1123Z, d[0])
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("failed to parse time in date header: %s", err)
|
||||||
|
}
|
||||||
|
if pt.Unix() != now.Unix() {
|
||||||
|
t.Errorf("SetDateWithValue() failed. Expected time: %d, got: %d", now.Unix(),
|
||||||
|
pt.Unix())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestMsg_SetMessageIDWIthValue tests the Msg.SetMessageIDWithValue and Msg.SetMessageID methods
|
// TestMsg_SetMessageIDWIthValue tests the Msg.SetMessageIDWithValue and Msg.SetMessageID methods
|
||||||
|
@ -554,3 +625,94 @@ func TestMsg_GetRecipients(t *testing.T) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestMsg_ReplyTo tests the Msg.ReplyTo and Msg.ReplyToFormat methods
|
||||||
|
func TestMsg_ReplyTo(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
tname string
|
||||||
|
name string
|
||||||
|
addr string
|
||||||
|
want string
|
||||||
|
sf bool
|
||||||
|
}{
|
||||||
|
{"valid name and addr", "Toni Tester", "tester@example.com",
|
||||||
|
`"Toni Tester" <tester@example.com>`, false},
|
||||||
|
{"no name with valid addr", "", "tester@example.com",
|
||||||
|
`<tester@example.com>`, false},
|
||||||
|
{"valid name with invalid addr", "Toni Tester", "@example.com",
|
||||||
|
``, true},
|
||||||
|
}
|
||||||
|
m := NewMsg()
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.tname, func(t *testing.T) {
|
||||||
|
if err := m.ReplyTo(tt.want); err != nil && !tt.sf {
|
||||||
|
t.Errorf("ReplyTo() method failed: %s", err)
|
||||||
|
}
|
||||||
|
if !tt.sf {
|
||||||
|
rt, ok := m.genHeader[HeaderReplyTo]
|
||||||
|
if !ok {
|
||||||
|
t.Errorf("ReplyTo() failed: ReplyTo generic header not set")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if len(rt) <= 0 {
|
||||||
|
t.Errorf("ReplyTo() failed: length of generic ReplyTo header is zero or less than zero")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if rt[0] != tt.want {
|
||||||
|
t.Errorf("ReplyTo() failed: expected value: %s, got: %s", tt.want, rt[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.genHeader = nil
|
||||||
|
m.genHeader = make(map[Header][]string)
|
||||||
|
if err := m.ReplyToFormat(tt.name, tt.addr); err != nil && !tt.sf {
|
||||||
|
t.Errorf("ReplyToFormat() method failed: %s", err)
|
||||||
|
}
|
||||||
|
if !tt.sf {
|
||||||
|
rt, ok := m.genHeader[HeaderReplyTo]
|
||||||
|
if !ok {
|
||||||
|
t.Errorf("ReplyTo() failed: ReplyTo generic header not set")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if len(rt) <= 0 {
|
||||||
|
t.Errorf("ReplyTo() failed: length of generic ReplyTo header is zero or less than zero")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if rt[0] != tt.want {
|
||||||
|
t.Errorf("ReplyTo() failed: expected value: %s, got: %s", tt.want, rt[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.genHeader = nil
|
||||||
|
m.genHeader = make(map[Header][]string)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestMsg_Subject tests the Msg.Subject method
|
||||||
|
func TestMsg_Subject(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
sub string
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{"normal subject", "This is a test subject", "This is a test subject"},
|
||||||
|
{"subject with umlauts", "This is a test subject with umlauts: üäöß",
|
||||||
|
"=?UTF-8?q?This_is_a_test_subject_with_umlauts:_=C3=BC=C3=A4=C3=B6=C3=9F?="},
|
||||||
|
{"subject with emoji", "This is a test subject with emoji: 📧",
|
||||||
|
"=?UTF-8?q?This_is_a_test_subject_with_emoji:_=F0=9F=93=A7?="},
|
||||||
|
}
|
||||||
|
m := NewMsg()
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
m.Subject(tt.sub)
|
||||||
|
s, ok := m.genHeader[HeaderSubject]
|
||||||
|
if !ok || len(s) <= 0 {
|
||||||
|
t.Errorf("Subject() method failed. Generic header for Subject is empty")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if s[0] != tt.want {
|
||||||
|
t.Errorf("Subject() method failed. Expected: %s, got: %s", tt.want, s[0])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue